Aracılığıyla paylaş


sys.fn_get_audit_file (Transact-SQL)

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

SQL Server'da sunucu denetimi tarafından oluşturulan bir denetim dosyasından bilgi döndürür. Daha fazla bilgi için bkz. SQL Server Denetimi (Veritabanı Altyapısı).

Tavsiye

Bunun yerine sys.fn_get_audit_file_v2 kullanmayı düşün. Bu sys.fn_get_audit_file_v2 fonksiyon, hem dosya hem de kayıt seviyelerinde zaman bazlı filtreleme getirir ve özellikle belirli zaman aralıklarını hedefleyen sorgularda önemli performans iyileştirmeleri sağlar.

Tavsiye

Fabric Data Warehouse sys.fn_get_audit_file için destekleniyor ama sys.fn_get_audit_file_v2 (Transact-SQL) önerilir. Bu sys.fn_get_audit_file_v2 fonksiyon, hem dosya hem de kayıt seviyelerinde zaman bazlı filtreleme getirir ve özellikle belirli zaman aralıklarını hedefleyen sorgularda önemli performans iyileştirmeleri sağlar. Daha fazla bilgi ve örnekler için, Fabric Data Warehouse'da Denetimi Konfigüre Etmenize bakınız.

Tavsiye

Fabric'te sys.fn_get_audit_file SQL veritabanı için desteklenir ancak sys.fn_get_audit_file_v2 (Transact-SQL) önerilir. Bu sys.fn_get_audit_file_v2 fonksiyon, hem dosya hem de kayıt seviyelerinde zaman bazlı filtreleme getirir ve özellikle belirli zaman aralıklarını hedefleyen sorgularda önemli performans iyileştirmeleri sağlar. Daha fazla bilgi ve örnekler için, Fabric SQL veritabanında Denetimi Yapılandır bölümüne bakınız.

Transact-SQL söz dizimi kuralları

Sözdizimi

fn_get_audit_file ( file_pattern ,
    { default | initial_file_name | NULL } ,
    { default | audit_record_offset | NULL } )

Tartışmalar

file_pattern

Okunacak denetim dosyası kümesinin dizinini veya yolunu ve dosya adını belirtir. Tür : nvarchar(260).

Dosya adı deseni olmayan bir yol geçirilmesi hataya neden olur.

Bu bağımsız değişken hem yol (sürücü harfi veya ağ paylaşımı) hem de joker karakter içerebilen bir dosya adı içermelidir. Bir denetim dosyası kümesinden birden çok dosya toplamak için tek bir yıldız işareti (*) kullanılabilir. Örneğin:

  • \<path>\* - Belirtilen konumdaki tüm denetim dosyalarını toplayın.

  • <path>\LoginsAudit_{GUID}* - Belirtilen ad ve GUID çifti olan tüm denetim dosyalarını toplayın.

  • <path>\LoginsAudit_{GUID}_00_29384.sqlaudit - Belirli bir denetim dosyasını toplayın.

initial_file_name

Denetim kayıtlarını okumaya başlamak için denetim dosyası kümesindeki belirli bir dosyanın yolunu ve adını belirtir. Tür : nvarchar(260).

initial_file_name bağımsız değişkeni geçerli girdiler içermeli veya ya da defaultNULL değerini içermelidir.

audit_record_offset

initial_file_name için belirtilen dosyayla bilinen bir konumu belirtir. Bu bağımsız değişken kullanıldığında işlev, belirtilen uzaklığı takip eden ilk arabellek kaydında okumaya başlar.

audit_record_offset bağımsız değişkeni geçerli girdiler içermeli veya veya default değerini içermelidirNULL. Tür büyük bir şey.

Döndürülen tablolar

Aşağıdaki tabloda, bu işlev tarafından döndürülebilecek denetim dosyası içeriği açıklanmaktadır.

Sütun adı Türü Açıklama
event_time datetime2 Denetlenebilir eylemin tetiklendiğinde UTC tarihi ve saati. Null değeri atanamaz.
sequence_number Int Büyük olduğu için denetimler için yazma arabelleğine sığmayan tek bir denetim kaydına ait kayıtların sırasını takip eder. Null değeri atanamaz.
action_id Varchar(4) Eylemin kimliği. Null değeri atanamaz.
succeeded bit Olayı tetikleyen eylemin başarılı olup olmadığını gösterir. Null değeri atanamaz. Oturum açma olayları dışındaki tüm olaylar için bu yalnızca izin denetiminin başarılı mı yoksa başarısız mı olduğunu bildirir, işlemin değil.

1 = başarı
0 = başarısız
permission_bitmask Varbinary(16) Bazı eylemlerde bu bit maskesi, verilmeyen, reddedilen veya iptal edilen izinlerdir.
is_column_permission bit Bunun bir sütun düzeyi izni olup olmadığını gösteren bayrak. Null değeri atanamaz. değerini 0 döndürür permission_bitmask = 0.

