Как устранить ошибки запроса связанного сервера с 4-мя именами в проекте БД VSTS? - PullRequest
1 голос
/ 04 февраля 2009

Я использую VSTS 2008 с установленными версиями для разработчиков и баз данных. У меня установлена ​​редакция БД GDR (версия 9.0.31124). В коде есть несколько мест, где мы ссылаемся на связанные серверы (мэйнфрейм DB2, iSeries и SQL Server). Одним из таких примеров является этот код, который мы имеем в процедуре хранения:

SELECT VendorID   
INTO     #tmpVendors   
FROM    DataWhse.BIDataWhse.BP.Vendors   
WHERE  EffectiveDate < DATEADD(day, -1, DATEADD(month, 1, CAST(LTRIM(RTRIM(CAST(@Month AS CHAR(2)))) + '/01/' + CAST(@YEAR AS CHAR(4)) AS DATETIME)))   
AND     ExpirationDate > CAST(LTRIM(RTRIM(CAST(@Month AS CHAR(2)))) + '/01/' + CAST(@YEAR AS CHAR(4)) AS DATETIME) 

Я получаю неразрешенные ссылочные ошибки (TSD03006) для этого типа кода. Какова текущая рекомендация о том, как обращаться с этим типом ссылки на связанный сервер? В этом случае мы имеем дело с другим экземпляром SQL Server 2005. База данных, на которую мы ссылаемся, содержит тонны таблиц, которые мы никогда бы не использовали. Итак, я хотел бы, если это возможно, избежать использования всей схемы для этой БД.

Информация, которую я нахожу при поиске, кажется устаревшей. ГДР сильно изменилась за последний год, и есть много рекомендаций от предыдущих версий ОСАГО, которые сейчас устарели.

Ответы [ 2 ]

2 голосов
/ 09 сентября 2009

Чтобы расширить эту ситуацию, ссылка на базу данных сделает большую часть работы за вас. Вам необходимо создать проект для связанной базы данных и импортировать схему базы данных из базы данных (или импортировать сценарии для таблиц, которые вам нужны, если вы не хотите создавать всю базу данных). «В справочнике я указал переменные для сервера и базы данных и разрешил их замену» - это означает, что в диалоговом окне «Добавить ссылку на БД» вы можете выбрать «Определить переменную сервера», «Определить переменную базы данных» и «Обновить объекты схемы и сценарии». Введите имена для переменных (они будут окружены символом $ (..)) и введите значения, которые вы хотите заменить (реальные имена серверов / баз данных, которые нужно вставить при создании сценария развертывания). Опция Update заставит его пройти через ваш проект и отредактировать все сценарии, чтобы заменить имена серверов / баз данных переменными. круто.

2 голосов
/ 09 февраля 2009

Я наконец-то решил это. Я создал проект базы данных с именем BIDataWhse, добавил схему bp, добавил пользователя bp и добавил определение таблицы bp.vendors. Затем скомпилировал этот проект и добавил ссылку на базу данных в проект, где я получал сообщение об ошибке. В справочнике я указал переменные для сервера и базы данных и разрешил замену переменных. Полученный код был:

SELECT VendorID      
INTO     #tmpVendors      
FROM    [$(DataWhse)].[$(BIDataWhse)].BP.Vendors      
WHERE  EffectiveDate < DATEADD(day, -1, DATEADD(month, 1, CAST(LTRIM(RTRIM(CAST(@Month AS CHAR(2)))) + '/01/' + CAST(@YEAR AS CHAR(4)) AS DATETIME)))      
AND     ExpirationDate > CAST(LTRIM(RTRIM(CAST(@Month AS CHAR(2)))) + '/01/' + CAST(@YEAR AS CHAR(4)) AS DATETIME)     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...