Touch the future...

无法从链接服务器 "(null)" 的 OLE DB 访问接口"BULK"提取行

上一篇 / 下一篇  2008-02-26 08:56:29 / 个人分类:SQL Server 2005

代码如下,当使用文档1时没有错误发生,使用文档2时提示出错:

/*

   Author: Jason

   Email: hireats-bbs@yahoo.com.cn

   CDT: 2008-02-25

   UDT: 2008-02-25

   

==Note==

 

 

*/

/*

--dbo.sp_ATE_BI_bulkInsertData

--导入指定数据文件中的数据到指定表,操作成功时返回NULL,否则返回错误信息。

   Parameters:

   1.@para_tableName VARCHAR(100) $表名。

   2.@para_filePath VARCHAR(300) $数据文件的路径。

*/

IFOBJECT_ID('sp_ATE_BI_bulkInsertData','P')ISNOTNULL

   DROPPROCEDUREdbo.sp_ATE_BI_bulkInsertData;

GO

CREATEPROCEDUREdbo.sp_ATE_BI_bulkInsertData

   @para_tableNameVARCHAR(100),

   @para_filePathVARCHAR(300),

   @para_errorMessageVARCHAR(MAX)OUTPUT

AS

   DECLARE@cmdNVARCHAR(MAX);

   SET@cmd=N'BULK INSERT @para_tableName

      FROM ''@para_filePath''

      WITH

      (

          DATAFILETYPE = ''char'',

          FIELDTERMINATOR = '' '',

          MAXERRORS = 0

      );';

   SET@cmd=REPLACE(@cmd,'@para_tableName',@para_tableName);

   SET@cmd=REPLACE(@cmd,'@para_filePath',@para_filePath);

   --action with trancation

   BEGINTRANtran_sp_ATE_BI_bulkInsertData

   BEGINTRY

      EXECsp_executesql@cmd;

      COMMITTRANtran_sp_ATE_BI_bulkInsertData;

   ENDTRY

   BEGINCATCH

   BEGIN

      ROLLBACKTRANtran_sp_ATE_BI_bulkInsertData;

      PRINTN'Error occured<'+ERROR_MESSAGE()+ N'>, trancation has been rollbacked!';

      SET@para_errorMessage=ERROR_MESSAGE();

   END

   ENDCATCH

   

RETURN

GO

 

 

--单元测试dbo.sp_ATE_BI_bulkInsertData

--

/*

   ......

*/

PRINTN'Start unit test<dbo.sp_ATE_BI_bulkInsertData>:';

 

IFOBJECT_ID('TempDB..#tbl_tmp_bulkInsert','U')ISNOTNULL

   DELETEFROM#tbl_tmp_bulkInsert;

ELSE

   CREATETABLE#tbl_tmp_bulkInsert(

      [ID]INTNOTNULL,

      [name]VARCHAR(20)NOTNULL

   );

GO

 

 

DECLARE@tableNameVARCHAR(100),@filePathVARCHAR(300),@errorMessageVARCHAR(MAX);

SET@tableName=N'#tbl_tmp_bulkInsert';

SET@filePath=N'E:\Temp\bulkInsertData.txt';

 

EXECdbo.sp_ATE_BI_bulkInsertData @tableName,@filePath,@errorMessageOUTPUT;

 

PRINTN'Unit test<dbo.sp_ATE_BI_bulkInsertData> complete!';

   

 

附:

文档1内容:

 

1 Area

2 Box

3 Hero

4 Triger

 

        结果:

Start unit test<dbo.sp_ATE_BI_bulkInsertData>:

 

(0行受影响)

 

(4行受影响)

Unit test<dbo.sp_ATE_BI_bulkInsertData> complete!

 

文档2内容:

 

1 Area

2 Box

3A Hero

4 Triger 

 

结果:

Start unit test<dbo.sp_ATE_BI_bulkInsertData>:

 

(4行受影响)

Error occured<无法从链接服务器"(null)"OLE DB访问接口"BULK"提取行。>, trancation has been rollbacked!

Unit test<dbo.sp_ATE_BI_bulkInsertData> complete!

 


TAG: ole db bulk inksert

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-07-07  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 534
  • 日志数: 24
  • 文件数: 1
  • 书签数: 18
  • 建立时间: 2008-01-08
  • 更新时间: 2008-06-18

RSS订阅

Open Toolbar