Lô đầu tiên của tập lệnh sau gọi thủ tục được lưu trữ sp_trace_create
với các tham số theo thứ tự tài liệu; lô thứ hai hoán đổi vị trí của các tham số @tracefile
và @options
:
DECLARE @new_trace_id INT;
EXECUTE master.dbo.sp_trace_create
@trace_id = @new_trace_id OUTPUT,
@options = 0,
@tracefile = N'C:\temp\TestTrace';
SELECT @new_trace_id AS [@new_trace_id];
EXECUTE master.dbo.sp_trace_setstatus
@trace_id = @new_trace_id,
@status = 2;
GO
DECLARE @new_trace_id INT;
EXECUTE master.dbo.sp_trace_create
@trace_id = @new_trace_id OUTPUT,
@tracefile = N'C:\temp\TestTrace',
@options = 0;
EXECUTE master.dbo.sp_trace_setstatus
@trace_id = @new_trace_id,
@status = 2;
GO
Lô đầu tiên tạo một dấu vết mới, chọn id của nó và sau đó đóng dấu vết. Một bộ kết quả được trả về:
@new_trace_id
2
Lô thứ hai không thành công với lỗi:
Msg 214, Cấp 16, Trạng thái 3, Quy trình sp_trace_create, Quy trình Dòng 1 mong đợi tham số '@tracefile' thuộc loại 'nvarchar (256)'.
Tại sao thứ tự tham số ảnh hưởng đến đầu ra của thủ tục được lưu trữ sp_trace_create
? Và tại sao nó thất bại với một thông báo lỗi sai lệch như vậy?