Как настроить оператор CREATE DATABASE в VSTS DB Edition Deploy? - PullRequest
4 голосов
/ 03 декабря 2008

Я использую VSTS Database Edition GDR Версия 9.1.31024.02

У меня есть проект, в котором мы будем на лету создавать несколько баз данных с одинаковой схемой по мере добавления клиентов в систему. Это одна БД на клиента. Я думал, что я должен быть в состоянии использовать сценарий развертывания, чтобы сделать это. К сожалению, я всегда получаю полные имена файлов, указанные в операторе CREATE DATABASE. Например:

CREATE DATABASE [$(DatabaseName)]
ON 
PRIMARY(NAME = [targetDBName], FILENAME = N'$(DefaultDataPath)targetDBName.mdf')
LOG ON (NAME = [targetDBName_log], FILENAME = N'$(DefaultDataPath)targetDBName_log.ldf')
GO

Я ожидал чего-то большего

CREATE DATABASE [$(DatabaseName)]
ON 
PRIMARY(NAME = [targetDBName], FILENAME = N'$(DefaultDataPath)$(DatabaseName).mdf')
LOG ON (NAME = [targetDBName_log], FILENAME = N'$(DefaultDataPath)$(DatabaseName)_log.ldf')
GO

Или даже

CREATE DATABASE [$(DatabaseName)]

Я не собираюсь запускать это на постоянной основе, поэтому я хотел бы сделать это как можно более простым для следующего парня. Существует несколько вариантов развертывания в свойствах проекта, но я не могу заставить это работать так, как мне хотелось бы.

Кто-нибудь знает, как это настроить?

Ответы [ 3 ]

4 голосов
/ 07 ноября 2009

Лучше поздно, чем никогда, я знаю, как получить имена файлов $(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.

1 голос
/ 21 января 2009

Мы делаем это, используя базу данных шаблонов, которую мы копируем, копируем и восстанавливаем по мере появления новых клиентов в сети. Мы не занимаемся созданием схемы с помощью сценариев, а работаем с пустой пустой БД.

0 голосов
/ 09 декабря 2008

Хм, ну, похоже, что лучший ответ на данный момент (учитывая чрезмерный ответ) - это отредактировать файл после факта ... Все еще ища

...