Sql server 2008 如何在VSTS DB Edition Deploy中自定义CREATE DATABASE语句?
我使用的是VSTS数据库版GDR版本9.1.31024.02 我有一个项目,当客户添加到系统中时,我们将动态创建具有相同模式的多个数据库。每个客户一分贝。我想我应该能够使用部署脚本来完成这项工作。不幸的是,我总是得到CREATEDATABASE语句中指定的完整文件名。例如:Sql server 2008 如何在VSTS DB Edition Deploy中自定义CREATE DATABASE语句?,sql-server-2008,visual-studio-2008,deployment,database-project,Sql Server 2008,Visual Studio 2008,Deployment,Database Project,我使用的是VSTS数据库版GDR版本9.1.31024.02 我有一个项目,当客户添加到系统中时,我们将动态创建具有相同模式的多个数据库。每个客户一分贝。我想我应该能够使用部署脚本来完成这项工作。不幸的是,我总是得到CREATEDATABASE语句中指定的完整文件名。例如: CREATE DATABASE [$(DatabaseName)] ON PRIMARY(NAME = [targetDBName], FILENAME = N'$(DefaultDataPath)targetDBName
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)]
我不打算在持续的基础上运行它,所以我想让它尽可能简单,为下一个家伙。在项目属性中有许多用于部署的选项,但我无法按我所希望的方式进行部署
有人知道如何设置吗?嗯,看来到目前为止最好的答案(考虑到过度的反应)是在事后编辑文件。。。仍在寻找我们使用一个模板数据库来实现这一点,当新客户上线时,我们会备份、复制和恢复该数据库。我们不使用脚本创建任何模式,而是使用活动的空数据库。迟做总比不做好,我知道如何从第二个示例中获取
$(DefaultDataPath)$(DatabaseName)
文件名
您在第一个代码段中显示的SQL表明您没有用于在VSTS:DB项目中创建数据库文件的脚本,可能是故意将它们从您所做的任何模式比较中排除的。我发现这有点违反直觉,但解决方案是让VSTS:DB在您的开发环境中编写MDF和LDF脚本,然后编辑这些脚本以使用SQLCMD变量
在数据库项目中,转到“架构对象>数据库级对象>存储>文件”文件夹。在其中,添加以下两个文件:
数据库.sqlfile.sql
ALTER DATABASE [$(DatabaseName)]
ADD FILE (NAME = [$(DatabaseName)],
FILENAME = '$(DefaultDataPath)$(DatabaseName).mdf',
SIZE = 2304 KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024 KB)
TO FILEGROUP [PRIMARY];
ALTER DATABASE [$(DatabaseName)]
ADD LOG FILE (NAME = [$(DatabaseName)_log],
FILENAME = '$(DefaultDataPath)$(DatabaseName)_log.ldf',
SIZE = 1024 KB, MAXSIZE = 2097152 MB, FILEGROWTH = 10 %);
数据库\u log.sqlfile.sql
ALTER DATABASE [$(DatabaseName)]
ADD FILE (NAME = [$(DatabaseName)],
FILENAME = '$(DefaultDataPath)$(DatabaseName).mdf',
SIZE = 2304 KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024 KB)
TO FILEGROUP [PRIMARY];
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中指定它们