【问题标题】:How to use SqlBulkCopy with SMO and transactions如何将 SqlBulkCopy 与 SMO 和事务一起使用
【发布时间】:2011-08-20 01:17:47
【问题描述】:

我正在尝试使用 SMO 创建一个表,并进一步使用 SqlBulkCopy 对象将一堆数据注入到该表中。我可以在不使用这样的事务的情况下做到这一点:-

Server server = new Server(new ServerConnection(new SqlConnection(connectionString)));
var database = server.Databases["MyDatabase"];

using (SqlConnection connection = server.ConnectionContext.SqlConnectionObject)
{
    try
    {
        connection.Open();
        Table table = new Table(database, "MyNewTable");
        // --- Create the table and its columns --- //

        SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connection);
        sqlBulkCopy.DestinationTableName = "MyNewTable";
        sqlBulkCopy.WriteToServer(dataTable);
    }
    catch (Exception)
    {
        throw;
    }
}

基本上,我想使用 SqlTransaction 对象执行上述操作,并在操作完成时提交它(或者如果失败则回滚)。 有人可以帮忙吗?

【问题讨论】:

    标签: c# sql smo


    【解决方案1】:

    两件事-

    A - The SQLBulkCopy method is already transaction based by default。这意味着副本本身被封装在一个事务中,并且作为一个单元工作失败。

    B - The ServerConnection object has methods for StartTransaction, CommitTransaction, RollbackTransaction.

    您应该能够在上面的代码中使用这些方法,但我怀疑如果表创建存在问题,您的 try/catch 会妥善处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多