Khi nói đến MS SQL, chắc hẳn chúng ta đều nghĩ đến tính năng truy vấn dữ liệu mạnh mẽ của hệ quản trị cơ sở dữ liệu này trước tiên. MS SQL không chỉ có thế, ông bự Microsoft còn đem cả “chú ếch ping” của mình vào để đáp ứng các nhu cầu trời ơi đất hởi của ace coder bằng cách cung cấp hàm xp_cmdshell với:
Cú pháp:
Exec xp_cmdshell ‘cmd string’ [,no_output];
Tham số:
cmd string: là câu lệnh dos. Nếu sử dụng biến để truyền tham số này vào thì kiểu dữ liệu của biến sẽ là nvarchar(4000) hoặc nvarchar(8000).
no_output: nếu có tham số này thì sẽ không trả kết quả thực thi của hàm. Nếu không có tham số này thì giá trị trả về là 1 (thực hiện thành công) hoặc là 0 (không thực hiện được hoặc phát sinh lỗi).
Một số ví dụ minh họa:
1.Truyền tham số trực tiếp
USE master; EXEC xp_cmdshell ‘copy c:\file.txt d:\New Folder’; GO
2. Truyền thông qua biến trung gian
USE master; DECLARE @cmd nvarchar(4000); SET @cmd = ‘copy c:\file.txt d:\New Folder’; EXEC xp_cmdshell @cmd; GO
3. Sử dụng lại kết quả thực thực thi lệnh cmd
USE master; DECLARE @result = nvarchar(4000); SET @cmd = ‘copy c:\file.txt d:\New Folder’; EXEC @result = xp_cmdshell @cmd; IF (@result = 0) PRINT ‘Success’; ELSE PRINT ‘Failure’; GO
Hy vọng hữu ích với bạn!
Nosomovo