我正在尝试使用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对象执行上述操作并在操作完成时提交它(如果失败则将其回滚)。 有人可以帮忙吗?
答案 0 :(得分:3)
2件事 -
A - The SQLBulkCopy method is already transaction based by default。这意味着副本本身封装在一个事务中,并作为一个单元失败。
您应该可以在上面的代码中使用这些方法,但我怀疑如果创建表格存在问题,try/catch
会正确处理。