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

Posted

技术标签:

【中文标题】在 VS2010 数据库项目中部署时设置 DefaultDataPath 和 DefaultLogPath【英文标题】:Setting DefaultDataPath and DefaultLogPath on Deploy in VS2010 Database Project 【发布时间】:2012-04-10 07:57:20 【问题描述】:

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

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

当我点击“部署”时生成的部署脚本 db 项目在 :SETVAR 中使用数据库和日志文件路径进行硬编码 分配给 $(DefaultDataPath) 和 $(DefaultLogPath) - 见下文: :setvar DefaultDataPath "C:\DB\Microsoft SQL 服务器\MSSQL10_50.MITCHELL\MSSQL\DATA\" :setvar DefaultLogPath "C:\DB\Microsoft SQL Server\MSSQL10_50.MITCHELL\MSSQL\DATA\"。

我希望部署脚本接受数据和日志路径的输入。 但根据当前正在生成的脚本,我将不得不 手动注释以上 2 行并修改 CREATE DATABASE 如下所示的声明,以替换任何引用 "DefaultDataPath" 和 "DefaultLogPath" 与 "InputDefaultDataPath" 和 "InputDefaultLogPath" 创建数据库 [$(DatabaseName)] 在 PRIMARY(NAME = [TEST_DB], FILENAME = '$(InputDefaultDataPath)$(DatabaseName).mdf', >SIZE = 3072 KB, 文件增长 = 1024 KB) 登录(名称 = [TEST_DB_log],文件名 = >'$(InputDefaultLogPath)$(DatabaseName)_log.ldf',大小 = 1024 KB, MAXSIZE = 2097152 MB,文件增长 = 10 %) 整理 SQL_Latin1_General_CP1_CI_AS

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

防止它用这些变量代入 创建数据库语句? :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】:

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

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

【讨论】:

在 VS2012 中,我必须将其添加到发布配置文件 xml True

以上是关于在 VS2010 数据库项目中部署时设置 DefaultDataPath 和 DefaultLogPath的主要内容,如果未能解决你的问题,请参考以下文章

VS2010 数据库项目部署,如果可能发生数据丢失会失败吗?

在 vs2010 中使用 Database 项目部署和应用发布补丁

VS2010数据库项目部署重建每张表

使用 VS2010 的 devenv.exe 部署 Web 应用程序

使用VS2010的Database 项目模板统一管理数据库对象

VS2010 数据库项目部署——“SqlDeployTask”任务意外失败,NullReferenceException