Visual Studio - 部署数据库 - 数据库参数

时间:2016-03-23 00:02:31

标签: sql-server visual-studio publish

目前,我正在部署到服务器,从Visual Studio发布时,部署部署会调用将用户添加到组中的脚本:

ALTER ROLE [geodeveloper] ADD MEMBER [OTWGEODI01\GEO Application Developers];

我使用的服务器名为OTWGEODI01

但是,我创建了一个指向OTWGEODI02的新发布配置文件 - 但上面的脚本失败了,因为现在有成员OTWGEODI01\GEO Application Developers

有没有办法让参数作为发布的一部分在脚本中更改此值?

我尝试向我的数据库解决方案添加属性,但添加了一个称为ServerName的可用性。我把它设置为'OTWGEODI02'。然后我去了一个直接引用服务器名称的脚本:

ALTER ROLE [geodeveloper] ADD MEMBER [OTWGEODI01\GEO Application Developers];

并将其替换为:

ALTER ROLE [geodeveloper] ADD MEMBER [[$(ServerName)\GEO Application Developers];

但它告诉我'''

附近有一个无效语法

你能看到我犯的错误吗?另外,每次我需要发布到不同的环境时,我都需要去更新数据库属性?或者可以以某种方式基于我正在使用的.publish文件。 (每个数据库都有一个.publish文件)。也许我最终会得到一个发布文件,并以某种方式选择解决方案配置并在那里添加我的环境?

编辑:

导致发布错误:

  

SQL72014:.Net SqlClient数据提供程序:消息15401,级别16,状态1,   第1行Windows NT用户或组'($ ServerName)\ GEO应用程序   没有找到开发人员。再次检查名称。

CREATE USER [($ServerName)\GEO Application Developers] FOR LOGIN [($ServerName)\GEO Application Developers];

它似乎没有取代变量......

此外:

CREATE USER [$(ServerName)\GEO Application Developers] FOR LOGIN [$(ServerName)\GEO Application Developers];

导致构建时间错误导致我无法在此处输入参数。

1 个答案:

答案 0 :(得分:0)

您可以在“项目”属性中定义变量(在 SQLCMD变量选项卡中定义新变量)。然后,您可以在脚本中使用此变量(如[$(ServerName)])。
发布时,您可以根据要发布到的服务器设置不同的值。