Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 如何在VSTS DB Edition Deploy中自定义CREATE DATABASE语句?_Sql Server 2008_Visual Studio 2008_Deployment_Database Project - Fatal编程技术网

Sql server 2008 如何在VSTS DB Edition Deploy中自定义CREATE DATABASE语句?

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

我使用的是VSTS数据库版GDR版本9.1.31024.02

我有一个项目,当客户添加到系统中时,我们将动态创建具有相同模式的多个数据库。每个客户一分贝。我想我应该能够使用部署脚本来完成这项工作。不幸的是,我总是得到CREATEDATABASE语句中指定的完整文件名。例如:

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中指定它们