Azureに2つのSQL Server 2016 VMがあります。外部データソースを使用して、これら2つのSQLサーバーインスタンスを接続しようとしています。ローカルPCから2つのインスタンスをリモートで安全に接続できます。外部のテーブル/データソースを使用してクエリを実行しているときに、これを取得しています:
親切に注意してください
i)RDBMS/SHARD_MAP_Managerの両方を使用しました
ii)資格は有効な資格です
iii)リンクサーバーを使用できますが、使用したくありません。これらのデータベースをSQL Azure DBに移動する予定なので、外部テーブルとデータソースは必須ではありません。 LinkedServers以外の代替案を提案できます。
したがって、SQLサーバー(仮想/物理サーバー)とSQL Azure(サービスとしてのDB)の両方で機能するクエリまたはクエリの一部が必要です
同じクエリがSql Azure dbで問題なく実行されました
External data source
タイプSHARD_MAP_MANAGER
およびRDBMS
は、Azure SQL Database v12以降でのみサポートされています。 SQL Server 2016ではサポートされていません。
参照:
https://docs.Microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql
-- Elastic Database query only: a shard map manager as data source
-- (only on Azure SQL Database v12 or later)
CREATE EXTERNAL DATA SOURCE data_source_name
WITH (
TYPE = SHARD_MAP_MANAGER,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = '\<ElasticDatabase_ShardMapManagerDb'>,
CREDENTIAL = <ElasticDBQueryCred>,
SHARD_MAP_NAME = '<ShardMapName>'
)
[;]
-- Elastic Database query only: a remote database on Azure SQL Database as data source
-- (only on Azure SQL Database v12 or later)
CREATE EXTERNAL DATA SOURCE data_source_name
WITH (
TYPE = RDBMS,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = '<Remote_Database_Name>',
CREDENTIAL = <SQL_Credential>
)
[;]