Thực thi command dos trong MS SQL

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

Chia sẻ lên
WEB5k - Thiết kế website giá rẻ chuẩn SEO

Hãy bình luận đầu tiên

Để lại một phản hồi