2013-05-06 18 views
14

Używamy wersji próbnej Azure. Staramy się wykonywać kwerendy między serwerami z naszego SQL 2012 w domu.Nie można uzyskać serwerów połączonych do pracy w Sql Azure

Wygląda na to, że nasz lokalny 2012 jest połączony z Azure. Kiedy wchodzę do Server Object ->Linked Servers w studio zarządzania, widzę naszą bazę danych Azure.

Ale gdy próbuję otworzyć katalog i tabele, otrzymuję komunikat o błędzie

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

** Perseusz to nazwa sklepu w Azure Sql.

Uruchamianie zapytania z lokalnego połączenia:

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

wynikiem jest:

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. 

Ten sam w domu SQL 2012 Server jest w stanie połączyć się z naszym In-house 2008 przez krzyżowych pytań serwerowych i przeglądając jego strukturę poprzez połączone serwery.

Wiem z tego artykułu Azure supports Linked Servers.

Więc jestem zagubiony, co jest nie tak. Nasz administrator uważa, że ​​możemy mieć konto Web-Sql kontra biznesowe konto SQL. To nieaktualne łącze stosu Azure Web vs Business SQL sugeruje, że wersja SQL NIE jest problemem, ale ma wcześniejszy termin, gdy Azure oferuje serwery połączone.

Więc staram się zrozumieć, jeśli

a) nie założyć czegoś prawo do świadczenia SQL linkami?

b) jesteśmy ograniczeni próbą?

c) czy jesteśmy ograniczeni przez wersję Web SQL?

d) czegokolwiek innego?

+1

Czy Azure źródło lub cel dla serwera połączonego? Uważam, że działa tylko wtedy, gdy Azure jest celem z lokalnego serwera SQL. – Jaxidian

+1

@Jaxidian Prawidłowo, Azure jest celem, a podczas gdy Azure jest zarejestrowany na naszych "serwerach połączonych" naszego serwera, nie jesteśmy w stanie odczytywać z Azure za pośrednictwem naszego własnego 20122 –

+1

@Jaxidian, tak, próbowaliśmy również prostego zapytanie o połączenie między serwerami. zobacz moją edycję –

Odpowiedz

7

Podczas dodawania serwera połączonego z poziomu SQL Management nie ma możliwości ustawienia domyślnej bazy danych. Więc użyj czegoś poniżej:

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' 

Pomyślałem, że to działa.

+4

Pojawia się błąd: Nie można znaleźć procedury przechowywanej "sp_addlinkedserver". Również przy użyciu bazy danych sql db. –

7

Konieczność wykonania poniższych trzech procedur przechowywanych w celu dodania SQL Azure. Używając poniższej procedury przechowywanej udało mi się przetestować 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

Może po prostu dodaję, że serwer = 'PROD' był w moim przypadku taki sam jak wartość źródła danych. Wielkie dzięki. – ozzy432836

+0

Doskonale! właśnie to, czego potrzebowałem –

1

Czy rzeczywiście skonfigurowałeś połączenie z bazą danych perseus? Patrząc na komunikat o błędzie wysyłane jest zapytanie o 3 częściowej lub 4-częściowej nazwie do Azure, które nie działa tak, jak na Azure. Sprawdź zapytanie i ustaw je na 2-częściową nazwę i tylko trzyczęściową nazwę, jeśli łączy się z tą samą bazą danych.

+1

To nie zapewnia odpowiedzi na pytanie. Aby skrytykować lub poprosić o wyjaśnienie od autora, pozostaw komentarz pod swoim postem. - [Z recenzji] (/ opinia/niskiej jakości-posts/10967835) – dotnetom

+0

odpowiedź brzmi: błąd, 3 części/4 części nazwy nie działają na Azure i zapytanie musi zmodyfikować –

+0

zgodzić się @dotnetom, ta odpowiedź naprawdę powinien być komentarz. Zaskoczony, że przetrwał tak długo ... Wygląda na to, że podniosłem flagę z tego właśnie powodu, a moderatorzy, w swojej nieskończonej "mądrości", czuli, że to była odpowiedź. –

0

Miałem ten sam problem, zostanie on również rozwiązany, jeśli nie użyjesz gwiazdki WYBIERZ część.

SELECT Row1, Row2 FROM table 

zadziała

SELECT * FROM table 

przyzwyczajenie

+0

Proszę opracować? Nie rozumiem, co oznacza asterysk z połączonymi tabelami. I twój przykład wprawia mnie w zakłopotanie, wydaje się, że nie odwołujesz się do tabel z zewnętrznych baz danych. Typową składnią dla połączonych baz danych jest 'SELECT * FROM [nazwa serwera DB]. [DB/Katalog]. [Dbo]. [Nazwa tabeli]'. Twoje użycie nazwy właśnie tabeli pozostawia linkowanie. –

Powiązane problemy