exec master..xp_cmdshell bcp创建文件仅适用于C:\驱动器

时间:2019-02-06 19:32:02

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

我正在尝试使用xp_cmdshell bcp创建通过存储过程生成的格式化文本文件。它有效,但仅在C:\驱动器上。当我尝试在E:\驱动器或共享驱动器上创建文件时,出现以下错误:

  

SQLState = S1000,NativeError = 0错误= [Microsoft] [ODBC驱动程序13   for SQL Server]无法打开BCP主机数据文件

我确实确保E:\驱动器或共享驱动器上存在相同的文件夹结构,但是没有运气。同样的代码也可以在E:\驱动器的不同服务器上使用。我没有足够的技术来弄清楚两台服务器之间可能有什么区别。

我在Management Studio / SQL Server代理中运行的代码:

declare @sql varchar(1024);
declare @bcp varchar(1024);
Declare @DateSuffix char(8)
SELECT @DateSuffix = cast(convert(CHAR,GETDATE(),112)as varchar(8)) 
declare @filename varchar(1024)

set @filename = 'C:\Blackline\SB\GL_' + @DateSuffix + '.txt'
set @sql = 'exec VoyagerX.dbo.COPT_uspVOYtoBlackLine_GL_Extract'
set @bcp = 'bcp "' + @sql + '" queryout "' + @filename + '"  -T -c  -S'   

exec master..xp_cmdshell @bcp

如果此信息有帮助,我正在使用服务帐户(我相信这是标准的)。如果这是权限或配置问题,请告诉我!

1 个答案:

答案 0 :(得分:0)

事实证明,我需要通过右键单击并通过安全性来授予对特定文件夹的服务帐户的完全访问权限。