Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thoát tham số lệnh được chuyển tới xp_cmdshell đến dtexec

Tóm lại, hãy đặt CMD /S /C " ở đầu và " cuối cùng. Ở giữa, bạn có thể có bao nhiêu dấu ngoặc kép tùy thích.

Đây là cách bạn làm điều đó:

declare @cmd varchar(8000)
-- Note you can use CMD builtins and output redirection etc with this technique, 
-- as we are going to pass the whole thing to CMD to execute
set @cmd = 'echo "Test" > "c:\my log directory\logfile.txt" 2> "c:\my other directory\err.log" '


declare @retVal int
declare @output table(
    ix int identity primary key,
    txt varchar(max)
)


-- Magic goes here:
set @cmd = 'CMD /S /C " ' + @cmd + ' " '

insert into @output(txt)
exec @retVal = xp_cmdshell @cmd
insert @output(txt) select '(Exit Code: ' + cast(@retVal as varchar(10))+')'

select * from @output


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đăng nhập ASP.NET không thành công cho người dùng 'NT AUTHORITY \ NETWORK SERVICE'

  2. Ưu và nhược điểm của TRUNCATE so với DELETE FROM

  3. .NET:Cách chèn tài liệu XML vào SQL Server

  4. Làm thế nào để thiết lập và lập chỉ mục trên hai cột của biến bảng được khai báo T-SQL?

  5. Danh sách các hàm ngày và giờ trong SQL Server (T-SQL)