2013-05-06 30 views
14

Azureの試用版を使用しています。私たちは、SQL 2012の社内からのクロスサーバクエリを実行しようとしています。Sql Azureで動作するリンクサーバーを取得できません

Azureとリンクされた地域2012があるようです。管理スタジオで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

を言って、エラーメッセージを取得するには、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 Serverでは、クロスサーバへの問い合わせにより、当社の社内2008に接続することができ、 Linked Serverを介してその構造を表示します。

私はこの記事から知っていますAzure supports Linked Servers

私は何が間違っているのか分かりません。私たちの管理者は、Web-SQLアカウントとビジネスSQLアカウントを持っている可能性があると考えています。このAzure Web vs Business SQLは、古いバージョンのスタックリンクでは、SQLバージョンは問題ではありませんが、Azureがリンクサーバーを提供していたことを意味しています。

A)場合、私は理解しようとしているので、私たちは、SQLのリンクを提供するために、何かの権利を設定していないのですか?

b)トライアルでは制限がありますか?

c)はWeb SQLバージョンによって制限されていますか?

d)他に何か?

+1

ですか? AzureがオンプレミスSQL Serverのターゲットである場合にのみ動作すると私は信じています。 – Jaxidian

+1

@Jaxidian Correct、Azureが対象で、Azureが社内サーバの 'Linked Servers'の下に登録されている間に、私たちは社内の2012年のAzureからクロスリードできません。 –

+1

@ Jaxidian、クロスサーバクエリ。私の編集を参照してください –

答えて

7

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' 

これはわかりました。

+4

に関する苦情について私は疑問に思います。エラーが発生しました:ストアドプロシージャ 'sp_addlinkedserver'を見つけることができませんでした。また、AzureのSQLデータベースを使用しています。 –

7

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 
+0

私はちょうどそのサーバーを追加することができます= 'PROD'はちょうど私の場合のデータソース値と同じでした。どうもありがとう。 – ozzy432836

+0

優秀!ちょうど私が必要なもの –

1

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

+1

これは質問への答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューの投稿](レビュー/低品質の投稿/ 10967835) – dotnetom

+0

答えはエラーです.3部/ 4部の名前はAzureでは機能せず、クエリは変更する必要があります –

+0

は@dotnetomに同意します。本当にコメントでなければなりません。驚いたのはこの長い間生き残った...まさにその理由と司会者のために旗を掲げたように見え、無限の「知恵」の中で、これは答えだった。 –

0

同じ問題がありました。アスタリスクを使用しないと解決します。 SELECT部分​​。

SELECT Row1, Row2 FROM table 

動作します

SELECT * FROM table 

文句を言わないリンクサーバーAzureのソースまたはターゲットが

+0

詳細を教えてください。アスタリスクがリンクテーブルと関係していることを理解していません。あなたの例は私を混乱させ、外部データベースからテーブルを参照しているようには見えません。リンクされたデータベースの典型的な構文は 'SELECT * FROM [DBサーバー名]。[DB /カタログ]。[dbo]。[テーブル名]'です。テーブル名だけを使用すると、リンクが削除されます。 –

関連する問題