Der erste Stapel des folgenden Skripts ruft die gespeicherte Prozedur sp_trace_create
mit Parametern in der Dokumentationsreihenfolge auf. Die zweite Charge vertauscht die Positionen der Parameter @tracefile
und @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
Der erste Stapel erstellt eine neue Ablaufverfolgung, wählt ihre ID aus und schließt die Ablaufverfolgung. Eine Ergebnismenge wird zurückgegeben:
@new_trace_id
2
Der zweite Stapel schlägt mit einem Fehler fehl:
Nachricht 214, Ebene 16, Status 3, Prozedur sp_trace_create, Zeile 1 Die Prozedur erwartet den Parameter '@tracefile' vom Typ 'nvarchar (256)'.
Warum wirkt sich die Parameterreihenfolge auf die Ausgabe der gespeicherten Prozedur aus sp_trace_create
? Und warum scheitert es mit einer so irreführenden Fehlermeldung?