gpt4 book ai didi

c# - 如何将 SqlBulkCopy 与 SMO 和事务一起使用

转载 作者:行者123 更新时间:2023-11-30 22:39:01 25 4
gpt4 key购买 nike

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

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 对象执行上述操作,并在操作完成时提交它(如果失败则回滚)。谁能帮忙?

最佳答案

2 件事 -

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

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

您应该能够在上面的代码中使用这些方法,但我怀疑如果表创建有问题,您的 try/catch 将适本地处理它。

关于c# - 如何将 SqlBulkCopy 与 SMO 和事务一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5909541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com