[SQL Server] OLE DB プロバイダー "MSDASQL" では、オブジェクトに列がないか、現在のユーザーがそのオブジェクトに対する権限を持っていないことが示されています。

inno
2017-12-08 15:19 1260 0

SQL SERVER→MySQLのリンクサーバーで繋いでデータを取得するSQLを実行した時に以下のようなエラーの対応方法について説明します。

例えば、このようなSQLを実行した時にエラーが発生します。

SELECT *
FROM OPENQUERY(LinkedServereMySQL,'
SELECT UserID
FROM TempData
WHERE Sn = 1)

OPENQUERYでデータを取得していますが、今まで問題なかったSQLがODBCドライブを変更したら以下のエラーが発生しました。

メッセージ 7357、レベル 16、状態 2、行 1
オブジェクト "
SELECT UserID
FROM TempData
WHERE Sn = 1" を処理できません。リンク サーバー "LinkedServereMySQL" の OLE DB プロバイダー "MSDASQL" では、オブジェクトに列がないか、現在のユーザーがそのオブジェクトに対する権限を持っていないことが示されています。

対応方法は以下の通り修正すると解決できます。

SELECT * FROM OPENQUERY(LinkedServereMySQL,'SELECT UserID
FROM TempData
WHERE Sn = 1

もしくは

SELECT * FROM OPENQUERY(LinkedServereMySQL,'SELECT UserID FROM TempData WHERE Sn = 1)

「SELECT * FROM OPENQUERY(LinkedServereMySQL,'」の後に改行するとエラーになります。

コメント