BCP - 导出命令期间的数据复制

时间:2017-11-10 13:17:36

标签: sql-server sql-server-2012 bcp xp-cmdshell

我有一个过程,用于将数据从表导出到.DAT文件。在它上面运行一个工作,每10分钟调用一次SP。 .DAT文件包含H =列名,B =表数据,T =处理的行数(.SIG文件将此附加到.DAT文件)。 以下是存储过程:

CREATE PROCEDURE [dbo].[Test_Export] @count2 VARCHAR(10)
AS 
BEGIN

    SET NOCOUNT ON;

    --Alerts_Balance
    DECLARE @bcp_sql VARCHAR(1000)
    DECLARE @filename VARCHAR(200), @count1 VARCHAR(10)=20000


    SET @filename = 'C:\Test'+'.DAT';

    SELECT @bcp_sql = 'bcp "SELECT ''H'',''Name'',''City'',''State'',''Country'' union all SELECT top  10 ''B'', [Name],[City],[State],[Country]  FROM Test_Table" queryout ' + @filename + ' -c -t, -T -S '+ @@servername

    EXEC master.sys.xp_cmdshell @bcp_sql

    SELECT @bcp_sql = 'bcp "SELECT ''T'', '+cast(IIF(cast(@count1 as int)>cast(@count2 as int), @count2+2, @count1+2) as varchar(10))+'" queryout '+ @filename + '.sig -c -t, -T -S '+ @@servername

    EXEC master.sys.xp_cmdshell @bcp_sql

    SELECT @bcp_sql = 'type ' + @filename + '.sig >> "' + @filename + '"'
    EXEC master.sys.xp_cmdshell @bcp_sql

    SELECT @bcp_sql = 'copy nul: ' + @filename + '.sig'
    EXEC master.sys.xp_cmdshell @bcp_sql


    EXEC (@bcp_sql);

    END

在.dat中使用正确的数据格式之前它工作正常。 从几天开始,有时.dat文件不包含" B" (正文)数据。有时SIG文件会在PROD环境中将.TAT文件附加T 2次。有时它也会提供正确的输出。此问题仅在PROD环境中出现 知道为什么会这样吗?

0 个答案:

没有答案