オンプレミス データ ゲートウェイを構成し、オンプレミスのサーバーにインストールした SQL Server 2019 のデータベースのテーブルに対して、Power Automate のトリガーを仕掛けようとしました。
しかしながら、どうにもこうにもトリガーが動いてくれません。「行を挿入する (V2)」といったアクションは問題なく動くのですが、「項目が作成されたとき (V2)」や「項目が変更されたとき (V2)」といったトリガーが動かないのです。
調べながら試行錯誤したところ、どうやら SQL Server コネクタのトリガーを利用するときには、テーブルに特別な列を作成しておく必要がありました。忘れないように書き留めておきます。
まずはテーブルを作成
何はともあれ、まずはテーブルを作成してみます。今回は、Azure VM で Windows Server 2019 の仮想マシンを作成し、その上に SQL Server 2019 を構成しました。
CREATE TABLE new_employees ( fname varchar (20), lname varchar(30), age int );
たとえばこんな感じで、従業員の氏名と年齢を入れるようなテーブルを作成してみました。
このテーブルを Power Automate の SQL Server のトリガーから設定しようとすると、設定の選択肢にも出てきません…。
これは困ったというわけです。
「項目が作成されたとき (V2)」トリガーには IDENTITY 列が必要
まずは、テーブルに新しいデータを登録したときに動作する「項目が作成されたとき (V2)」トリガーを設定してみます。
このトリガーを利用するためには、あらかじめテーブルに IDENTITY 列を追加しておく必要があります。
ALTER TABLE new_employees ADD id_num int IDENTITY(1,1) NOT NULL
こんな形で id_num というカラム名で、IDENTITY 列を追加しました。
すると、Power Automate のトリガーからもテーブルが参照できるようになりました。
「項目が変更されたとき (V2)」トリガーには ROWVERSION 列が必要
つぎは、テーブルのデータを変更したときに動作する「項目が変更されたとき (V2)」トリガーを設定してみます。
このトリガーを利用するためには、あらかじめテーブルに ROWVERSION 列を追加しておく必要があります。
ALTER TABLE new_employees ADD row_version ROWVERSION NOT NULL
こんな形で row_version というカラム名で、ROWVERSION 列を追加しました。
こちらも、Power Automate のトリガーからテーブルが参照できるようになりました。
運用上の注意点
SQL Server に新しいテーブルを作成し Power Automate から利用する場合には、あらかじめこうした列を追加しておけば良いのですが、問題はすでに利用しているテーブルで Power Automate のトリガーを利用した場合ですね。
特に、テーブルにすでに多くのデータが格納されている場合、列の追加処理にも時間がかかってしまい、ダウンタイムが生じてしまう可能性があります。
テーブルへの操作はきちんと計画して行う必要がありますね。
さいごに
というわけで、Power Automate の SQL Server コネクタに用意されている「項目が作成されたとき (V2)」や「項目が変更されたとき (V2)」トリガーを利用するための設定でした。
その他の制限などもコネクタのリファレンスに記載がありました。
SQL Server – Connectors | Microsoft Docs
https://docs.microsoft.com/ja-jp/connectors/sql/
ここさえクリアしてしまえば、便利に利用できそうです。