症状
请考虑以下情况:
-
在数据流任务中创建具有 SQL Server 目标组件的 SQL Server 2008 Integration Services R2 (SSIS)程序包。
-
尝试通过使用以下方法之一在系统上运行此程序包(例如,在 Windows Vista 或 Windows 7 中启用用户帐户控制):
-
商业智能开发工作室(投标)
-
SQL Server Management Studio (SSMS)对象资源管理器
-
DTExec.exe
-
DTExecUI.exe
-
在这种情况下,你可能会收到类似于以下内容之一的错误消息:
[SQL Server 目标]错误:无法为数据插入准备 SSIS 大容量插入。SSIS.管道] 错误:组件 "SQL Server 目标" 未通过预执行阶段,返回错误代码0xC0202071。 "无法批量复制数据。 您可能需要以管理员身份运行此程序包。
注意
-
如果你在操作系统安装期间创建的内置管理员帐户下运行程序包,则不会遇到这些错误。 但是,你将收到此消息给任何其他用户,包括本地管理员组的成员。
-
当你执行与 SQL Server 代理作业相同的 SSIS 包时,不会出现此问题。
-
仅在安装了 SQL 2008 Service Pack 2 (SP2)之后才会生成第二条错误消息。
原因
在启用了 UAC 的系统上会出现此问题。 当应用程序(如 SSIS)由管理员组成员的帐户启动时,它接收两个安全令牌:低权限令牌和提升权限令牌。 仅当在管理员帐户下使用 " 以管理员身份运行 " 选项显式运行应用程序时,才使用提升权限令牌。 默认情况下,SSIS 始终使用低权限令牌,这会在 SSIS 连接到 SQL Server 目标组件时导致失败。注意 使用不是本地管理员组成员的帐户时,不会显示 UAC。
解决方案
SQL Server 2008 R2 的 Service pack 信息
若要解决此问题,请获取最新的 SQL Server 2008 R2 服务包。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2527041 如何获取最新的 SQL Server 2008 R2 服务包
状态
Microsoft 已确认这是 "适用于" 部分中列出的 Microsoft 产品中的问题。此问题首先在 sql server 2008 R2 Service Pack 1 for SQL Server 2008 R2 中更正。
解决方法
若要解决此问题,请使用以下方法之一:
-
如果你从 SSMS (来自出价)或从 DTExecUI 运行程序包,请从管理员帐户启动这些工具。 若要执行此操作,请单击 " 开始",指向 " 所有程序",指向 " sql Server 2005 " 或 " sql server 2008",右键单击所使用的工具,然后单击 " 以管理员身份运行"。 这将使用内置管理员帐户的提升权限启动应用程序,并且程序包成功执行。 同样,如果使用 DTExec 运行程序包,请从提升的命令提示符启动它。 若要执行此操作,请依次单击 " 开始"、" 所有程序"、" 附件"、右键单击 " 命令提示符",然后单击 "以 管理员身份运行"。注意 如果您不以管理员身份登录计算机,系统将提示您提供管理员帐户。 在 "响应" 框中,在 " 用户帐户控制 " 对话框中键入管理员用户名和密码,然后单击 "确定"。
-
通过指向同一 SQL Server 连接管理器的 OLE DB 目标组件,替换失败的数据流任务中的 SQL Server 目标组件。
-
向该帐户分配 " 创建全局对象 " 权限后,使用不是本地管理员组成员的帐户。 为此,请按照下列步骤操作:
-
单击 " 开始",指向 " 管理工具",然后单击 "本地 安全策略"。
-
展开 " 本地策略",然后单击 " 用户权限分配"。
-
在 "详细信息" 窗格中,双击 " 创建全局对象"。
-
在 " 本地安全策略设置 " 对话框中,单击 " 添加"。
-
在 " 选择用户或组 " 对话框中,单击要添加的用户帐户,单击 " 添加",然后单击 "确定" 两次。
-