当前位置:  开发笔记 > 数据库 > 正文

源列"PAT_NUM_ADT"的区域设置ID"0"和目标列"PAT_ID_OLD"的区域设置ID"1033"不匹配

如何解决《源列"PAT_NUM_ADT"的区域设置ID"0"和目标列"PAT_ID_OLD"的区域设置ID"1033"不匹配》经验,为你挑选了3个好方法。

当我使用和另一个表名进行批量插入select * from [table_name],我收到此错误:

the locale id '0' of the source column 'PAT_NUM_ADT' and the locale id '1033' 
of the destination column 'PAT_ID_OLD' do not match

我尝试重置我的数据库排序规则,但这没有帮助.

有没有人见过这个错误?



1> Brett..:

批量复制某些数据时,我只是收到此错误消息.虽然它可能不是你遇到的完全相同的问题,但我得到了同样的错误.

具体来说,我正在执行以下操作:SELECT NULL AS ColumnName ...

目的地是一个可以为空的varchar(3).

在这种情况下,我需要做的就是更新我的select语句,如下所示:SELECT CONVERT(VARCHAR(3),NULL)AS ColumnName ...

这完美地工作,错误消息消失了!



2> 小智..:

如果从一个表复制少于一整套字段到另一个表,无论该表是在世界上的另一个域上,还是在同一个数据库中并置,您只需按顺序选择它们.SqlBulkCopyColumnMappings不起作用.是的,我试过了.我使用了所有四种可能的构造函数,并将它们用作SqlBulkCopyMapping对象,并且只是向SqlBulkCopy.ColumnMappings.Add的Add方法提供相同的信息.

我的列名称相同.如果您使用的是其他名称以及不同的订单,您可能会发现必须实际重命名列.祝好运.


看来SqlBulkCopy正在接受一个I​​DataReader,但检查它是否是一个SqlDataReader并专门处理它.如果您创建一个仅将IDataReader接口调用转发到底层SqlDataReader的包装器/装饰器类,则一切正常.

3> 小智..:

当我们使用SqlBulkCopy时,有时它会给出错误,这是在使用SqlBulkCopy时映射列的最佳方法.

我以前的代码:

SqlConnectionStringBuilder cb = new SqlConnectionStringBuilder("Data Source=ServerName;User Id=userid;Password=****;Initial Catalog=Deepak; Pooling=true; Max pool size=200; Min pool size=0");

        SqlConnection con = new SqlConnection(cb.ConnectionString);

        SqlCommand cmd = new SqlCommand("select Name,Class,Section,RollNo from Student", con);

        con.Open();

        SqlDataReader rdr = cmd.ExecuteReader();

        SqlBulkCopy sbc = new SqlBulkCopy("Data Source=DestinationServer;User Id=destinationserveruserid;Password=******;Initial Catalog=DeepakTransfer; Pooling=true; Max pool size=200; Min pool size=0");

        sbc.DestinationTableName = "StudentTrans";


        sbc.WriteToServer(rdr);


        sbc.Close();
        rdr.Close();
        con.Close();

代码给出了错误:源列"RollNo"的区域设置ID"0"和目标列"Section"的区域设置ID"1033"不匹配.

列映射后,我的代码正在成功运行.

我修改的代码是:

SqlConnectionStringBuilder cb = new SqlConnectionStringBuilder("Data Source=ServerName;User Id=userid;Password=****;Initial Catalog=Deepak;");

        SqlConnection con = new SqlConnection(cb.ConnectionString);

        SqlCommand cmd = new SqlCommand("select Name,Class,Section,RollNo from Student", con);

        con.Open();

        SqlDataReader rdr = cmd.ExecuteReader();


        SqlBulkCopy sbc = new SqlBulkCopy("Data Source=DestinationServer;User Id=destinationserveruserid;Password=******;Initial Catalog=DeepakTransfer;");

        sbc.DestinationTableName = "StudentTrans";

        sbc.ColumnMappings.Add("Name", "Name");
        sbc.ColumnMappings.Add("Class", "Class");
        sbc.ColumnMappings.Add("Section", "Section");
        sbc.ColumnMappings.Add("RollNo", "RollNo");

        sbc.WriteToServer(rdr);
        sbc.Close();
        rdr.Close();
        con.Close();

此代码正在成功运行.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有