编辑:
我通过进入计算机管理并更改SQL服务的登录以使用本地帐户来实现它。
我的Windows 8.1笔记本电脑上安装了SQL Server 2012 Developer Edition(带SP1)的副本。我专门创建了一个文件夹来测试一些使用存储过程导入/导出的文件。位置是:C:\ SQL
当我跑步时
exec xp_cmdshell 'dir c:\sql'
返回文件夹内容。我跑的时候
exec xp_cmdshell 'dir c:\sql > dir c:\sql\dir.txt'
它返回Access被拒绝
所以我环顾四周,看到了这个
EXEC xp_cmdshell 'osql -E -Q"select suser_sname()"'
并将MSSQLSERVER添加到用户组,并专门拥有对C:\ SQL的完全访问权。
有没有人有进一步的建议?
由于
答案 0 :(得分:1)
是的,您运行SQL的帐户必须占用C:\ SQL目录。
但是,您的问题是语法错误。额外的'dir'命令。试试这个纠正过的。
-- pipe output to dir.txt
exec xp_cmdshell 'dir c:\sql > c:\sql\dir.txt'
在我的SQL Server 2012 Developer上,它返回null作为值。但目录列表存在。为了执行,我改为c:\ temp。