目前,我正在部署到服务器,从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];
导致构建时间错误导致我无法在此处输入参数。
答案 0 :(得分:0)
您可以在“项目”属性中定义变量(在 SQLCMD变量选项卡中定义新变量)。然后,您可以在脚本中使用此变量(如[$(ServerName)])。
发布时,您可以根据要发布到的服务器设置不同的值。