Jus*_*tin 14 sql-server login database-project visual-studio-2010
当我为SQL 2012创建Visual Studio数据库项目并将其与现有数据库同步(使用比较模式)时,我还同步SQL服务器登录.Visual Studio为登录生成以下脚本:
CREATE LOGIN [my_user] WITH PASSWORD = 'somesecurepass'
Run Code Online (Sandbox Code Playgroud)
当我尝试在存在此登录的服务器上发布生成的SQL时,sqlcmd向我显示错误:
The server principal my_user already exists.
Run Code Online (Sandbox Code Playgroud)
当我查看Visual Studio生成的sql脚本时,我看到许多对象都包含在IF EXISTS语句中,但是CREATE LOGIN没有被包装!
我试图在项目的SQL脚本中手动包装它,但是然后项目没有构建,并且指向IF的错误:
SQL70001: This statement is not recognized in this context.
Run Code Online (Sandbox Code Playgroud)
现在,如何强制Visual Studio使用IF EXISTS检查生成登录创建脚本,并且不会丢失同步功能?
小智 21
将脚本文件(*.sql)的Build Action属性更改为None.这解决了这个问题.
通过右键单击解决方案资源管理器中的sql文件,然后单击属性来访问构建操作属性.或者,在解决方案资源管理器中突出显示该文件,然后按"F4".
对于正在寻找完整答案的其他人,这是我的工作:
在您的PreDeployment脚本中,添加一行以运行此脚本。对我来说,我将链接服务器脚本移动到与PreDeployment脚本相同的文件夹中。那我就可以
:r .\linkedserver.sql