Visual studio 2013 如何在2013 SQL Server数据库项目中创建登录用户
我正在尝试创建一个登录SSDT数据库项目的用户。目标服务器上已存在该登录名。使用以下SQL:Visual studio 2013 如何在2013 SQL Server数据库项目中创建登录用户,visual-studio-2013,sql-server-data-tools,Visual Studio 2013,Sql Server Data Tools,我正在尝试创建一个登录SSDT数据库项目的用户。目标服务器上已存在该登录名。使用以下SQL: CREATE USER [MyLogin] FOR LOGIN [MyLogin] WITH DEFAULT_SCHEMA = dbo GO 我得到一个错误: 错误1 SQL71501:用户:[MyLogin]对登录名[MyLogin]的引用未解析 我找到了两种解决方案,但都不适用于2013: 1) 创建服务器项目以引用登录名。在当前版本的SSDT/VS2013中,这
CREATE USER [MyLogin]
FOR LOGIN [MyLogin]
WITH DEFAULT_SCHEMA = dbo
GO
我得到一个错误:
错误1 SQL71501:用户:[MyLogin]对登录名[MyLogin]的引用未解析
我找到了两种解决方案,但都不适用于2013:
1) 创建服务器项目以引用登录名。在当前版本的SSDT/VS2013中,这不是一个选项
2) 禁用架构检查。2013年缺少该选项(我相信是
Options->Database Tools->Schema Compare
)如果保证登录服务器,最好调整主dacpac文件。这里有一些关于如何执行此操作的说明:
或者,您可以从SSDT部分删除对登录的引用,并在部署后脚本中处理它。如果您有任何类型的环境,需要在不同的服务器(开发、QA、生产)中应用不同的权限,那么这可能是更好的选择。我在这里写过这样的博客:
希望其中一个能有所帮助。我实际上使用了第一个选项来解决需要使用executeas的问题,这要求用户在项目中。获取确切的XML有点棘手,但我通过创建一个空项目(仅使用该登录名),构建它,并将XML从dacpac复制到主dacpac中来解决这个问题。您可以使用标准的T-SQL语法在SQL Server数据库项目中创建服务器级登录名:
CREATE LOGIN [Login_Name] WITH PASSWORD = '<Password>';
创建密码为“”的登录名[LOGIN\u Name];
注意:您也可以右键单击数据库项目并选择“添加新项目”,然后导航到SQL Server>Security(在模板对话框中)并选择“登录(SQL Server)”
这将解决SQL71501错误,并且(假设您正在使用SQLPackage.exe进行部署)将允许SQLPackage.exe在部署和发布之前将安全对象与目标数据库进行比较
希望有帮助:)+1这是我能找到的最简单的解决方案!我认为这有一个问题,因为执行此操作时需要处于
master
中。但是使用master
不会编译。