SqlBulkCopy 登录失败

dav*_*hay 4 sql-server

SqlBulkCopy在使用 SQL Server 身份验证时遇到命令问题。Windows 身份验证不会出现此问题。

SqlBulkCopy sbc = new SqlBulkCopy(sqConn.ConnectionString, SqlBulkCopyOptions.KeepIdentity);
Run Code Online (Sandbox Code Playgroud)

这会引发错误:

用户 'xx' 登录失败

代码:

SqlBulkCopy sbc = new SqlBulkCopy(sqConn);
Run Code Online (Sandbox Code Playgroud)

这工作正常,但不会保留标识列的原始值。

小智 6

"persist security info=true"在连接字符串中是必需的。否则,sqlConn.ConnectionString如果连接已经打开,密码将被删除。


dav*_*hay 3

解决方案非常简单,但我仍然有兴趣知道为什么 SQL Server 身份验证应该与 Windows 身份验证不同。

   using (SqlTransaction transaction =
                sqConn.BeginTransaction())
            {

                SqlBulkCopy sbc = new SqlBulkCopy(sqConn,SqlBulkCopyOptions.KeepIdentity,transaction);
                sbc.DestinationTableName = file;
                sbc.BatchSize = 1000;
                sbc.NotifyAfter = 1000;
                sbc.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
                sbc.WriteToServer(SourceTable);
                transaction.Commit();
            }
Run Code Online (Sandbox Code Playgroud)