CData ServiceNowドライバー:メタデータへのアクセス許可無しでデータを操作する方法

by 浦邊信太郎 | October 9, 2025 | Last Updated: October 9, 2025

はじめに

CData ServiceNow ドライバーを使用してテーブルやビューにアクセスする際、通常はメタデータの取得が必要です。そのため、sys_db_objectsys_dictionaryオブジェクトへのアクセス許可を事前に設定する必要があります。しかし、一般ユーザーなどアクセス許可の付与ができない場合でも、メタデータの取得をスキップしてオブジェクトのデータに直接アクセスする方法があります。本記事では、ストアドプロシージャを使用したこの代替手法について解説します。

メタデータ取得をスキップしたデータ操作

ServiceNowドライバーでは、専用のストアドプロシージャを使用することで、メタデータへのアクセス権限がなくてもデータの操作が可能です。

レコードの取得

特定のレコードを取得するには、GetRecordストアドプロシージャを使用します。

exec GetRecord @TableName='incident', @SysId='f2f701a493a47a10db26758efaba1024';

パラメータ:

  • @TableName: 対象テーブル名

  • @SysId: 取得するレコードのシステムID

レコードの作成

新しいレコードを作成するには、CreateRecordストアドプロシージャを使用します。

exec CreateRecord @TableName = 'incident', @Payload = '{"comments":"Hello."}';

パラメータ:

  • @TableName: 対象テーブル名

  • @Payload: JSON形式のレコードデータ

レコードの更新

既存のレコードを更新するには、UpdateRecordストアドプロシージャを使用します。

exec UpdateRecord @TableName = 'incident', @Payload = '{"comments":"Hello."}', @SysId='f2f701a493a47a10db26758efaba1024';

パラメータ:

  • @TableName: 対象テーブル名

  • @Payload: JSON形式の更新データ

  • @SysId: 更新対象レコードのシステムID

レコードの削除

レコードを削除するには、DeleteRecordストアドプロシージャを使用します。

exec DeleteRecord @TableName='incident', @SysId='fcaab27647a342502c902f74236d4382';

パラメータ:

  • @TableName: 対象テーブル名

  • @SysId: 削除対象レコードのシステムID

スキーマ情報の取得

レコードの作成や更新では、JSON形式でデータを指定するため、テーブルのメタデータ(カラム名やデータ型など)を理解している必要があります。この問題を解決するため、GetTableSchemaストアドプロシージャを使用してスキーマ情報を取得できます。

exec GetTableSchema @TableName = 'incident';

注意: このストアドプロシージャを実行するには管理者権限が必要です。

まとめ

ServiceNowドライバーのストアドプロシージャを活用することで、メタデータへのアクセス許可がない環境でもデータ操作が可能になります。これにより、一般ユーザーでもServiceNowのデータに対してCRUD操作を実行できるようになります。ただし、レコードの作成や更新時にはテーブルの構造を把握している必要があるため、事前にGetTableSchemaなどで必要な情報を確認しておくことをお勧めします。