Лучше поздно, чем никогда, я знаю, как получить имена файлов $(DefaultDataPath)$(DatabaseName)
из вашего второго примера.
SQL, который вы показываете в своем первом фрагменте кода, предполагает, что у вас нет сценариев для создания файлов базы данных в вашем проекте VSTS: DB, возможно, путем преднамеренного исключения их из любых сравнений схем, которые вы сделали. Я нашел это немного нелогичным, но решение состоит в том, чтобы позволить VSTS: DB создавать сценарии MDF и LDF в вашей среде разработки, а затем редактировать эти сценарии для использования переменных SQLCMD.
В вашем проекте базы данных перейдите в папку Объекты схемы> Объекты уровня базы данных> Хранение> Файлы . Там добавьте эти два файла:
Database.sqlfile.sql
ALTER DATABASE [$(DatabaseName)]
ADD FILE (NAME = [$(DatabaseName)],
FILENAME = '$(DefaultDataPath)$(DatabaseName).mdf',
SIZE = 2304 KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024 KB)
TO FILEGROUP [PRIMARY];
Database_log.sqlfile.sql
ALTER DATABASE [$(DatabaseName)]
ADD LOG FILE (NAME = [$(DatabaseName)_log],
FILENAME = '$(DefaultDataPath)$(DatabaseName)_log.ldf',
SIZE = 1024 KB, MAXSIZE = 2097152 MB, FILEGROWTH = 10 %);
Полный сценарий создания базы данных, который генерирует VSTS: DB или, в этом отношении, VSDBCMD.exe, теперь будет использовать переменные SQLCMD для именования файлов MDF и LDF, что позволяет указывать их в командной строке или в MSBuild.