症状
请考虑以下情形:
您在 Microsoft SQL Server 2012 或 SQL Server 2014 中运行 Integration Services 目录和 SSISDB 目录的实例。
向 Windows 组成员授予权限,以便他们有权访问 SSIS 目录文件夹、项目或环境安全项。
注意 可以通过以下任一方式授予权限:
- 您使用 Management Studio。 为此,请右键单击 Integration Services 目录中的对象,选择 “属性”,然后在 “权限” 页上浏览到组,添加该组,然后选择该组的权限。
- 调用以下存储过程:
[SSISDB].[目录]。[grant_permission]
属于 Windows 组成员的 Windows 用户尝试使用 Management Studio 或存储过程查看和执行 Integration Services 目录中 SSISDB 数据库中的程序包。
在这种情况下,用户看不到被授予权限的包,也无法验证或运行这些包。
原因
出现此问题的原因是 SSISDB 内部视图中出现问题。 这会阻止用户在使用 Windows 组成员身份授予权限时具有预期的有效权限。
解决方法
此问题已首先在 SQL Server 的以下累积更新中修复。
SQL Server 2014 累积更新 1 /en-us/help/2931693
SQL Server 2012 SP1 累积更新 7 /en-us/help/2894115
关于 SQL Server 的累积更新
SQL Server 的每个新累积更新都包含上一个累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
解决方法
若要解决此问题,请勿使用各种用户的 Windows 组来访问 SSIS 安全文件。 相反,请使用 SQL Server 中用户定义的数据库角色来封装必要的 Windows 用户列表,然后将权限分配给该数据库角色。
解决方法步骤
请按以下步骤完成此操作:
为 SQL Server 的实例创建必要的 Windows 登录名,然后授予用户对 SSISDB 数据库的访问权限。 例如,可以通过转到 “安全”,单击“ 登录名”,然后单击“ 新建登录名”来使用 Management Studio。 或者,可以针对每个 Windows 用户登录使用以下脚本:
USE master
GO
CREATE LOGIN DOMAIN\USERNAME FROM WINDOWS WITH DEFAULT_DATABASE=master
GO
USE SSISDB
GO
CREATE USER 域\用户名 FOR 登录 域\用户名
GO在 SSISDB 数据库中,创建用户定义的数据库角色,例如 ssis_users。 例如,可以使用 Management Studio,方法是转到“数据库”,单击“SSISDB”、“安全性”,单击“角色”,单击“数据库角色”,然后单击“新建数据库角色”。 或者,可以使用以下脚本:
USE SSISDB
GO
创建角色 ssis_users
GO将 SSISDB 中所需的用户添加到角色ssis_users。 例如,可通过转到“数据库”、单击“SSISDB”、“安全性”、“角色”、“数据库角色”、“角色成员”,然后单击“添加”来使用 Management Studio。 或者,可以使用以下脚本:
USE SSISDB
GO
ALTER ROLE ssis_users 添加成员 域\用户名
GO右键单击 Integration Services 目录中的安全对象,单击 “属性”,单击“权限”页面上的“ 浏览 ”以将数据库角色添加到权限中,然后对所需的显式权限选择“ 授予” 或 “拒绝” ,如下所示:
注意 这些权限可能不足以成功执行 SSIS 包。 每个 SSIS 包都是自定义设计,可能对访问某些服务器和数据库或共享以成功验证或执行 SSIS 包有额外的特定要求。
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
参考资料
有关详细信息,请参阅 Microsoft Developer Network (MSDN) 网站上的以下主题:
SSIS 目录
“文件夹属性”对话框
“项目属性”对话框
“环境属性”对话框
请参阅 Microsoft 用于描述软件更新的术语。