「DB2OurDatabase」という名前の DB2 データベースへのリンク サーバー接続を作成したローカル SQL Server インスタンスがあります。リンク サーバー接続を作成する際に、さまざまなクエリ ツールやアプリケーションで "[SchemaX].[TableX]." をクエリするために使用する UID と PWD を指定しました。
リンク サーバーの作成に成功したようです: 「DB2OurDatabase」という名前のリンク サーバー ノード オブジェクトが SSMS のリンク サーバー ノードの下に作成され、それを展開すると、データベース内のテーブルが表示されます。
[SchemaX].[TableX] テーブルを右クリックして選択すると、
"Script Table as => Select To ==> New Window" というテキストで新しいクエリ ウィンドウが開かれました。
--[DB2OurDatabase].[DataCenterCityName2_DB2OurDatabase].[SchemaX].[TableX]
contains no columns that can be selected or the current user does not have permissions on that object.
GO
データベース内のテーブル名を表示できるリンク サーバーを作成できた方法がわかりませんが、同じ資格情報を使用しているにもかかわらず、テーブルをクエリする権限がないように見えることに遭遇したようです。たとえば、Squirell SQL クエリ ツールでテーブルをクエリするために使用したことがあります。
SSMSで、これを実行しようとしました
SELECT *
FROM [DB2OurDatabase].[DataCenterCityName2_DB2OurDatabase].[SchemaX].[TableX]
エラー:
メッセージ 7314、レベル 16、状態 1、行 1
リンク サーバー "DB2OurDatabase]" の OLE DB プロバイダー "IBMDADB2" には、テーブル ""DataCenterCityName2_DB2OurDatabase"."SchemaX"."TableX"" が含まれていません。テーブルが存在しないか、現在のユーザーがそのテーブルに対する権限を持っていません。
完全修飾テーブル名に [DataCenterCityName2_DB2OurDatabase] が含まれていることに少し驚きました。これは、Linked Server 接続をセットアップしたときにこれを指定しなかったためです。ただし、DataCenter 都市の名前は正しかったので、Linkedサーバー接続に成功しました。
それにもかかわらず、完全修飾テーブル名のこのレベルの削除も実行しようとしました。
SELECT *
FROM [DB2OurDatabase].[SchemaX].[TableX]
このエラーが発生しました。
メッセージ 208、レベル 16、状態 1、行 1
無効なオブジェクト名 'DB2OurDatabase.[SchemaX].[TableX]'。
DB2 データベース内のテーブルを照会できるようにする DB2 リンク サーバーを作成するには、何をする必要がありますか? リンク サーバーのプロパティは次のとおりです。