首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlBulkCopy登录失败

SqlBulkCopy登录失败
EN

Stack Overflow用户
提问于 2016-11-24 07:01:00
回答 4查看 2.8K关注 0票数 5

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

代码语言:javascript
复制
SqlBulkCopy sbc = new SqlBulkCopy(sqConn.ConnectionString, SqlBulkCopyOptions.KeepIdentity);

这会引发一个错误:

用户“xx”登录失败

代码:

代码语言:javascript
复制
SqlBulkCopy sbc = new SqlBulkCopy(sqConn);

这很好,但不保留标识列的原始值。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-11-24 07:26:01

解决方案非常简单,但我仍然感兴趣的是,为什么SQL server身份验证应该与Windows身份验证不同。

代码语言:javascript
复制
   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();
            }
票数 3
EN

Stack Overflow用户

发布于 2018-11-02 10:24:08

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

票数 8
EN

Stack Overflow用户

发布于 2019-09-13 12:56:19

,试试看,它对我有用,

代码语言:javascript
复制
private static void BulkInsert(DataTable dtExcel, SqlConnection con)
        {
            try
            {
                {
                    if (con.State == ConnectionState.Closed)
                        con.Open();
                    var sqlTransactionScope = con.BeginTransaction();

                    //Open bulkcopy connection.
                    using (SqlBulkCopy bulkcopy = new SqlBulkCopy(con, SqlBulkCopyOptions.Default, sqlTransactionScope))
                    {
                        //Set destination table name
                        bulkcopy.BulkCopyTimeout = 0;
                        bulkcopy.BatchSize = 1000;
                        bulkcopy.DestinationTableName = "[dbo].[cc_alertowner]";

                        try
                        {

                            foreach (DataColumn col in dtExcel.Columns)
                            {
                                bulkcopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping(col.ColumnName, col.ColumnName));
                            }
                            // bulkcopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("", ""));
                            // bulkcopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("DateCreated", "DateCreated"));

                            if (con.State == ConnectionState.Closed)
                                con.Open();

                            bulkcopy.WriteToServer(dtExcel);
                            sqlTransactionScope.Commit();
                        }
                        catch (Exception ex)
                        {
                            sqlTransactionScope.Rollback();
                            throw;
                        }
                    }
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40779868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档