sql-server-2005 - 运行过程时,BCP函数序列错误

  显示原文与译文双语对照的内容
0 0

在创建存储过程的过程中,我一直试图创建一个使用动态SQL来将数据从参数化存储过程导出到csv文件的存储过程。

最初获取的主机数据文件访问问题我认为是 文件系统 权限。

在运行过程时,consistantly会得到fillowing错误:

sql [SQL Server Native Client 10.0 ] = S1010,NativeError = 0错误= [Microsoft] 函数序列错误

过程代码如下所示:


ALTER PROCEDURE [dbo].[sp_MakeMarketingListExports] 
 @includeInService varchar(1) = NULL,
 @includeMLM varchar(1) = NULL,
 @includeQuoteNoodle varchar(1) = NULL,
 @netective varchar(1) = NULL,
 @cyberChex varchar(1) = NULL,
 @agentsAdvantage varchar(1) = NULL,
 @quoteNoodle varchar(1) = NULL,
 @mlmListSubscriber varchar(1) = NULL,
 @state varchar(10) = NULL,
 @mailerID varchar(10) = NULL,
 @filePath varchar(250)
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

 DECLARE @command varchar(500);

 SET @command = 'bcp"exec InternalML..sp_SelectMarketingListMembers '
 + '@includeInService = ' + COALESCE(@includeInService, 'NULL') + ', '
 + '@includeMLM = ' + COALESCE(@includeMLM, 'NULL') + ', '
 + '@includeQuoteNoodle = ' + COALESCE(@includeQuoteNoodle, 'NULL') + ', '
 + '@netective = ' + COALESCE(@netective, 'NULL') + ', '
 + '@cyberChex = ' + COALESCE(@cyberChex, 'NULL') + ', '
 + '@agentsAdvantage = ' + COALESCE(@agentsAdvantage, 'NULL') + ', '
 + '@quoteNoodle = ' + COALESCE(@quoteNoodle, 'NULL') + ', '
 + '@mlmListSubscriber = ' + COALESCE(@mlmListSubscriber, 'NULL') + ', '
 + '@state = ' + COALESCE(@state, 'NULL') + '"'
 + ' queryout ' + COALESCE(@filePath, 'NULL')
 + ' -c -T -S ' + @@servername

 SELECT @command;

 EXEC xp_cmdshell @command;
END

我使用选择 @command 来获取已经装配的命令以便进行分析。

已经包含调用方过程的参数名称,因此发出的命令如下所示:

bcp"exec InternalML..sp_SelectMarketingListMembers @includeInService = NULL, @includeMLM = NULL, @includeQuoteNoodle = NULL, @netective = NULL, @cyberChex = NULL, @agentsAdvantage = NULL, @quoteNoodle = NULL, @mlmListSubscriber = NULL, @state = NULL" queryout C:temptest.csv -c -T -S SPKD18

同样,没有具有相同函数序列错误消息的参数名称:

bcp"exec InternalML.dbo.sp_SelectMarketingListMembers NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, @state = NULL" queryout"C:temptest.csv" -c -T -S SPKD18

关于为什么这不工作的任何见解? 我已经通过过程运行了 bcp,并将它的复制到一个命令提示符中,结果相同。 问题是我无法找到关于这个错误的互联网上的很多信息,这可能是因为它很通用。

我可以在SSMS查询窗口中直接使用参数运行 InternalML.dbo.sp_SelectMarketingListMembers 过程,所以很肯定它与有关。

感谢你的帮助

时间: 原作者:

0 0

BCP将执行以下操作来解析resultset的格式。 你能告诉我们结果?


set fmtonly on 
 exec sp_SelectMarketingListMembers <your input params>;
set fmtonly off

原作者:
0 0

如 Nathan Skerl所描述的那样,bcp将设置 fmtonly 选项并运行查询,以便在实际运行查询生成输出之前构造输出的模式。 我遇到的副作用有几个:

  1. 条件选择包含作为bcp的一部分,该输出架构将尝试使用,因此在实际运行查询时,会导致错误。
  2. 临时表( #table ) 实际上没有创建,因此在查询中引用时,会导致 fmtonly -ed运行失败。
原作者:
...