修复:在 SQL Server 2012 中运行 SSIS 包时出现错误消息:"在对象'xp_regread'上拒绝执行权限"

Template: Generic Hotfix

BUG #: 170218 (Content Maintenance) VSTS: 959980

微软将微软 SQL Server 2012 修补程序分发为一个可下载的文件。由于修补程序是累积的,因此每个新版本都包含以前的 SQL Server 2012 修复版本中包含的所有修补程序和所有安全修补程序。

症状

在 Microsoft SQL Server 2012 环境中运行 SSIS 包时,可能会收到类似于以下内容的错误消息:

以用户身份执行的消息:DOMAIN|用户.微软 (R) SQL 服务器执行包实用程序版本 11.0.2100.60 64 位版权 (C) 微软公司。保留所有权利。已启动:由于错误 0x80131904,无法执行 IS 服务器包。服务器:服务器名称, 包路径: [SSISDB]文件夹_包.dtsx, 环境参考 ID: NULL。说明:在对象"xp_regread"、数据库"mssqlsystemresource"、架构"sys"上,EXECUTE权限被拒绝。来源: .Net SqlClient 数据提供程序已启动: 10:00:00 PM 已完成:10:00:01 PM 已通过: 0.093 秒。包执行失败。步骤失败。

原因

由于集成服务执行存储在 SQL Server 2012 环境中的 SSISDB 中的包的方式,会出现此问题。

解决方案

累积更新信息

SQL Server 2012 服务包 1 的累积更新包 1

此问题的修复程序首次在累积更新 1 中发布。有关如何获取 SQL Server 2012 服务包 1 的此累积更新包的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:

2765331 SQL Server 2012 服务包 1 的累积更新包 1备注由于生成是累积的,因此每个新修补程序版本都包含以前的 SQL Server 2012 修复版本中包含的所有修补程序和所有安全修补程序。我们建议您考虑应用包含此修补程序的最新修复版本。有关详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:

2772858 SQL Server 2012 版本发布后 SQL Server 2012 服务包 1 发布

SQL Server 2012 的累积更新包 3

此问题的修复程序首次在累积更新 3 中发布。有关如何获取 SQL Server 2012 的此累积更新包的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:

2723749 SQL Server 2012 的累积更新 3备注由于生成是累积的,因此每个新修补程序版本都包含以前的 SQL Server 2012 修复版本中包含的所有修补程序和所有安全修补程序。我们建议您考虑应用包含此修补程序的最新修复版本。有关详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:

2692828 SQL Server 2012 发布后发布的 SQL Server 2012 版本

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

Workaround

To work around this issue, manually grant permissions to the account that executes the SSIS package. To do this, execute the following statement:

GRANT EXECUTE ON sys.xp_regread TO [Domain\Username]


In SQL Server 2012, the [SSISDB].[catalog].[create_execution] stored procedure creates the following registry key to determine whether the operating system is a 32-bit (x86) system or a 64-bit (x64) system. Then, the stored procedure uses the resulting information to run the following matching ISExec.exe process to host the package for runtime:

EXEC master..xp_regread 'HKEY_LOCAL_MACHINE',

'System\CurrentControlSet\Control\Session Manager\Environment',

'PROCESSOR_ARCHITECTURE';



To view the public permissions on the sys.xp_regread stored procedure, execute the following statements:

SELECT grantee_principal.name AS [Grantee], prmssn.permission_name 
FROM sys.all_objects AS theobject
INNER JOIN sys.database_permissions AS prmssn ON prmssn.major_id=theobject.object_id AND
prmssn.minor_id=0 AND prmssn.class=1
INNER JOIN sys.database_principals AS grantee_principal ON grantee_principal.principal_id = prmssn.grantee_principal_id
WHERE (theobject.type='X') and (theobject.name=N'xp_regread' and
SCHEMA_NAME(theobject.schema_id)=N'sys')

参考

有关详细信息,SQL Server 的增量服务模型,请单击以下文章编号以查看 Microsoft 知识库中的文章:

935897 SQL Server 团队提供增量服务模型,可为报告的问题提供修补程序有关 SQL Server 更新的命名架构的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:

822499微软 SQL Server 软件更新包的命名架构有关软件更新术语的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:

824684 用于描述 Microsoft 软件更新的标准术语的说明

Author: jasonh; jannaw
Writer: v-fismao; v-jayc
Tech Reviewer: jasonh; jannaw; sqlprev
Editor: v-anwale

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×