Sql server 从SQL写入文件的权限

Sql server 从SQL写入文件的权限,sql-server,Sql Server,我正在尝试从SQL保存一个XML文件。我在做一些事情,比如: DECLARE @FileName VARCHAR(100) DECLARE @db VARCHAR(100) DECLARE @SQLCmd VARCHAR(1000) SELECT @FileName = 'D:\ProductsList.xml' SELECT @db='MyBase.dbo.' SELECT @SQLCmd = 'bcp "SELECT '+@db+'ArticleName FROM '+@db+'

我正在尝试从SQL保存一个XML文件。我在做一些事情,比如:

DECLARE @FileName VARCHAR(100)
DECLARE @db VARCHAR(100)
DECLARE @SQLCmd VARCHAR(1000)

SELECT  @FileName = 'D:\ProductsList.xml'
SELECT  @db='MyBase.dbo.'

SELECT  @SQLCmd = 'bcp "SELECT '+@db+'ArticleName FROM '+@db+' ARTICLES' +
                   ' FOR XML PATH(''Product''),ELEMENTS, ROOT(''Products''), TYPE "' +
                   ' queryout '+@FileName +' -w -T -S' + @@SERVERNAME 

EXECUTE master..xp_cmdshell @SQLCmd
它在一台sql server上运行正常,但在另一台sql server上运行失败。我收到消息错误=[Microsoft][SQL Server本机客户端11.0]无法打开BCP主机数据文件

不幸的是,Bcp、queryout、cmdshell对我来说都是全新的

我读了很多网站,他们都有一些有趣的信息,但我真的不知道如何开始

他们说-为运行脚本的用户添加权限。但如果不是我,这个用户是谁;是否有为运行SQL Server或其他什么而创建的自动Windows用户?在哪里可以看到此用户并配置其权限,以便它可以保存我的文件

或者我应该知道bcp和cmdshell还有其他一些问题


非常感谢你的帮助。我真的被卡住了:

您是否能够在D:\\上手动创建任何文件?从SQL Server之外的批处理文件或脚本执行此操作要简单得多。使用xp_cmshell通常是个坏主意,因为它有许多潜在的权限和安全问题。好的,我自己解决了。当我使用xp_cmdshell执行操作时,我并不是以我自己的身份执行操作的——我曾经登录到Windows的用户。相反,在我的例子中,我是一个名为mssqlserver的用户。检查xp\u cmdshell“whoami”以查看它。经过长时间的绝望探索,我找到了这个链接,它帮助我解决了所有问题: