У меня есть база данных SQL Server Express 2014. В SSMS всякий раз, когда я пытаюсь зарегистрировать базу данных как приложение уровня данных, я получаю сообщение об ошибке «Источник базы данных не является поддерживаемой версией SQL Server (localdb)\ProjectsV12 (Microsoft.SqlServer.Dac)». Как решить?
ТМИ:
У меня есть проект SSDT, в котором я пытаюсь написать условные сценарии на основе версии базы данных. Так, например, сценарий поиска может выглядеть так:
DECLARE @version_source AS VARCHAR(100) = (SELECT type_version FROM msdb.dbo.sysdac_instances WHERE database_name = DB_NAME());
IF @version_source IS NULL
BEGIN
SET IDENTITY_INSERT instructor_title ON;
INSERT INTO instructor_title (id, name, description) VALUES
(1, 'Instructor', NULL),
(2, 'Assistant Professor', NULL),
(3, 'Associate Professor', NULL),
(4, 'Professor', NULL)
;
SET IDENTITY_INSERT instructor_title OFF;
END
Когда я публикую, я проверяю «Зарегистрировать как приложение уровня данных», и все работает нормально. Когда я начинаю отладку (которая разворачивается в (localdb)\ProjectsV12), моя логика дает сбой. Экспресс-база данных SQL Server не регистрируется как приложение уровня данных. Это приводит к тому, что переменная @version_source всегда возвращает NULL, поэтому условие моего скрипта всегда истинно. Я понимаю, что вместо этого мог бы написать идемпотентный или условный сценарий состояния базы данных, но твердо уверен, что условный сценарий версии базы данных является лучшим архитектурным решением.