我有一个过程,用于将数据从表导出到.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环境中出现 知道为什么会这样吗?