web-dev-qa-db-ja.com

SQL Server 2016エラー 'EXTERNAL'付近の構文が正しくありません

Azureに2つのSQL Server 2016 VMがあります。外部データソースを使用して、これら2つのSQLサーバーインスタンスを接続しようとしています。ローカルPCから2つのインスタンスをリモートで安全に接続できます。外部のテーブル/データソースを使用してクエリを実行しているときに、これを取得しています: enter image description here

親切に注意してください

i)RDBMS/SHARD_MAP_Managerの両方を使用しました

ii)資格は有効な資格です

iii)リンクサーバーを使用できますが、使用したくありません。これらのデータベースをSQL Azure DBに移動する予定なので、外部テーブルとデータソースは必須ではありません。 LinkedServers以外の代替案を提案できます。

したがって、SQLサーバー(仮想/物理サーバー)とSQL Azure(サービスとしてのDB)の両方で機能するクエリまたはクエリの一部が必要です

更新

同じクエリがSql Azure dbで問題なく実行されました

1
Amit Ranjan

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>  
    )  
[;]   
3
SqlWorldWide