Мне нужно добавить связанный сервер к MS Azure SQL Server

Я попытался и попытался, и не могу установить связь. Я могу подключиться к серверу с помощью SSMS, но не могу ссылаться на него с локального сервера. Вот мой script (заменив вещи в скобках с информацией, имеющей отношение):

EXEC master.dbo.sp_addlinkedserver
    @server     = N'[servername].database.windows.net',
    @srvproduct = N'Any',
    @provider   = N'MSDASQL',
    @datasrc    = N'Azure_ODBC1'
GO

EXEC master.dbo.sp_addlinkedsrvlogin
    @rmtsrvname  = N'[servername]',
    @useself     = N'False',
    @locallogin  = NULL,
    @rmtuser     = N'[username]',
    @rmtpassword = '[password]'

GO

Error Message

Ответ 1

Как указано в ckarst второй ссылке, есть решение, которое работает. Я размещаю его здесь, чтобы спасти вас от поиска. Как было предложено JuanPableJofre на этой странице Azure feedback:

Используя SQL 2014, я смог выполнить распределенный запрос между локальным SQL-сервером и SQL Azure. Во-первых, я создал Linked-Server:

  • Связанный сервер (имя): LinkedServerName
  • Поставщик: поставщик Microsoft OLE DB для SQL Server
  • Название продукта: (пусто)
  • Источник данных: azure-db.database.windows.net
  • Строка поставщика: (пробел)
  • Местоположение: (пусто)
  • Каталог: db-name

В параметрах безопасности: (*)

  • Сделать этот контекст безопасности
  • Удаленный вход: azure-user-name
  • С паролем: yourPassword

В SSMS введен следующий тестовый запрос:

use [Local_DB] 
go

Select *
from [LinkedServerName].[RemoteDB].[dbo].[Remote_Table] 

Это сработало красиво!!

Подводя итог, связанный сервер создается в вашей локальной базе данных. Каталог (имя базы данных) важен, поскольку Azure может не указывать его в запросе (то есть: использовать azureDBName не будет работать на Azure), поэтому имя базы данных должно быть в каталоге.

Ответ 3

В то время как Azure DB не поддерживает определение Linked Servers, вы можете использовать недавно просмотренную функцию Elastic Query, чтобы определить "внешний источник данных", который является просто другой базой данных Azure DB, и определить "внешние таблицы", которые являются ссылками на таблицы в этой внешней базе данных. Затем вы можете запросить их, как если бы они были локальными объектами. Это очень похоже на концепцию Linked Server и подробно описано здесь.

Ответ 4

Извините, у меня недостаточно репутации, чтобы добавить комментарий. Может ли кто-нибудь помочь мне решить это тоже. Можно ли использовать кросс-запросы к базам данных как в Azure, так и в SQL? Мне нужно связать базу данных, которая должна работать как на Azure SQL, так и на традиционном сервере SQL

Ответ 5

N '[username]' должно быть таким

имя пользователя @имя_сервера