1 = doğru
0 = yanlış
session_id smallint Olayın gerçekleştiği oturumun kimliği. Null değeri atanamaz.
server_principal_id Int Eylemin gerçekleştirdiği oturum açma bağlamının kimliği. Null değeri atanamaz.
database_principal_id Int Eylemin gerçekleştirdiği veritabanı kullanıcı bağlamının kimliği. Null değeri atanamaz. Bu geçerli değilse döndürür 0 . Örneğin, bir sunucu işlemi.
target_server_principal_id Int İşlemin GRANT/DENY/REVOKE gerçekleştirdiği sunucu sorumlusu. Null değeri atanamaz. Uygulanamazsa döndürür 0 .
target_database_principal_id Int İşlemin GRANT/DENY/REVOKE gerçekleştirdiği veritabanı sorumlusu. Null değeri atanamaz. Uygulanamazsa döndürür 0 .
object_id Int Denetimin gerçekleştiği varlığın kimliği, aşağıdaki nesneleri içerir:

- Sunucu nesneleri
-Veritaban -ları
- Veritabanı nesneleri
- Şema nesneleri

Null değeri atanamaz. Varlığın Sunucu'nun kendisi olup olmadığını veya denetimin nesne düzeyinde gerçekleştirilmediğini döndürür 0 . Örneğin, Kimlik Doğrulaması.
class_type Varchar(2) Denetimin gerçekleştiği denetlenebilir varlık türü. Null değeri atanamaz.
session_server_principal_name sysname Oturum için sunucu sorumlusu. Nullable. Açık veya örtük bağlam anahtarları olması durumunda Veritabanı Altyapısı örneğine bağlı özgün oturum açma bilgilerinin kimliğini döndürür.
server_principal_name sysname Geçerli kullanıcı girişi. Nullable.
server_principal_sid varbinary Geçerli oturum açma güvenlik tanımlayıcısı (SID). Nullable.
database_principal_name sysname Geçerli kullanıcı. Nullable. Kullanılamıyorsa döndürür NULL .
target_server_principal_name sysname Eylemin oturum açma hedefini belirleyin. Nullable. Uygulanamazsa döndürür NULL .
target_server_principal_sid varbinary Hedef oturum açma sid'i. Nullable. Uygulanamazsa döndürür NULL .
target_database_principal_name sysname Eylem kullanıcılarını hedefleyin. Nullable. Uygulanamazsa döndürür NULL .
server_instance_name sysname Denetimin gerçekleştiği sunucu örneğinin adı. Standart server\instance biçim kullanılır.
database_name sysname Eylemin gerçekleştiği veritabanı bağlamı. Nullable. Sunucu düzeyinde gerçekleşen denetimleri döndürür NULL .
schema_name sysname Eylemin gerçekleştiği şema bağlamı. Nullable. Şema dışında gerçekleşen denetimler için döndürür NULL .
object_name sysname Denetimin gerçekleştiği varlığın adı ve aşağıdaki nesneleri içerir:

- Sunucu nesneleri
-Veritaban -ları
- Veritabanı nesneleri
- Şema nesneleri

Nullable. Varlığın Sunucu'nun kendisi olup olmadığını veya denetimin nesne düzeyinde gerçekleştirilmediğini döndürür NULL . Örneğin, Kimlik Doğrulaması.
statement nvarchar(4000) varsa deyimini Transact-SQL. Nullable. Uygulanamazsa döndürür NULL .
additional_information nvarchar(4000) Yalnızca tek bir olaya uygulanan benzersiz bilgiler XML olarak döndürülür. Denetlenebilir birkaç eylem bu tür bilgileri içerir.

T-SQL yığınının bir düzeyi, T-SQL yığınıyla ilişkilendirilmiş eylemler için XML biçiminde görüntülenir. XML biçimi: <tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>

frame nest_level çerçevenin geçerli iç içe yerleştirme düzeyini gösterir. Modül adı üç parça biçiminde (database_name, schema_nameve object_name) temsil edilir. Modül adı , , <, >/gibi _xgeçersiz XML karakterlerinden kaçmak için ayrıştırılır. Onlar olarak _xHHHH_kaçtılar. , HHHH karakter için dört basamaklı onaltılık UCS-2 kodunun kısaltmasıdır. Nullable. Olay tarafından bildirilen ek bilgi olmadığında döndürür NULL .
file_name Varchar(260) Kaydın geldiği denetim günlüğü dosyasının yolu ve adı. Null değeri atanamaz.
audit_file_offset büyük Denetim kaydını içeren dosyadaki arabellek uzaklığı. Null değeri atanamaz.

Şunlar için geçerlidir: Yalnızca SQL Server
user_defined_event_id smallint Kullanıcı tanımlı olay kimliği öğesine sp_audit_writebağımsız değişken olarak geçirildi. NULL sistem olayları için (varsayılan) ve kullanıcı tanımlı olay için sıfır olmayan. Daha fazla bilgi için bkz. sp_audit_write.

Şunlar için geçerlidir: SQL Server 2012 (11.x) ve sonraki sürümleri, Azure SQL Veritabanı ve SQL Yönetilen Örneği
user_defined_information nvarchar(4000) Saklı yordamı kullanarak sp_audit_write kullanıcının denetim günlüğüne kaydetmek istediği ek bilgileri kaydetmek için kullanılır.

