Не удается получить Linked Servers для работы в Sql Azure - программирование
Подтвердить что ты не робот

Не удается получить Linked Servers для работы в Sql Azure

Мы используем пробную версию Azure. Мы пытаемся выполнить кросс-серверные запросы с нашего SQL-2012.

Кажется, что наш локальный 2012 связан с Azure. Когда я перехожу в Server ObjectLinked 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) что-нибудь еще?

4b9b3361

Ответ 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

обыкновение