2013-05-06 8 views
14

Wir verwenden eine Testversion von Azure. Wir versuchen, Cross-Server-Abfragen von unserem SQL 2012 intern durchzuführen.Verknüpfte Server können nicht in Sql Azure verwendet werden

Wir scheinen unsere lokale 2012 mit Azure verbunden zu haben. Wenn ich Server Object ->Linked Servers in Management Studio gehe, sehe ich unsere Azure Datenbank.

Aber wenn ich versuche, den Katalog und Tabellen zu öffnen, erhalte ich eine Fehlermeldung,

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

** Perseus der Name des Katalogs in Azure Sql ist.

Ausführen einer Abfrage von lokalen Verbindung:

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

Ergebnis ist:

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. 

Das gleiche im Haus SQL 2012 Server ist in der Lage unser haus 2008 von Cross-Server-Abfragen zu verbinden und indem Sie die Struktur über die Verbindungsserver anzeigen.

Ich weiß aus diesem Artikel Azure supports Linked Servers.

So bin ich verloren was falsch ist. Unser Administrator denkt, dass wir einen Web-SQL-Account oder einen Business-SQL-Account haben. Dieser veraltete Stack-Link Azure Web vs Business SQL impliziert, dass die SQL-Version NICHT das Problem ist, sondern das Datum, an dem Azure die Verbindungsserver anbot.

Also, ich versuche, wenn

a) zu verstehen wir nicht Recht hatte einrichten etwas SQL Linking zu bieten?

b) wir sind begrenzt durch Test?

c) werden wir von Web SQL-Version beschränkt?

d) noch etwas?

+1

Ist Azure die Quelle oder Ziel für den Verbindungsserver? Ich glaube, es funktioniert nur, wenn Azure das Ziel von einem lokalen SQL Server ist. – Jaxidian

+1

@Jaxidian Korrekt, Azure ist Ziel und während Azure unter den 'Linked Servern' unseres hausinternen Servers registriert ist, können wir nicht von Azure über unsere hausinternen 2012 –

+1

@Jaxidian lesen, ja, wir haben auch ein einfaches versucht Query-Server-Abfrage. siehe meine Bearbeitung –

Antwort

7

Beim Hinzufügen eines Verbindungsservers aus der SQL-Verwaltung haben Sie keine Option zum Festlegen der Standarddatenbank. Verwenden Sie so etwas wie unten

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' 

Ich dachte, das funktioniert.

+4

Ich bekomme den Fehler: Konnte die gespeicherte Prozedur 'sp_addlinkedserver' nicht finden. Auch Azure sql db verwenden. –

7

Sie müssen die unten genannten drei gespeicherten Prozeduren ausführen, um SQL Azure hinzuzufügen. Unter Verwendung dieser gespeicherten Prozedur konnte ich SQL Azure abfragen.

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

Könnte ich nur diesen Server hinzufügen = 'PROD' war in meinem Fall genauso wie der Wert der Datenquelle. Danke vielmals. – ozzy432836

+0

Ausgezeichnet! genau das, was ich brauchte –

1

Haben Sie tatsächlich Verbindung zu Perseus-Datenbank eingerichtet? Wenn Sie sich die Fehlermeldung ansehen, senden Sie eine Abfrage mit 3 Teilen oder 4 Teilen an Azure, die nicht wie in Azure funktioniert. Bitte überprüfen Sie Ihre Anfrage und setzen Sie es 2 Teilen Namen und nur drei Teilenamen, wenn es Verbindung mit der gleichen Datenbank

+1

Dies bietet keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. - [Aus Bewertung] (/ review/low-quality-posts/10967835) – dotnetom

+0

Die Antwort ist auf den Fehler, 3 Teil/4 Teilnamen funktioniert nicht in Azure und die Abfrage muss –

+0

@dotnetom diese Antwort zu ändern sollte wirklich ein Kommentar sein. Überrascht, dass es so lange überlebt hat ... Sieht so aus, als hätte ich genau aus diesem Grund eine Flagge gezogen, und Moderatoren, in ihrer unendlichen "Weisheit", fühlten, dass dies eine Antwort war. –

0

Ich hatte das gleiche Problem, es wird auch gelöst, wenn Sie nicht das Sternchen in Ihrem verwenden SELECT Teil.

SELECT Row1, Row2 FROM table 

arbeiten

SELECT * FROM table 

wont

+0

Bitte ausarbeiten? Ich verstehe nicht, was Asterisk mit verknüpften Tabellen zu tun hat. Und Ihr Beispiel verwirrt mich, Sie scheinen nicht auf Tabellen aus externen Datenbanken zu verweisen. Die typische Syntax für verknüpfte Datenbanken lautet 'SELECT * FROM [DB-Servername]. [DB/Katalog]. [Dbo]. [Tabellenname]'. Ihre Verwendung von nur Tabellenname lässt die Verknüpfung aus. –

Verwandte Themen