クエリの実行
このセクションでは、SQL Server に接続可能なあらゆるツールからリンクサーバーへクエリを実行する方法を説明します。
リンクサーバーからクエリを実行する場合、以下のフォーマットのように4部構成の名前を使用します。
[<Linked Server Name>].[<DSN Name>].[<Schema Name>].[<Table Name>]
- Linked Server Name は、作成したリンクサーバーの名前です。これは通常はサービス名です。
- DSN Name は、データソースの名前です。
- Schema Name は、システムスキーマまたはユーザー定義のスキーマの名前です。
- Table Name は、データのコピー元のテーブルの名前です。
SELECT ステートメント
新しいレコードを作成するには:SELECT * FROM [Linked Server Name].[CData CockroachDB Sys].[CockroachDB].["defaultdb"."public".Orders] WHERE ShipCountry = 'USA'Note:データソースが大文字と小文字を区別する識別子をサポートしている場合、大文字と小文字が異なるだけの同名のテーブルを参照することはできません(例:同じスキーマのAccount とACCOUNT)。SQL Server では識別子を大文字と小文字の区別なく扱うため、1つのスキーマに複数存在する同名のテーブルはSQL Server のプロトコルとは根本的に互換性がありません。
INSERT、UPDATE、およびDELETE ステートメント
書き込み可能なデータベースに対して一行のデータを挿入、更新、または削除するには、4部構成の名前を使用します。次に例を示します。
INSERT INTO [Linked Server Name].[CData CockroachDB Sys].[CockroachDB].["defaultdb"."public".Orders] (ShipCountry) VALUES ('USA');
バルク操作
書き込みを許可しているデータソースに対してバルク操作を実行するには、次のような構文を使用します:VALUES リストの代わりに、SELECT クエリを使用してバルクINSERT を実行するには:
INSERT INTO [Linked Server Name].[CData CockroachDB Sys].[CockroachDB].["defaultdb"."public".Orders] ([ShipCountry]) SELECT [ShipCountry] from [CData].[dbo].[Local_"defaultdb"."public".Orders]ローカルテーブルでJOIN を使用してバルクUPDATE を実行するには:
UPDATE [Linked Server Name].[CData CockroachDB Sys].[CockroachDB].["defaultdb"."public".Orders] SET ["defaultdb"."public".Orders].[ShipCountry] = CData.dbo.[Local_"defaultdb"."public".Orders].[Local_ShipCountry] FROM CData.dbo.[Local_"defaultdb"."public".Orders] INNER JOIN [Linked Server Name].[CData CockroachDB Sys].[CockroachDB].["defaultdb"."public".Orders] ON CData.dbo.[Local_"defaultdb"."public".Orders].[Id] = ["defaultdb"."public".Orders].[Id]sub-SELECT クエリでIN フィルタを使用してバルクDELETE を実行するには:
DELETE FROM [Linked Server Name].[CData CockroachDB Sys].[CockroachDB].["defaultdb"."public".Orders] WHERE [Id] IN (SELECT [Id] FROM CData.dbo.Local_"defaultdb"."public".Orders)
ストアドプロシージャの実行
ストアドプロシージャを実行する前に、最初にリンクサーバーの設定でRPC およびRPC Out を有効にする必要があります。
RPC およびRPC Out が有効になったら、以下のコマンドを使用してストアドプロシージャを実行します。
DECLARE @RunStoredProcSQL VARCHAR(1000); SET @RunStoredProcSQL = 'EXEC SelectEntries ObjectName=''Account'''; EXEC (@RunStoredProcSQL) AT [Linked Server Name];