【问题标题】:"Timeout expired" when executing Copy Database Wizard package执行复制数据库向导包时出现“超时”
【发布时间】:2012-12-20 15:44:32
【问题描述】:

我全新安装了 SQL Server 2012。我通过 SSMS 中的复制数据库向导从不同的服务器复制数据库,并将其保存为包。我尝试将其作为作业运行,但失败并出现以下错误:

作业失败。作业由用户 user 调用。最后运行的步骤是步骤 1 (CDW_test_Step)。

我尝试使用 Execute Package Utility 执行包,只是为了看看它是否可以这样工作,但收到以下错误:

传输数据时发生错误。有关详细信息,请参阅内部异常......超时已过期。超时时间已过,直到操作完成或服务器没有响应。创建数据库失败...

我确保包正在使用所有者的同一帐户执行。

我用 TSQL 创建了一个简单的作业,而不是 SSIS 包,它执行得很好。

感谢任何帮助。

更新:

我查看了事件日志,发现其中有几个:

应用程序特定的权限设置不授予具有 CLSID 的 COM 服务器应用程序的本地激活权限 {FDC3723D-1588-4BA3-92D4-42C430735D7D} 和APPID {83B33982-693D-4824-B42E-7196AE61BB05} 从地址 LocalHost(使用 LRPC)到用户 NT SERVICE\SQLSERVERAGENT SID (S-1-5-80-344959196-2060754871-2302487193-2804545603-1466107430)。可以使用组件服务管理工具修改此安全权限。

【问题讨论】:

    标签: sql-server ssis sql-server-2012


    【解决方案1】:

    这是一个奇怪的错误,因为 SQL Server 代理服务帐户没有对 Integration Services DCOM 对象的权限。

    解决此问题的两种方法:

    1:/ 以在本地服务器上具有管理员权限的用户身份运行 SQL 代理服务,管理员始终拥有 DCOM 权限(可能不是最好的主意)

    2:/

    点击开始->运行然后输入dcomcnfg打开组件服务工具

    通过组件服务导航 -> 计算机 -> 我的电脑 -> DCOM 配置

    找到 Microsoft SQL Server Integration Services 11.0,右键单击并选择属性

    单击安全选项卡,然后在“启动和激活权限”下单击编辑

    添加 NT SERVICE\SQLSERVERAGENT 并授予它本地启动和激活权限

    再次尝试导入

    【讨论】:

    • 当您尝试使用向导时,您仍然在事件日志中收到 DCOM 错误?如果是这样,它与日志中引用的用户和 DCOM 应用程序相同吗?
    • 我很抱歉 - 我现在没有收到最后一个 DCOM 错误,但我确实收到了 Timeout expired 错误。用户是 NT 服务/SQLSERVERAGENT。
    【解决方案2】:

    在咨询了了解这些内容的人后,我了解到问题可能是因为服务器是 2 个不同的版本(2008 年、2012 年)。

    相反,我手动创建了一次数据库对象(使用生成脚本),然后设置了一个运行导入的作业(通过导入/导出数据向导)。

    ..虽然使用这种方法我必须手动保持对象同步,这很痛苦(至少没有像 RedGate 这样的第 3 方软件)。

    【讨论】:

      【解决方案3】:

      查看bug report - SQL Server 2012 中的 SSISDB 数据库中有一个 sp,导致包在开始运行之前超时。当通过 DTExec 从我的调度工具调用多个(超过 10 个)包时,我收到错误消息“由于错误 0x80131904 导致执行 IS 服务器包失败”和“说明:操作失败,因为执行超时”。请在连接站点上为问题投票,以便 MS 可以发布官方修复。

      【讨论】:

        猜你喜欢
        • 2020-06-02
        • 1970-01-01
        • 2013-09-23
        • 2012-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        相关资源
        最近更新 更多