SSIS:启用事务会导致数据库连接失败

时间:2013-04-02 18:05:54

标签: sql-server transactions ssis

我有一个包,用于将CSV文件中的记录加载到表中。它在控制流程中有三个要素:

  • 截断表
  • 将文件加载到表中
  • 验证加载后是否在表格上有记录或引发错误

这个想法是在包上有一个事务,所以如果元素的加载失败或者文件为空,那么回滚事务并且不会截断表。

要启用事务,我只需转到包属性并设置 TransactionOption = Required ,然后我尝试执行包并在尝试执行第一个元素时获取此错误(SQL任务试图截断表格:

  

[执行SQL任务]错误:无法获取连接“数据库   连接“。可能未正确配置连接,或者您可能没有   对此连接拥有正确的权限。

如果我只是返回并将包的TransactionOption属性更改为默认值(Supported),则包正确执行,但如果出现错误则无法回滚。

我正在使用ADO.NET连接到SQL Server数据库。

知道我做错了什么吗?这是使用交易的正确方法还是我错过了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

我知道这是一个古老的主题,但我遇到了和你一样的问题 - 包装工作正常,直到我将其中一个容器事务的选项设置为 TransactionOption =必需 据我所知,这可能与Microsoft分布式事务处理协调器(MSDTC)服务没有在SQL服务器上启动

当我遇到这个问题时,我检查了MSDTC是否在我运行包的机器上启动 - 它是。可悲的是,我无法访问SQL服务器来检查同样的事情。

但是,在运行包的机器上执行这些步骤解决了问题:

在Windows Server 2008和Windows Vista上:

  1. 点击开始,点击运行,然后输入 dcomcnfg 以启动组件服务管理控制台。

  2. 点击展开组件服务,然后点击展开计算机

  3. 单击以展开“我的电脑”,单击以展开分布式事务处理协调器,右键单击本地DTC ,然后单击属性

  4. 点击本地DTC属性对话框的安全标签。

  5. 在该对话框中,我必须启用" 网络DTC访问"还有" 允许入境"和" 允许出站"。

    来源:

    msdn forum about this

    msdn article about troubleshooting Problems with MSDTC