Не удается получить Linked Servers для работы в Sql Azure
Мы используем пробную версию 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 Server 2012 Server может подключаться к нашему внутреннему 2008 году кросс-серверными запросами и просматривать его структуру через Linked Servers.
Я знаю из этой статьи Azure поддерживает Linked Servers.
Итак, я потерял то, что не так. Наш администратор считает, что у нас есть учетная запись Web-Sql и учетная запись бизнес-SQL. Эта Azure Web vs Business SQL устаревшая ссылка Stack подразумевает, что SQL-версия НЕ является проблемой, но заранее, когда Azure предлагает Linked Servers.
Итак, я пытаюсь понять, если
a) мы не создали что-то право для обеспечения связи SQL?
b) мы ограничены пробной версией
c) мы ограничены версией веб-SQL?
d) что-нибудь еще?
Ответы
Ответ 1
При добавлении связанного сервера из 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'
Я решил, что это работает.
Ответ 2
Вам нужно выполнить указанные ниже три хранимые процедуры, чтобы добавить SQL Azure. Используя ниже эту хранимую процедуру, я смог запросить 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
Ответ 3
На самом деле вы установили соединение с базой данных perseus? Просмотрев сообщение об ошибке, вы отправляете запрос с 3-мя частями или четырьмя названиями для Azure, которые не работают, как в Azure. Пожалуйста, проверьте свой запрос и установите его для использования имени 2-х частей и только трех частей имени, если он подключается к одной базе данных
Ответ 4
У меня была такая же проблема, она также будет решена, если вы не используете звездочку в своей части SELECT.
SELECT Row1, Row2 FROM table
будет работать
SELECT * FROM table
обыкновение