У меня есть SQL Server 2008 с базой данных, которую я хочу добавить в TFS. Поэтому я использовал проект базы данных Visual Studio 2013, куда я импортировал БД. После исправления множества ошибок я застрял с единственной оставшейся ошибкой:
В одном представлении разработчики использовали OPENQUERY
для доступа к связанному серверу. Поэтому я импортировал DACPAC, который содержит нужную базу данных, и добавил его в проект, используя Add Database Reference
следующие опорные параметры.
Начальная версия скрипта
Вот более короткая версия оригинального создания представления:
CREATE VIEW dbo.vwStatus
AS
SELECT StatusID, StatusName
FROM OPENQUERY(LinkedServer, 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1
Это приводит к следующей ошибке:
Ошибка 136 SQL71501: представление: [dbo]. [VwStatus] имеет неразрешенную ссылку на объект [LinkedServer].
Первая попытка
Поэтому я попытался вставить переменную имени сервера
FROM OPENQUERY($(LinkedServer), 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1
Что приводит к
Ошибка 176 SQL46010: неправильный синтаксис около $ (LinkedServer).
Дальнейшие попытки
Я немного поиграл arround и попробовал следующее (с включенными и без включенных в кавычки идентификаторов):
FROM OPENQUERY("$(LinkedServer)", 'SELECT * FROM [DB].[dbo].tbStatus') AS
FROM OPENQUERY([$(LinkedServer)], 'SELECT * FROM [DB].[dbo].tbStatus') AS
FROM OPENQUERY([LinkedServer], 'SELECT * FROM [DB].[dbo].tbStatus') AS
FROM OPENQUERY("LinkedServer", 'SELECT * FROM [DB].[dbo].tbStatus') AS
Я всегда получаю ошибку.
Я понятия не имею, что я здесь пропускаю. Вы? Спасибо за ваше время!
(К сожалению, я не могу добавить тег visual-studio-2013, поэтому я использовал visual-studio)