前几天在SQL Server 2008同步产品数据时,总是提示二进制文本被截断的错误,但是经过检查发现数据都符合格式要求。

百思不得其解,单独插入一条条数据则可以插入,但是批量导入则报错。

批量导入代码示例如下:

SELECT * into #product from 一系列的表关联

where 若干条件

...

insert into t_product

select * from #product

最后无奈之下改为用游标循环插入:

---使用游标测试插入过程
 DECLARE Prod_Cursor Cursor Local For
 SELECT ProdCode_SAP FROM #Product
 
 OPEN Prod_Cursor
 DECLARE @ProdCode_SAP nvarchar(20) 
 FETCH NEXT FROM Prod_Cursor INTO @ProdCode_SAP
 
 WHILE @@FETCH_STATUS=0
 BEGIN
  
  BEGIN TRY
  INSERT INTO t_Product(。。。)
    SELECT 。。。 FROM #Product 
    where ProdCode_SAP=@ProdCode_SAP
   END TRY
   BEGIN CATCH
    print @ProdCode_SAP
   END CATCH

IF EXISTS(SELECT 1 FROM  t_Identity WHERE TableName='t_Product')
  UPDATE  t_Identity SET CurrNo=@ProdID WHERE TableName='t_Product'
 else 
  。。。。

FETCH NEXT FROM Prod_Cursor INTO @ProdCode_SAP
  
 END
 
 CLOSE Prod_Cursor
 DEALLOCATE Prod_Cursor
 
 drop table #Product

可是让人意想不到的是既然解决了问题,但是为什么按照上面批量插入就不行,下面就可以呢?

原因目前还没有找到。。。

SQL Server 2008 批量插入数据时报错的更多相关文章

  1. 使用变量向SQL Server 2008中插入数据

    QT通过ODBC连接数据库SQL Server 2008,进行数据插入时遇到的问题: 先把数据存入变量中,如何使用变量进行插入?插入语句该怎么写? QSqlQuery query(db); query ...

  2. SQL Server TVPs 批量插入数据

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量 ...

  3. SQL SERVER 2008 R2 插入数据非常慢

    表是5字段int类型,第一个字段是主健,自增字段 表结构: id int  Uncheckedbillno bigint  Uncheckedopid int  Checkedbillopid int ...

  4. 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历

    原文:使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 常常遇到需要向SQL Server插入批量数据,然后在存储过程中对这些数据进行进一步处理的情况.存储过 ...

  5. 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历

    使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历   原文:使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 常常遇 ...

  6. mybatis批量插入oracle时报错:unique constraint (table name) violated

    mybatis批量插入oracle时报错:unique constraint (table name) violated,是因为插入的集合中有两条相同唯一约束的数据.

  7. [转]实战 SQL Server 2008 数据库误删除数据的恢复

    实战 SQL Server 2008 数据库误删除数据的恢复 关键字:SQL Server 2008, recover deleted records 今天有个朋友很着急地打电话给我,他用delete ...

  8. SQL Server 2008 数据库误删除数据的恢复

    原文:SQL Server 2008 数据库误删除数据的恢复 原文:http://www.cnblogs.com/dudu/archive/2011/10/15/sql_server_recover_ ...

  9. sql点滴38—SQL Server 2008和SQL Server 2008 R2导出数据的选项略有不同

    原文:sql点滴38—SQL Server 2008和SQL Server 2008 R2导出数据的选项略有不同 说明: 以前要将一个表中的数据导出为脚本,只有用存储过程.现在在SQL Server ...

随机推荐

  1. Generator & yield write in sync way

    Generator & yield write in sync way var p = new Promise(function(resolve, reject){ setTimeout(fu ...

  2. Linux01--文件管理,常用命令 权限管理

    一.Ø文件系统 1.Linux文件系统特点  • Linux文件系统为单根的树状结构  •文件系统根为”/”  •文件名大小写敏感,除了”/”都是可用字符文件名以”.”开始的为隐藏文件  •文件路径使 ...

  3. Hibernate防止SQL注入

    如果在查询字段中输入单引号"'",则会报错,这是因为输入的单引号和其他的sql组合在一起编程了一个新的sql,实际上这就是SQL注入漏洞,后来我在前台和后台都对输入的字符进行了判断 ...

  4. MSSQL 获取指定日期所在星期的第一天和最后一天日期 获取指定日期坐在月的第一天和最后一天

    ufn_GetWeekFirstAndEndDay    获取指定日期所在星期的第一天和最后一天日期 ALTER FUNCTION [dbo].[ufn_GetWeekFirstAndEndDay]( ...

  5. Ubuntu-升级linux软件源,安装vim/五笔

    重装linux后 软件都没了. 这些是要做的: (1):升级软件源 sudo gedit  /etc/apt/source.list 打开后ctrl c 下面的源 ##网易的源(163源,无论是不是教 ...

  6. hdu 4740

    题目链接 老虎左拐,老鼠右拐,碰到不能走的拐一次,如果还不能走就停下,自己走过的不能走,求相遇的坐标或-1 一个停下之后,另一个还可以走 #include <cstdio> #includ ...

  7. #include <stdint.h>

    stdint.h是c99中引进的一个标准C库的头文件. #include<stdio.h> #include<stdint.h> main() { /* 数据类型可以跨平台移植 ...

  8. 创建ORACLE 查询用户

    [apptest@vis appl]$ su -oravis [oravis@vis 11.1.0]$ sqlplus / as sysdba SQL> create user erpquery ...

  9. 介绍Foundation框架

    开始介绍Foundation框架.OC中的Foundation框架是系统提供了,他就相当于是系统的一套api,和Java中的一些系统jar很相似,又早起的一批人开发的,内部有很多现有的类和功能提供给我 ...

  10. C#委托,事件,匿名委托

    作为一个初学者,写下来是当做自己的学习笔记,希望在以后遇到问题的时候能够快速的找到方法 如果能帮助跟我一样的新人是更好不过的了        如果有什么不正确或者可以改进的地方也希望大家能够指出来  ...