从SQL查询输出的唯一文件名

从SQL查询输出的唯一文件名,sql,sql-server,csv,stored-procedures,sql-server-2005,Sql,Sql Server,Csv,Stored Procedures,Sql Server 2005,我有以下代码,但现在需要在销售数据文件上有一个唯一的文件名(末尾的日期) 您不会描述“唯一”文件名的含义,但如果您希望在文件名中包含时间戳(在大多数情况下,这将导致唯一性),则必须动态生成文件名。例如: EXEC xp_cmdshell 'bcp "SELECT * FROM KevinMayhewLive.dbo.KM_CUSTOMER_DATA" queryout \\SERVER3\Docs\Emarsys_Sync\Customer_data\CUSTOMER_DATA_'+REPLAC

我有以下代码,但现在需要在销售数据文件上有一个唯一的文件名(末尾的日期)


您不会描述“唯一”文件名的含义,但如果您希望在文件名中包含时间戳(在大多数情况下,这将导致唯一性),则必须动态生成文件名。例如:

EXEC xp_cmdshell 'bcp "SELECT * FROM KevinMayhewLive.dbo.KM_CUSTOMER_DATA" queryout \\SERVER3\Docs\Emarsys_Sync\Customer_data\CUSTOMER_DATA_'+REPLACE(CONVERT(NVARCHAR(40), GETDATE(), 120),':','')+'.csv -c -t, -T -S'

您所说的唯一文件名是什么意思?您的查询有两个不同的文件名输出,欢迎使用SO。不清楚你想从这个问题中得到什么。似乎每次执行时都希望SalesData文件有一个唯一的名称?对这个名字的结构有什么想法吗?在ALTER之前的select语句有什么意义呢???啊,忘了删除它(以前的一些错误建议)你真的在使用SQL Server 2005吗?我希望你能很快升级到受支持的版本。如果能这么简单的话……需要在最后有日期,它是每天运行的,这样他们(我们的电子邮件人员)就想有销售数据的每日文件名,这样他们就不会感到困惑。我建议你也包括时间,这样你就可以每天运行多次(现在可能不需要,但总有一天会有人要求它。另外,你每天会对它进行多次测试)。我的代码包括时间。为什么要在xp_cmdshell之前使用user databasename?这是非常陈旧的代码,可能是因为我们有几个databases@EdwardHeathcote那么现在正是修复它的好时机,因为您已经在进行更改。
EXEC xp_cmdshell 'bcp "SELECT * FROM KevinMayhewLive.dbo.KM_CUSTOMER_DATA" queryout \\SERVER3\Docs\Emarsys_Sync\Customer_data\CUSTOMER_DATA_'+REPLACE(CONVERT(NVARCHAR(40), GETDATE(), 120),':','')+'.csv -c -t, -T -S'