我正在使用SqlBulkCopy将所有数据从一台服务器移动到另一台服务器,我需要保留源中的标识值。当我设置KeepIdentity时,源表和目标表都是同一模式,它将失败。我读到SqlBulkCopy应该先打开Identity_insert,然后再关闭,我也尝试在代码中做到这一点,但一直失败。当我删除KeepIdentity时,它会增加ID,因此我知道代码是正确的。
异常找不到对象\“ dbo.GuidelineLog \”,因为它不存在或您没有权限。“
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity))
{
bulkCopy.DestinationTableName = "Log";
bulkCopy.ColumnMappings.Clear();
bulkCopy.ColumnMappings.Add("ID", "ID");
bulk
// How many Rows you want to insert at a time
//bulkCopy.BatchSize = 100000;
bulkCopy.BatchSize = 500;
// Set the timeout.
bulkCopy.BulkCopyTimeout = 0;
bulkCopy.SqlRowsCopied +=
new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
bulkCopy.NotifyAfter = 4500;
//( 2093,000 row(s) affected)
//Always stopping at 2093,000
try
{
// INSERT only if row doesn't exist in the destination
//bulkCopy.InsertIfNotExists = true;
// Write from the source to the destination.
bulkCopy.WriteToServer(reader);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
{0}", ex.Message));
return false;
}
答案 0 :(得分:0)
当我使用SA帐户时,这是一个权限问题,必须加以调整。