リンクサーバーに drop コマンドを実行するとエラー「117」が発生する
オブジェクト の名前 'xxx.yyy.dbo.zzz' は、プレフィックスの最大数を超えています。最大数は 2 です。
2016/6/24
文書番号:20522
SQL Server でリンクサーバーに対して drop コマンドを実行したところ以下のエラーが発生しました。
以下、画面のスナップショットは[CENTRAL]というリンクサーバーにある[AAA]というデータベースの[M_ITEM]というテーブルを drop する想定のものす。
===========================================================
メッセージ 117、レベル 15、状態 1、行 1
オブジェクト の名前 '<リンクサーバー名>.<データベース名>.dbo.<テーブル名>' は、プレフィックスの最大数を超えています。最大数は 2 です。
===========================================================
drop コマンドでテーブルを指定する際のプレフィックスは2つまでしか指定できないというエラーのようです。
上記画面の例では 「<データベース名>.dbo.」 で2つになるのでリンクサーバー名のプレフィックスを指定することができないことになります。
SELECT 文ではエラーなく実行できます。
以下、画面のスナップショットは[CENTRAL]というリンクサーバーにある[AAA]というデータベースの[M_ITEM]というテーブルを drop する想定のものす。
===========================================================
メッセージ 117、レベル 15、状態 1、行 1
オブジェクト の名前 '<リンクサーバー名>.<データベース名>.dbo.<テーブル名>' は、プレフィックスの最大数を超えています。最大数は 2 です。
===========================================================
drop コマンドでテーブルを指定する際のプレフィックスは2つまでしか指定できないというエラーのようです。
上記画面の例では 「<データベース名>.dbo.」 で2つになるのでリンクサーバー名のプレフィックスを指定することができないことになります。
SELECT 文ではエラーなく実行できます。
【対応方法】
- 次のように EXEC コマンドで実行することができます。
EXEC ('drop table [AAA].dbo.[M_ITEM]') AT [CENTRAL]
クリックで拡大
ただし、上記の方法はリンクサーバーに対してRPC出力を有効にしていないとエラーになります。
対応方法はこちらを参照してください。
リンクサーバーに EXEC でSQL コマンドを実行するとエラー「7411」が発生する
サーバー 'xxx' は RPC に対して構成されていません。(サイト内リンク)