我调试了存储过程(SQL Server 2005),需要在数据表中找出一些值。
该过程由应用程序的事件运行,而我仅观察调试输出。
我执行以下存储过程(SQL Server 2005),以系统表(master.dbo.spt_values)为例:
set @logtext = 'select name, type from master.dbo.spt_values where number=6' --set @logtext = 'master.dbo.spt_values' SET @cmd = 'bcp ' + @logtext + ' out "c:\spt_values.dat" -U uId -P uPass -c' EXEC master..XP_CMDSHELL @cmd
因此,当我取消注释第二行(如一切正常)时,文件在C:\驱动器上分配……但是如果我将其注释为仅剩下第一行,则将生成任何输出。
如何解决这个问题?
bcp out 导出表。
bcp out
要导出查询,请queryout改用-您需要将查询用“双引号”引起来
queryout
set @logtext = '"select name, type from master.dbo.spt_values where number=6"' --set @logtext = 'master.dbo.spt_values' SET @cmd = 'bcp ' + @logtext + ' queryout "c:\spt_values.dat" -U uId -P uPass -c' EXEC master..XP_CMDSHELL @cmd
http://msdn.microsoft.com/en- us/library/ms162802.aspx