在VS2010数据库项目中部署时设置DefaultDataPath和DefaultLogPath

时间:2012-04-10 07:57:21

标签: .net visual-studio-2010 sql-server-2008 sql-server-2005 database-project

说实话,以下查询最初不是我的,但我在工作中遇到了确切的问题。然后按原样复制问题陈述。我无法找到任何解决方案。我非常感谢以下问题集的任何建议或亮点:

  

我在Schema Objects \ Database Level中没有任何硬编码   Objects \ Storage \ Files - 包括数据库和日志文件。

     

单击“部署”时生成的部署脚本   db项目有硬编码:SETVAR包含数据库和日志文件路径   分配给$(DefaultDataPath)和$(DefaultLogPath) - 见下文:   :setvar DefaultDataPath“C:\ DB \ Microsoft SQL   Server \ MSSQL10_50.MITCHELL \ MSSQL \ DATA \“:setvar DefaultLogPath   “C:\ DB \ Microsoft SQL Server \ MSSQL10_50.MITCHELL \ MSSQL \ DATA \”。

     

我希望部署脚本接受数据和日志路径的输入。   但基于当前生成的脚本,我将不得不这样做   手动注释上面的2行并修改CREATE DATABASE   语句如下所示每次替换任何引用   带有“InputDefaultDataPath”和的“DefaultDataPath”和“DefaultLogPath”   “InputDefaultLogPath”CREATE DATABASE [$(DatabaseName)]       上       PRIMARY(NAME = [TEST_DB],FILENAME ='$(InputDefaultDataPath)$(DatabaseName).mdf',> SIZE = 3072 KB,   FILEGROWTH = 1024 KB)       登录(NAME = [TEST_DB_log],FILENAME =>'$(InputDefaultLogPath)$(DatabaseName)_log.ldf',SIZE = 1024 KB,   MAXSIZE = 2097152 MB,FILEGROWTH = 10%)COLLATE   SQL_Latin1_General_CP1_CI_AS

 Question 1: How do I prevent db project from scripting the below two lines and also 
     

防止它将这些变量替换为   CREATE DATABASE语句? :setvar DefaultDataPath“C:\ DB \ Microsoft   SQL Server \ MSSQL10_50.MITCHELL \ MSSQL \ DATA \“:setvar DefaultLogPath   “C:\ DB \ Microsoft SQL Server \ MSSQL10_50.MITCHELL \ MSSQL \ DATA \”。

     

问题2:如何将db项目设置为自动脚本部署   脚本以接受DefaultDataPath的用户输入的方式   和DefaultLogPath没有我手动将其更改为包含   $(InputDefaultDataPath)和$(InputDefaultLogPath)变量?

1 个答案:

答案 0 :(得分:3)

在visual studio 2010中,有一个名为“CommentOutSetVarDeclarations”的项目设置。如果选中此选项,则会提到您提及的两个默认SETVAR行。

这使您可以在从SQLCMD运行部署脚本时从命令行提供$(DefaultDataPath)和$(DefaultLogPath)的值。