Friday 15 April 2011

tsql - unable to transfer file to ftp server using xp_cmdshell -



tsql - unable to transfer file to ftp server using xp_cmdshell -

i'am using code transfer file local scheme ftp (i have read , write rights ftp).

if exists (select * sysobjects id = object_id(n'[dbo].[s_ftp_putfile]') , objectproperty(id, n'isprocedure') = 1) drop procedure [dbo].[s_ftp_putfile] go create procedure s_ftp_putfile @ftpserver varchar(128) , @ftpuser varchar(128) , @ftppwd varchar(128) , @ftppath varchar(128) , @ftpfilename varchar(128) , @sourcepath varchar(128) , @sourcefile varchar(128) , @workdir varchar(128) /* exec s_ftp_putfile @ftpserver = '172.*****' , @ftpuser = 'username' , @ftppwd = 'password' , @ftppath = '/dir1/' , @ftpfilename = 'test2.txt' , @sourcepath = 'c:\vss\mywebsite\' , @sourcefile = 'test2.txt' , @workdir = 'c:\temp\' */ declare @cmd varchar(1000) declare @workfilename varchar(128) select @workfilename = 'ftpcmd.txt' -- deal special characters echo commands select @ftpserver = replace(replace(replace(@ftpserver, '|', '^|'),'<','^<'),'>','^>') select @ftpuser = replace(replace(replace(@ftpuser, '|', '^|'),'<','^<'),'>','^>') select @ftppwd = replace(replace(replace(@ftppwd, '|', '^|'),'<','^<'),'>','^>') select @ftppath = replace(replace(replace(@ftppath, '|', '^|'),'<','^<'),'>','^>') select @cmd = 'echo ' + 'open ' + @ftpserver + ' > ' + @workdir + @workfilename exec master..xp_cmdshell @cmd select @cmd = 'echo ' + @ftpuser + '>> ' + @workdir + @workfilename exec master..xp_cmdshell @cmd select @cmd = 'echo ' + @ftppwd + '>> ' + @workdir + @workfilename exec master..xp_cmdshell @cmd select @cmd = 'echo ' + 'put ' + @sourcepath + @sourcefile + ' ' + @ftppath + @ftpfilename + ' >> ' + @workdir + @workfilename exec master..xp_cmdshell @cmd select @cmd = 'echo ' + 'quit' + ' >> ' + @workdir + @workfilename exec master..xp_cmdshell @cmd select @cmd = 'ftp -s:' + @workdir + @workfilename create table #a (id int identity(1,1), s varchar(1000)) insert #a exec master..xp_cmdshell @cmd select id, ouputtmp = s #a go

i unable transfer file , getting error

1 user (172.******:(none)): open 172.******

2 null

3 null

4 set c:\vss\mywebsite\test2.txt /dir1/test2.txt

5 c:\vss\mywebsite\test2.txt: file not found

6 quit

7 null

however able transfer through cmd prompt.

can sql other things command line?

also, uid ss using on command line, have rights talk ss machine destination? many enterprises don't allow "service" ids talk willy nilly on network wants to. may need rights create connection.

sql-server-2008 tsql ftp file-transfer xp-cmdshell

No comments:

Post a Comment