如何在 VSTS DB Edition Deploy 中自定义 CREATE DATABASE 语句?
Posted
技术标签:
【中文标题】如何在 VSTS DB Edition Deploy 中自定义 CREATE DATABASE 语句?【英文标题】:How do I customise the CREATE DATABASE statement in VSTS DB Edition Deploy? 【发布时间】:2008-12-03 01:10:53 【问题描述】:我使用的是 VSTS 数据库版 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)]
我不会持续运行这个,所以我想让它尽可能简单,以供下一个人使用。项目属性中有很多部署选项,但我无法按照我想要的方式进行部署。
有人知道怎么设置吗?
【问题讨论】:
【参考方案1】:迟到总比没有好,我知道如何从您的第二个示例中获取 $(DefaultDataPath)$(DatabaseName)
文件名。
您在第一个代码 sn-p 中显示的 SQL 表明您没有用于在 VSTS:DB 项目中创建数据库文件的脚本,可能是故意将它们从您所做的任何架构比较中排除。我发现它有点违反直觉,但解决方案是让 VSTS:DB 在您的开发环境中编写 MDF 和 LDF 脚本,然后编辑这些脚本以使用 SQLCMD 变量。
在您的数据库项目中,转到文件夹Schema Objects > Database Level Objects > Storage > Files。在那里,添加这两个文件:
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 中指定它们。
【讨论】:
【参考方案2】:我们使用模板数据库执行此操作,当新客户上线时,我们会备份、复制和恢复该数据库。我们不使用脚本创建任何模式,而是使用实时的空数据库。
【讨论】:
【参考方案3】:嗯,看来到目前为止最好的答案(鉴于压倒性的反应)是事后编辑文件......仍在寻找
【讨论】:
以上是关于如何在 VSTS DB Edition Deploy 中自定义 CREATE DATABASE 语句?的主要内容,如果未能解决你的问题,请参考以下文章
berkeley db java edition怎样存储数据库?
使用 sql server compact edition 生成的多步 ole db 操作
我可以使用 oracle berkeley db java edition 的 c 实现(python bsddb)创建的 bdb(berkeley db)文件吗?