Visual studio 2013 如何在2013 SQL Server数据库项目中创建登录用户

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中,这

我正在尝试创建一个登录SSDT数据库项目的用户。目标服务器上已存在该登录名。使用以下SQL:

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
不会编译。