如何使用带有samba的linux共享文件夹上的xp_cmdshell从SQL创建.csv文件?

时间:2015-09-01 14:56:53

标签: sql sql-server-2008-r2 samba xp-cmdshell

所以我觉得它很复杂,我一整天都在寻找解决方案。

我有一个SQL Server 2008 R2和xp_cmdshell我目前在.csv

中生成了一些C:\个文件

我现在要做的是将它们直接生成到网络中的linux服务器上。

我试过了:

EXEC xp_cmdshell 'NET USE T: \\192.168.0.25\PERSONS 123456 /user:linuxuser  /PERSISTENT:yes'
set @filepath = 'T:'

set @command ='echo '+@customerheader+' > '+@filepath+'\PERSONS\'+convert(varchar,123456)+'.csv'
set @command = replace(@command,'&','e')
exec master..xp_cmdshell @command

EXEC xp_cmdshell 'net use T: /delete'

我得到的是:“系统无法找到指定的路径。”
成功创建映射驱动器:“命令成功完成。”并且“T:已成功删除。”

提前谢谢

1 个答案:

答案 0 :(得分:0)

我认为你需要摆脱:xp_cmdshell

以下情况如何?

NET USE T: \\192.168.0.25\PERSONS 123456 /user:linuxuser  /PERSISTENT:yes

SET SQLSERVER=YOUR_sql_SERVER
SET SQLQUERY=C:\LOCALFOLDER\somequery.sql
SET OUTPUTFILE=T:\somefolder\someoutput.csv
sqlcmd -S %SQLSERVER% -d YOUR_DATABASE -U SQL_USER -P SQLPASSWORD -i"%SQLQUERY%" -o "%OUTPUTFILE%" -s"," -y30

net use T: /delete

我认为问题在于每次调用xp_cmdshell时,都会为CMD.exe调用一个单独的PID,并且它是一个不同的会话或实例,并且会给您带来麻烦。

希望这有帮助!