说实话,以下查询最初不是我的,但我在工作中遇到了确切的问题。然后按原样复制问题陈述。我无法找到任何解决方案。我非常感谢以下问题集的任何建议或亮点:
我在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)变量?
答案 0 :(得分:3)
在visual studio 2010中,有一个名为“CommentOutSetVarDeclarations”的项目设置。如果选中此选项,则会提到您提及的两个默认SETVAR行。
这使您可以在从SQLCMD运行部署脚本时从命令行提供$(DefaultDataPath)和$(DefaultLogPath)的值。