Aracılığıyla paylaş


sp_trace_generateevent (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Kullanıcı tanımlı bir olay oluşturur. Olay, SQL İzleme kullanılarak veya genişletilmiş olaylar kullanılarak toplanabilir.

Not

Bu saklı yordam kullanım dışı değildir. SQL İzleme ile ilgili diğer tüm saklı yordamlar kullanım dışıdır.

Transact-SQL söz dizimi kuralları

Sözdizimi

sp_trace_generateevent
    [ @eventid = ] eventid
    [ , [ @userinfo = ] N'userinfo' ]
    [ , [ @userdata = ] userdata ]
[ ; ]

Bağımsız değişken

Önemli

Genişletilmiş saklı yordamlar için bağımsız değişkenler, Sözdizimi bölümünde açıklandığı gibi belirli bir sırada girilmelidir. Parametreler sıra dışı girilirse bir hata iletisi oluşur.

[ @eventid = ] eventid

Tetiklene olayın kimliği. @eventidvarsayılan değildir. Kimlik, 82 ile 91 (dahil) arasında olmalıdır. Bu aralık, kullanıcı tanımlı olayları temsil eder. SQL İzleme'de, bu saklı yordamdan tetiklenen aynı kimliği taşıyan olayları yakalamak üzere bir izleme için bu kimlikle bir olay eklemek için sp_trace_setevent kullanın.

[ @userinfo = ] 'kullanıcı bilgisi'

İsteğe bağlı kullanıcı tanımlı dize. @userinfo, varsayılan olarak olan NULLnvarchar(128) şeklindedir.

[ @userdata = ] kullanıcı verileri

Olay için isteğe bağlı kullanıcı tanımlı veriler. @userdata, varsayılan olarak olan 0xvarbinary(8000) değeridir.

Dönüş kodu değerleri

Aşağıdaki tabloda, saklı yordamın tamamlanmasının ardından alabileceğiniz dönüş kodu değerleri açıklanmaktadır.

İade kodu Açıklama
0 Hata yok.
1 Bilinmeyen hata.
3 Belirtilen olay geçerli değil. Olay mevcut olmayabilir veya saklı yordam için uygun bir olay olmayabilir.
13 Bellek yetersiz. Belirtilen eylemi gerçekleştirmek için yeterli bellek olmadığında döndürülür.

Açıklamalar

Genişletilmiş Olaylarkullanarak bu saklı yordam tarafından tetiklenen olayları yakalamak için user_info olayını bir olay oturumuna ekleyin. Daha fazla bilgi için bkz. create EVENT SESSION . user_info olayı, @eventid parametresine geçirilen kullanıcı tanımlı olay kimliği değerleri için tetiklenir.

sp_trace_generateeventile yalnızca kullanıcı tanımlı olayların kimlik numaraları kullanılabilir. Başka bir olay kimliği numarası kullanılırsa hata oluşur.

Bu saklı yordamın parametreleri kesinlikle yazılır. Bir parametreye geçirilen değerin veri türü, açıklamasında belirtilen parametre veri türüyle eşleşmiyorsa saklı yordam bir hata döndürür.

sp_trace_generateevent, daha önce xp_trace_* genişletilmiş saklı yordamlar tarafından yürütülen eylemlerin çoğunu gerçekleştirir. sp_trace_generateeventyerine xp_trace_generate_event kullanın.

İzinler

SQL Server'da ve Azure SQL Yönetilen Örneği'nde ALTER TRACE izni gerekir. Azure SQL Veritabanı'nda, public veritabanı rolünde üyelik gerektirir.

Örnekler

Aşağıdaki örnek, tabloya satır eklendiğinde kullanıcı tanımlı bir olayı tetikler. Olay, tabloya eklenen verileri içerir.

Bu örnek tarafından tetiklenen olayı toplamak için genişletilmiş bir olay oturumu oluşturun ve user_info olayı ekleyin ya da sql izleme .

-- Create a table
DROP TABLE IF EXISTS dbo.user_defined_event_example;

CREATE TABLE dbo.user_defined_event_example
(
    Id INT IDENTITY (1, 1) PRIMARY KEY,
    Data NVARCHAR (60) NOT NULL
);

DROP TRIGGER IF EXISTS fire_user_defined_event;
GO

-- Create an insert trigger on the table
CREATE TRIGGER fire_user_defined_event
    ON dbo.user_defined_event_example
    FOR INSERT
    AS DECLARE @EventData AS VARBINARY (8000);
-- Convert inserted rows to JSON and cast it as a binary value
       SELECT @EventData = CAST ((SELECT Id,
                                         Data
                                  FROM inserted
                                  FOR JSON AUTO) AS VARBINARY (8000));
-- Fire the event with the payload carrying inserted rows as JSON
              EXECUTE dbo.sp_trace_generateevent
           @eventid = 82,
           @userinfo = N'Inserted rows into dbo.user_defined_event_example',
           @userdata = @EventData;
GO

-- Insert a row into the table. The trigger fires the event.
INSERT INTO dbo.user_defined_event_example (Data)
VALUES (N'Example data');

-- Copy the binary payload from the event and cast it to a string with the JSON value
SELECT CAST (0x5B007B0022004900640022003A0031002C002200440061007400610022003A0022004500780061006D0070006C0065002000640061007400610022007D005D00 AS NVARCHAR (MAX));
-- This returns: [{"Id":1,"Data":"Example data"}]