SqlBulkCopy失败,将KeepIdentity设置为true

时间:2018-10-19 15:21:19

标签: c# sql-server sqlbulkcopy

我正在使用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;
                    }

1 个答案:

答案 0 :(得分:0)

当我使用SA帐户时,这是一个权限问题,必须加以调整。