Şunlar için geçerlidir: SQL Server 2012 (11.x) ve sonraki sürümleri, Azure SQL Veritabanı ve SQL Yönetilen Örneği
audit_schema_version Int Her zaman 1.
sequence_group_id varbinary Benzersiz tanımlayıcı.

için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler
transaction_id büyük Tek bir işlemdeki birden çok denetim olayını tanımlamak için benzersiz tanımlayıcı.

için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler
client_ip nvarchar(128) İstemci uygulamasının kaynak IP'sini.

için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri ve Azure SQL Veritabanı
application_name nvarchar(128) Denetim olayına neden olan deyimini yürüten istemci uygulamasının adı.

için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri ve Azure SQL Veritabanı
duration_milliseconds büyük Milisaniye cinsinden sorgu yürütme süresi.

Şunlar için geçerlidir: Azure SQL Veritabanı ve SQL Yönetilen Örneği
response_rows büyük Sonuç kümesinde döndürülen satır sayısı.

Şunlar için geçerlidir: Azure SQL Veritabanı ve SQL Yönetilen Örneği
affected_rows büyük Yürütülen sorgudan etkilenen satır sayısı.

Şunlar için geçerlidir: Yalnızca Azure SQL Veritabanı
connection_id benzersiz tanımlayıcı Sunucudaki bağlantının kimliği.

Şunlar için geçerlidir: Azure SQL Veritabanı ve SQL Yönetilen Örneği
data_sensitivity_information nvarchar(4000) Veritabanındaki sınıflandırılmış sütunlara göre denetlenen sorgu tarafından döndürülen bilgi türleri ve duyarlılık etiketleri. Azure SQL Veritabanı veri bulma ve sınıflandırma hakkında daha fazla bilgi edinin.

Şunlar için geçerlidir: Yalnızca Azure SQL Veritabanı
host_name nvarchar(128) İstemci makinesinin Ana Bilgisayar Adı.
session_context nvarchar(4000) Geçerli oturum bağlamının bir parçası olan anahtar-değer çiftleri.
client_tls_version büyük İstemci tarafından desteklenen en düşük TLS sürümü.
client_tls_version_name nvarchar(128) İstemci tarafından desteklenen en düşük TLS sürümü.
database_transaction_id büyük Geçerli oturumdaki geçerli işlemin işlem kimliği.
ledger_start_sequence_number büyük Satır sürümü oluşturan bir işlem içindeki işlemin sıra numarası.

Şunlar için geçerlidir: Yalnızca Azure SQL Veritabanı
external_policy_permissions_checked nvarchar(4000) Bir denetim olayı oluşturulduğunda ve Purview dış yetkilendirme ilkeleri değerlendirildiğinde, dış yetkilendirme izni denetimiyle ilgili bilgiler.

Şunlar için geçerlidir: Yalnızca Azure SQL Veritabanı
obo_middle_tier_app_id Varchar(120) Adına (OBO) erişim kullanarak Azure SQL Veritabanı'na bağlanan orta katman uygulamasının uygulama kimliği. Nullable. İstek OBO erişimi kullanılarak yapılmadıysa döndürür NULL .

Şunlar için geçerlidir: Yalnızca Azure SQL Veritabanı
is_local_secondary_replica bit True denetim kaydı salt okunur bir yerel ikincil çoğaltmadan geliyorsa, False aksi takdirde.

Şunlar için geçerlidir: Yalnızca Azure SQL Veritabanı

Açıklamalar

  • geçirilen file_pattern bağımsız değişkeni var olmayan bir yola veya dosyaya fn_get_audit_file başvuruda bulunursa veya dosya bir denetim dosyası değilse, MSG_INVALID_AUDIT_FILE hata iletisi döndürülür.

  • fn_get_audit_file, APPLICATION_LOGveya SECURITY_LOG seçenekleriyle EXTERNAL_MONITORdenetim oluşturulduğunda kullanılamaz.

İzinler

SQL Server 2019 (15.x) ve önceki sürümleri sunucuda CONTROL SERVER izin gerektirir.

SQL Server 2022 (16.x) ve sonraki sürümleri sunucuda VIEW SERVER SECURITY AUDIT izin gerektirir.

Örnekler

Bu örnek adlı \\serverName\Audit\HIPAA_AUDIT.sqlauditbir dosyadan okur.

SELECT *
FROM sys.fn_get_audit_file(
    '\\serverName\Audit\HIPAA_AUDIT.sqlaudit',
    DEFAULT,
    DEFAULT
);
GO

Denetim oluşturma hakkında tam bir örnek için bkz. SQL Server Denetimi (Veritabanı Altyapısı).

Sınırlamalar

Bir Seçim Olarak Tablo Oluştur (CTAS) içinden satır sys.fn_get_audit_file seçmek veya INSERT INTO Azure Synapse Analytics'te çalışırken bir sınırlamadır. Sorgu başarıyla tamamlanır ve hata iletisi görüntülenmese de, CTAS veya INSERT INTOkullanılarak oluşturulan tabloda satır yoktur.

Daha fazla bilgi

Sistem kataloğu görünümleri:

Transact-SQL: