У меня есть проект базы данных, указанный как 2005. (Это находится на экране свойств в настройках проекта.)
У нас есть несколько серверов, которые мы развертываем и запускаем в рабочей среде 2005 года, но у нас есть несколько серверов 2008 R2, для которых мы разрабатываем, поэтому мы указываем проект как 2005 год.
Я добавил хранимую процедуру, которую я создал в базе данных 2008R2, которая используется только для разработки. Все работает нормально, поэтому я добавил его в проект базы данных. Проект создан и развернут нормально, что означает, что он генерирует файл .sql. Мы не применяем изменения из VS Project.
У нас есть сборка CI TFS, которая работает с базой данных 2005 года. (у нас есть несколько конфигураций, каждая из которых «развертывается» в другой базе данных). Он построил и развернул нормально. Опять же, он только сгенерировал обновления в файл SQL.
Сохраненный процесс содержит следующий код:
insert SiteCAChargeParameterSet
values (
( select siteID
from SiteCAChargeParameterSet
where SiteCAChargeParameterSetID = @OldSiteCAChargeParameterSet
),
@NewSetName,0,0,@UserID, @currentDate,@UserID, @currentDate
)
Все переменные определены. Когда я пытаюсь создать этот хранимый процесс в базе данных 2005 года, я получаю сообщение об ошибке (1046), указывающее, что выбор не разрешен. «Подзапросы не разрешены в этом контексте».
Мой вопрос в том, почему компилятор разрешает это. Очевидно, поскольку я указал, что это проект SQL Server 2005, он должен следовать правилам для этой версии. Кроме того, поскольку он сравнивается с базой данных 2005 года для развертывания, следует также знать, что это незаконно.
Я надеюсь, что где-то есть опция, которую я не включил, или что-то в этом роде. Или это просто ошибка в "компиляторе" SQL.