SQL Server Data Tools 所需的权限

在 Visual Studio 中对数据库执行作之前,必须使用对该数据库具有特定权限的帐户登录。 您所需的特定权限将基于您要执行的操作而异。 以下各节介绍可能需要执行的每个作以及执行所需的权限。

创建或部署数据库的权限

必须具有以下权限才能创建或部署数据库。

Action 所需的权限
导入数据库对象和设置 您必须能够连接到源数据库。

如果源数据库基于 SQL Server 2005,则还必须拥有每个对象的VIEW DEFINITION权限。

如果源数据库基于 SQL Server 2008 或更高版本,则还必须拥有每个对象的 VIEW DEFINITION 权限。 您的登录名必须具备 VIEW SERVER STATE 权限(用于数据库加密密钥)。
导入服务器对象和设置 必须能够连接到指定服务器上的主数据库。

如果服务器正在运行 SQL Server 2005,则必须对服务器具有 VIEW ANY DEFINITION 权限。

如果源数据库基于 SQL Server 2008 或更高版本,则必须对服务器具有 VIEW ANY DEFINITION 权限。 您的登录名必须具备 VIEW SERVER STATE 权限(用于数据库加密密钥)。
创建或更新数据库项目 无需任何数据库权限来创建或修改数据库项目。
部署新数据库或使用 “始终重新创建数据库 ”选项集进行部署 你必须具有 CREATE DATABASE 权限,或者是目标服务器上的 dbcreator 角色的成员。

创建数据库时,Visual Studio 将连接到 model 数据库并复制其内容。 用于连接到目标数据库的初始登录名(例如 ,yourLogin)必须具有 db_creatorCONNECT SQL 权限。 此登录名必须在 model 数据库上具有用户映射。 如果你有 sysadmin 权限,可以通过发出以下 Transact-SQL 语句来创建映射:

USE [model] CREATE USER yourUser FROM LOGIN yourLogin.

用户(在此示例中,yourUser)必须在 CONNECT 数据库上拥有 VIEW DEFINITIONmodel 权限。 如果你有 sysadmin 权限,可以通过发出以下 Transact-SQL 语句来授予这些权限:

USE [model] GRANT CONNECT to yourUser GRANT VIEW DEFINITION TO yourUser

如果您部署一个包含未命名约束的数据库并启用了 CheckNewConstraints 选项,则必须被授予 db_ownersysadmin 权限,否则部署将失败。 (默认情况下已启用 CheckNewConstraints 。此要求仅适用于未命名的约束。
部署对现有数据库的更新 您必须是有效数据库用户。 还必须是 db_ddladmin 角色的成员、拥有架构或者拥有要在目标数据库上创建或修改的对象。 您需要其他权限以便在预先部署或后期部署脚本中使用更高级概念,例如登录名或链接服务器。

如果部署到主数据库,则还必须对要部署到的服务器具有 VIEW ANY DEFINITION 权限。
在数据库项目中使用具有EXTERNAL_ACCESS功能的程序集。 必须设置 TRUSTWORTHY 数据库项目的属性。 您必须拥有 SQL Server 登录的 EXTERNAL ACCESS ASSEMBLY 权限。
将程序集部署到新的或现有的数据库 必须是目标部署服务器上的 sysadmin 角色的成员。

重构数据库的权限

数据库重构仅在数据库项目中发生。 您必须有权使用数据库项目。 在将更改部署到目标数据库之前,不需要对目标数据库拥有权限。

对 SQL Server 数据库执行单元测试的权限

必须具有以下权限才能在数据库上执行单元测试。

Action 所需的权限
执行测试操作 您必须使用执行上下文数据库连接。 有关详细信息,请参阅 连接字符串和权限概述
执行预先测试或后期测试操作 您必须使用特权上下文数据库连接。 此数据库连接具有比执行上下文连接更高的权限。
运行 TestInitializeTestCleanup 脚本 您必须使用特权上下文数据库连接。
在运行测试前部署数据库更改 您必须使用特权上下文数据库连接。 有关详细信息,请参阅 如何:配置 SQL Server 单元测试执行
在运行测试前生成数据 您必须使用特权上下文数据库连接。 有关详细信息,请参阅 如何:配置 SQL Server 单元测试执行

生成数据的权限

若要使用数据生成器生成测试数据,必须对目标数据库中的对象具有 INSERTSELECT 权限。 如果在生成数据之前删除数据,则还必须对目标数据库中的对象具有 DELETE 权限。 若要重置 IDENTITY 表上的列,必须拥有该表,或者必须是 db_ownerdb_ddladmin 角色的成员。

用于比较架构和数据的权限

您必须具有以下权限才能比较架构或数据。

Action 所需的权限
比较两个数据库的架构 必须具有从数据库导入对象和设置的权限,如 创建或部署数据库的权限中所述。
比较数据库和数据库项目的架构 必须具有从数据库导入对象和设置的权限,如 创建或部署数据库的权限中所述。 还必须具有在 Visual Studio 中打开的数据库项目。
将更新写入目标数据库 必须具有将更新部署到目标数据库的权限,如 创建或部署数据库的权限中所述。
比较两个数据库的数据 除了比较两个数据库模式所需的权限外,还需要对要比较的所有表拥有 SELECT 权限。 你还需要VIEW DATABASE STATE权限。

运行 Transact-SQL 编辑器的权限

您的执行上下文对目标数据库确定了您可以在 Transact-SQL 编辑器中执行的操作。

SQL Server CLR 项目的权限

下表列出了必须部署或调试公共语言运行时 (CLR) 项目的权限。

Action 所需的权限
部署安全权限集程序集(最初或增量部署) db_DDLAdmin权限授予CREATEALTER你部署的程序集和对象类型的权限。

部署需要数据库级 VIEW DEFINITION 权限。

数据库级 CONNECT 权限授予连接到数据库的能力。
部署用于外部访问的权限集程序集 db_DDLAdmin权限授予CREATEALTER你部署的程序集和对象类型的权限。

部署需要数据库级 VIEW DEFINITION 权限。

数据库级 CONNECT 权限授予连接到数据库的能力。

还必须将 TRUSTWORTHY 数据库选项设置为 ON

用于部署的登录账户必须具有 外部访问程序集 服务器权限。
部署非安全权限集程序集 db_DDLAdmin权限授予CREATEALTER你部署的程序集和对象类型的权限。

部署需要数据库级 VIEW DEFINITION 权限。

数据库级 CONNECT 权限授予连接到数据库的能力。

还必须将 TRUSTWORTHY 数据库选项设置为 ON

用于部署的登录名必须具有 不安全程序集 服务器权限。
远程调试 SQL CLR 程序集 必须具有 sysadmin 固定角色权限。

重要

在所有情况下,程序集所有者必须是用于部署程序集的用户,或者所有者必须是该用户所属的角色。 该要求还适用于您部署的程序集引用的任何程序集。