所以我觉得它很复杂,我一整天都在寻找解决方案。
我有一个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:已成功删除。”
提前谢谢
答案 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,并且它是一个不同的会话或实例,并且会给您带来麻烦。
希望这有帮助!