当我使用和另一个表名进行批量插入时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
我尝试重置我的数据库排序规则,但这没有帮助.
有没有人见过这个错误?
批量复制某些数据时,我只是收到此错误消息.虽然它可能不是你遇到的完全相同的问题,但我得到了同样的错误.
具体来说,我正在执行以下操作:SELECT NULL AS ColumnName ...
目的地是一个可以为空的varchar(3).
在这种情况下,我需要做的就是更新我的select语句,如下所示:SELECT CONVERT(VARCHAR(3),NULL)AS ColumnName ...
这完美地工作,错误消息消失了!
如果从一个表复制少于一整套字段到另一个表,无论该表是在世界上的另一个域上,还是在同一个数据库中并置,您只需按顺序选择它们.SqlBulkCopyColumnMappings不起作用.是的,我试过了.我使用了所有四种可能的构造函数,并将它们用作SqlBulkCopyMapping对象,并且只是向SqlBulkCopy.ColumnMappings.Add的Add方法提供相同的信息.
我的列名称相同.如果您使用的是其他名称以及不同的订单,您可能会发现必须实际重命名列.祝好运.
当我们使用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();
此代码正在成功运行.