19

Azure の試用版を使用しています。社内で SQL 2012 からクロス サーバー クエリを実行しようとしています。

ローカル 2012 が Azure にリンクされているようです。Server Object->Linked Servers管理スタジオに入ると、Azureデータベースが表示されます。

しかし、カタログとテーブルを開こうとすると、エラー メッセージが表示されます。

Reference to database and/or server name in 'Perseus.sys.sp_tables_rowset2' is not supported in this version of SQL Server

** Perseusは のカタログの名前ですAzure Sql

ローカル接続からのクエリの実行:

SELECT *  FROM [azureDBServer].[Perseus].[dbo].[accounts]

結果は次のとおりです。

    OLE DB provider "SQLNCLI11" for linked server "azureDBServer" returned message 
"Unspecified error". Msg 40515, Level 16, State 2, Line 1 Reference to database and/or
 server name in 'Perseus.sys.sp_tables_info_90_rowset' is not supported in this version of
 SQL Server.

これと同じ社内の SQL 2012 サーバーは、クロス サーバー クエリによって、またリンク サーバーを介してその構造を表示することによって、社内の 2008 に接続できます。

この記事から、 Azure が Linked Servers をサポートしていることがわかります。

だから私は何が悪いのか迷っています。管理者は、ビジネス SQL アカウントではなく Web-Sql アカウントを持っている可能性があると考えています。このAzure Web とビジネス SQLの古いスタック リンクは、SQL のバージョンが問題ではなく、Azure がリンク サーバーを提供する前の日付であることを意味します。

だから、私は理解しようとしています

a) SQL Linking を提供するための適切な設定をしていませんか?

b)私たちは裁判によって制限されていますか?

c) Web SQL のバージョンによる制限はありますか?

d)他に何かありますか?

4

5 に答える 5

32

SQL Azure を追加するには、以下の 3 つのストアド プロシージャを実行する必要があります。以下のストアド プロシージャを使用して、SQL azure にクエリを実行できました。

EXEC sp_addlinkedserver
@server='PROD',
@srvproduct='',     
@provider='sqlncli',
@datasrc='azureserver.database.windows.net',
@location='',
@provstr='',
@catalog='database name'


EXEC sp_addlinkedsrvlogin 
@rmtsrvname = 'PROD',
@useself = 'false',
@rmtuser = 'Azure login',
@rmtpassword = 'password'

EXEC sp_serveroption 'PROD', 'rpc out', true
于 2015-10-31T04:22:50.343 に答える
20

SQL Management からリンク サーバーを追加するときに、既定のデータベースを設定するオプションがありません。したがって、以下のようなものを使用してください

EXEC sp_addlinkedserver
@server='name for referring locally', -- here you can specify the name of the linked server
@srvproduct='',     
@provider='sqlncli', -- using SQL Server native client
@datasrc='AzureMachineName.database.windows.net',   -- add here your server name
@location='',
@provstr='',
@catalog='yourdatabasename' 

これはうまくいくと思いました。

于 2014-02-20T23:43:28.257 に答える
1

実際に perseus データベースへの接続をセットアップしましたか? エラー メッセージを見ると、名前が 3 部または 4 部からなるクエリが Azure に送信されていますが、Azure ではそのままでは機能しません。クエリを確認し、同じデータベースに接続している場合は、2 つの部分からなる名前と 3 つの部分からなる名前のみを使用するように設定してください

于 2016-01-20T19:38:35.463 に答える