Проекты tSQLt не собираются в Visual Studio 2012

У меня есть несколько проектов баз данных, использующих tSQLt, которые правильно строятся в Visual Studio 2010. Когда я открываю их в Visual Studio 2012, мне сообщают, что IDE должна внести «функциональные изменения», чтобы использовать их.

Как только я разрешил преобразование, ни один из проектов базы данных больше не строится успешно. Вместо этого кажется, что любой объект в схеме tSQLt вызывает ошибку о sys.objects, которая выглядит следующим образом:

{Path}.Database.Messages\Schema Objects\Schemas\tSQLt\
Programmability\Functions\Private_GetConstraintType.function.sql(6,10):
Error:  SQL71501: Function: [tSQLt].[Private_GetConstraintType] has an 
unresolved reference to object [sys].[objects].

Преобразование, похоже, никоим образом не изменило названные сценарии. Что происходит? (И как мне исследовать подобную проблему. Это довольно загадочно.)


person Yes - that Jake.    schedule 16.04.2013    source источник


Ответы (1)


Функция tSQLt [tSQLt].[Private_GetConstraintType] выбирает из sys.objects, которые находятся в системной базе данных msdb.

Вам необходимо добавить ссылку на базу данных msdb (или master) в проект базы данных в Visual Studio 2012 (Инструменты данных).

Для этого перейдите в раздел Solution->Project->Reference->Add Database Reference (см. снимок экрана ниже).

введите здесь описание изображения

и добавьте ссылку на системную базу данных msdb. Это должно помочь.

введите здесь описание изображения

person Andrey Morozov    schedule 25.05.2013
comment
Да, у меня тоже так заработало. У меня была такая же проблема несколько месяцев назад. Я запутался и в конце концов разобрался, но тогда я мог бы покончить с вашим ответом! :) - person David Atkinson; 11.06.2013
comment
Мне также пришлось добавить ALTER DATABASE $(DatabaseName) SET TRUSTWORTHY ON в мой сценарий перед развертыванием. - person David Atkinson; 26.06.2013
comment
Да, и вместо msdb мне пришлось добавить ссылку на master, установив имя базы данных на sys - person David Atkinson; 14.04.2014