クエリの実行
このセクションでは、SQL Server に接続可能なあらゆるツールからリンクサーバーへクエリを実行する方法を説明します。<
p>
リンクサーバーからクエリを実行する場合、以下に示すように4部構成の名前フォーマットを使用する必要があります。
[<Linked Server Name>].[<DSN Name>].[<Schema Name (normally but not always the service name)>].[<Table Name>]説明
- Linked Server Name は、作成したリンクサーバーの名前です。
- DSN Name は、データソースの名前です。
- Schema Name は、システムスキーマまたはユーザー定義のスキーマの名前です。
- Table Name は、データのコピー元のテーブルの名前です。
SELECT ステートメント
新しいレコードを作成するには:SELECT * FROM [Linked Server Name].[CData JSON Sys].[JSON].[NorthwindOData] WHERE personal.name.last = 'ana.trujilo@northwind.org'データソースが大文字と小文字を区別する識別子をサポートしている場合、大文字と小文字が異なるだけの同名のテーブルを参照することはできないことに注意してください(例:同じスキーマのAccount とACCOUNT)。SQL Server では識別子を大文字と小文字の区別なく扱うため、1つのスキーマに複数存在する同名のテーブルはSQL Server のプロトコルとは根本的に互換性がありません。
INSERT、UPDATE、およびDELETE ステートメント
一行のデータ(つまりレコードのバッチではない)を挿入、更新、または削除するには、4部構成の名前を使用する必要があります。次に例を示します。INSERT INTO [Linked Server Name].[CData JSON Sys].[JSON].[NorthwindOData] (personal.name.last) VALUES ('ana.trujilo@northwind.org');
バルク操作
バルク操作を実行するには、次のような構文を使用できます:VALUES リストの代わりに、SELECT クエリを使用してバルクINSERT を実行できます。
INSERT INTO [Linked Server Name].[CData JSON Sys].[JSON].[NorthwindOData] ([personal.name.last]) SELECT [personal.name.last] from [CData].[dbo].[Local_NorthwindOData]ローカルテーブルでJOIN を使用して、バルクUPDATE を実行できます。
UPDATE [Linked Server Name].[CData JSON Sys].[JSON].[NorthwindOData] SET [NorthwindOData].[personal.name.last] = CData.dbo.[Local_NorthwindOData].[Local_personal.name.last] FROM CData.dbo.[Local_NorthwindOData] INNER JOIN [Linked Server Name].[CData JSON Sys].[JSON].[NorthwindOData] ON CData.dbo.[Local_NorthwindOData].[Id] = [NorthwindOData].[Id]sub-SELECT クエリでIN フィルタを使用して、バルクDELETE を実行できます。
DELETE FROM [Linked Server Name].[CData JSON Sys].[JSON].[NorthwindOData] WHERE [Id] IN (SELECT [Id] FROM CData.dbo.Local_NorthwindOData)
ストアドプロシージャの実行
ストアドプロシージャを実行するには、最初にリンクサーバーの設定でRPC およびRPC Out を有効にする必要があります。続いて、次の一連のコマンドを使用してストアドプロシージャを実行できます。DECLARE @RunStoredProcSQL VARCHAR(1000); SET @RunStoredProcSQL = 'EXEC GetOAuthAccessToken CallbackURL=''http://localhost'''; EXEC (@RunStoredProcSQL) AT [Linked Server Name];