2

确实,以下查询最初不是我的,但我在工作中面临着确切的问题。从而照原样复制问题陈述。我找不到任何解决方案。我非常感谢以下问题集的任何建议或亮点:

我在 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" 在 PRIMARY 上创建数据库 [$(DatabaseName)] (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 %) 整理 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) 变量?

4

1 回答 1

3

在 Visual Studio 2010 中,有一个名为“CommentOutSetVarDeclarations”的项目设置。如果您选中此选项,您提到的两个默认 SETVAR 行将被注释掉。

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

于 2013-10-30T14:01:58.500 回答