执行 Visual Studio 的数据库功能所需的权限

在能够对 Visual Studio 中的数据库执行操作之前,必须使用对该数据库具有特定权限的帐户登录。 所需的特定权限随要执行的操作的不同而有所不同。 以下几节介绍可能需要执行的每项操作以及执行该操作所需的特定权限。

  • 创建或部署数据库的权限

  • 重构数据库的权限

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

  • 生成数据的权限

  • 比较架构和数据的权限

  • 运行 Transact-SQL (T-SQL) 编辑器的权限

  • 针对 SQL Server 公共语言运行时 (SQL CLR) 项目的权限

创建或部署数据库的权限

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

操作

所需权限

导入数据库对象和设置

您必须能够连接到源数据库。

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

  • 如果源数据库基于 SQL Server 2008,您还必须对每个对象都拥有 VIEW DEFINITION 权限。 您的登录必须具有 VIEW SERVER STATE 权限(针对数据库加密密钥)。

导入服务器对象和设置

您必须能够连接到指定服务器上的“master”数据库。

  • 如果服务器运行的是 SQL Server 2005,则您必须对服务器拥有 VIEW ANY DEFINITION 权限。

  • 如果源数据库基于 SQL Server 2008,则您必须对服务器拥有 VIEW ANY DEFINITION 权限。 您的登录必须具有 VIEW SERVER STATE 权限(针对数据库加密密钥)。

创建或更新数据库项目

您不需要任何数据库权限即可创建或修改数据库项目。

部署新数据库或使用“始终重新创建数据库”选项集进行部署

您必须拥有 CREATE DATABASE 权限或者是目标服务器上的 dbcreator 角色的成员。

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

USE [model]
CREATE USER yourUser FROM LOGIN yourLogin

用户(在此示例中为 yourUser)必须具有对模型数据库的 CONNECT 和 VIEW DEFINITION 权限。 如果您拥有 sysadmin 权限,则可以通过发出以下 Transact-SQL 语句来授予这些权限:

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

如果您要部署一个包含未命名约束的数据库,并且“CheckNewContraints”选项处于启用状态(此选项默认情况下是启用的),则必须具有 db_owner 或 sysadmin 权限,否则部署将会失败。 这一原则仅适用于未命名约束。 有关“CheckNewConstraints”选项的更多信息,请参见数据库项目设置概述

部署对现有数据库的更新

您必须是有效的数据库用户。 此外,您在目标数据库上还必须是 db_ddladmin 角色的成员、拥有架构或拥有要创建或修改的对象。 若要在预先部署或后期部署脚本中处理更高级的概念(例如,登录或链接服务器),您还需要拥有其他权限。

重要说明重要事项
如果部署到 Master 数据库,您还必须对要部署到的服务器拥有 VIEW ANY DEFINITION 权限。

在数据库项目中使用带有 EXTERNAL_ACCESS 选项的程序集

您必须设置数据库项目的 TRUSTWORTHY 属性。 此外,您必须拥有 EXTERNAL ACCESS ASSEMBLY 权限才能进行 SQL Server 登录。

将程序集部署到新数据库或现有数据库

您必须是目标部署服务器上的 sysadmin 角色的成员。

有关更多信息,请参见 SQL Server 2005 联机丛书或 SQL Server 2008 联机丛书

重构数据库的权限

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

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

您必须拥有下列权限才能对数据库执行单元测试。

操作

所需权限

执行测试操作

您必须使用执行上下文数据库连接。 有关更多信息,请参见连接字符串和权限概述

执行预先测试或后期测试操作

您必须使用特权上下文数据库连接。 此数据库连接比执行上下文连接拥有更多权限。

运行 TestInitialize 和 TestCleanup 脚本

您必须使用特权上下文数据库连接。

在运行测试前部署数据库更改

您必须使用特权上下文数据库连接。 有关更多信息,请参见如何:配置数据库单元测试执行

在运行测试前生成数据

您必须使用特权上下文数据库连接。 有关更多信息,请参见如何:配置数据库单元测试执行

生成数据的权限

您必须对目标数据库中的对象拥有 INSERT 和 SELECT 权限,才能使用数据生成器生成测试数据。 如果您在生成数据之前先清除数据,则还必须对目标数据库中的对象拥有 DELETE 权限。 若要重置某个表中的 IDENTITY 列,您必须拥有此表,或者您必须是 db_owner 或 db_ddladmin 角色的成员。

比较架构和数据的权限

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

操作

所需权限

比较两个数据库的架构

您必须拥有从数据库中导入对象和设置的权限,如创建或部署数据库的权限中所述。

比较数据库和数据库项目的架构

您必须拥有从数据库中导入对象和设置的权限,如创建或部署数据库的权限中所述。 您还必须在 Visual Studio 中打开数据库项目。

将更新写入目标数据库

您必须拥有将更新部署到目标数据库的权限,如创建或部署数据库的权限中所述。

比较两个数据库的数据

除需拥有比较两个数据库的架构所需的权限外,您还需要对所有要比较的表拥有 SELECT 权限。

有关更多信息,请参见 Microsoft 网站上的以下网页:SQL Server 2008 联机丛书SQL Server 2005 联机丛书

运行 Transact-SQL 编辑器的权限

您可以在 Transact-SQL 编辑器中执行的操作取决于您的目标数据库执行上下文。

针对 SQL Server 公共语言运行时 (SQL CLR) 项目的权限

下表列出了部署或调试 SQL CLR 项目所需的权限:

操作

所需权限

部署(初始或增量)安全权限集程序集

  • db_DDLAdmin - 此权限向您授予对部署的程序集和对象类型的 CREATE 和 ALTER 权限

  • 数据库级别的 VIEW DEFINITION 权限 - 进行部署所必需的

  • 数据库级别的 CONNECT 权限 - 授予连接到数据库的能力

部署 external_access 权限集程序集

  • db_DDLAdmin - 此权限向您授予对部署的程序集和对象类型的 CREATE 和 ALTER 权限

  • 数据库级别的 VIEW DEFINITION 权限 - 进行部署所必需的

  • 数据库级别的 CONNECT 权限 - 授予连接到数据库的能力

此外,还必须满足以下条件:

  • TRUSTWORTHY 数据库选项设置为 ON

  • 您进行部署所用的登录名必须具有 EXTERNAL ACCESS ASSEMBLY 服务器权限。

部署 unsafe 权限集程序集

  • db_DDLAdmin - 此权限向您授予对部署的程序集和对象类型的 CREATE 和 ALTER 权限

  • 数据库级别的 VIEW DEFINITION 权限 - 进行部署所必需的

  • 数据库级别的 CONNECT 权限 - 授予连接到数据库的能力

此外,还必须满足以下条件:

  • TRUSTWORTHY 数据库选项设置为 ON

  • 您进行部署所用的登录名必须具有 Unsafe Assembly 服务器权限。

远程调试 SQL CLR 程序集

您必须具有 sysadmin 固定角色权限。

重要说明重要事项

在任何情况下,程序集所有者必须是用于部署程序集的用户,或所有者必须处于该用户为其成员的角色。 此要求也适用于由您部署的程序集引用的任何程序集。

请参见

概念

在 Visual Studio 中创建和管理数据库和数据层应用程序

开始数据库的团队开发