オンプレミス データ ゲートウェイを構成し、オンプレミスのサーバーにインストールした 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/

ここさえクリアしてしまえば、便利に利用できそうです。