Aracılığıyla paylaş


sys.fn_get_audit_file_v2 (Transact-SQL)

Şunlar için geçerlidir:Azure SQL DatabaseMicrosoft Fabric'te DepoMicrosoft Fabric'te SQL veritabanı

Sistem fonksiyonu, sys.fn_get_audit_file_v2 selefine kıyasla daha verimli denetim günlüğü verilerini almak için tasarlanmıştır. sys.fn_get_audit_file Bu 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.

Bir 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ı).

Transact-SQL söz dizimi kuralları

Sözdizimi

fn_get_audit_file_v2 ( file_pattern
    , { default | initial_file_name | NULL }
    , { default | audit_record_offset | NULL }
    , { default | start time | NULL }
    , { default | end time | NULL } )

Arguments

file_pattern

Şunlar için geçerlidir: Azure SQL Database only

Okunacak denetim dosyası ayarının dizini, yolunu ve dosya adını belirtir. file_patternnvarchar(260)'dır.

Bir yolu dosya adı deseni olmadan geçirmek hata oluşturur.

Bu argüman, bir blob URL'sini (depolama uç noktası ve konteyner dahil) belirtmek için kullanılır. Yıldız işaretli joker kartı desteklemese de, tam blob adı yerine kısmi bir dosya (blob) adı preeki kullanarak bu preekle başlayan birden fazla dosyayı (blob) toplayabilirsiniz. Örneğin:

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/ - belirli veritabanı için tüm denetim dosyalarını (blob'ları) toplar.

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/<AuditName>/<CreationDate>/<FileName>.xel - belirli bir denetim dosyasını (blob) toplar.

initial_file_name

Şunlar için geçerlidir: Azure SQL Database only

Denetim dosyası setinde denetim kayıtlarını okumaya başlamak için belirli bir dosyanın yolunu ve adını belirtir. initial_file_namenvarchar(260)'dır.

initial_file_name argümanı geçerli girişler içermeli veya ya default ya da değerini NULL içermelidir.

audit_record_offset

Şunlar için geçerlidir: Azure SQL Database only

initial_file_name için belirtilen dosya ile bilinen bir konumu belirtir. Bu argüman kullanıldığında, fonksiyon belirtilen ofsetin hemen ardından tamponun ilk kaydında okumaya başlar.

audit_record_offset argümanı geçerli girişler içermeli veya ya default da ya da NULL değerini içermelidir. audit_record_offsetbüyük.

start_time

Kayıtları filtreleme için başlama zamanı. Bu zamandan önceki kayıtlar hariçtır.

end_time

Kayıtların filtrelenmesi için son zaman. Bu zamandan sonraki kayıtlar hariçtır.

Tablo geri getirildi

Aşağıdaki tablo, bu fonksiyonun döndürülen denetim dosyası içeriğini açıklar.

Sütun adı Türü Description
event_time datetime2 Denetlenebilir eylemin tetiklenme tarihi ve saati. Null değeri atanamaz.
sequence_number int Denetimler için yazma arabelleğine sığamayacak kadar büyük olan tek bir denetim kaydındaki kayıtların sırasını izler. 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 bitmask verilen izinler, 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. Geri 0 döndüğündepermission_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 iadeler 0 . Örneğin, bir sunucu işlemi.
target_server_principal_id int İşlemin GRANT/DENY/REVOKE uygulandığı sunucu prensibası. Null değeri atanamaz. Geçerli değilse beyannameler 0 .
target_database_principal_id int İşlemin GRANT/DENY/REVOKE yapıldığı veritabanı prensibi. Null değeri atanamaz. Geçerli değilse beyannameler 0 .
object_id int Denetimin gerçekleştiği kuruluşun kimliği, aşağıdaki nesneleri içerir:

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

Null değeri atanamaz. Eğer varlık Sunucunun kendisi ise ya da denetim nesne seviyesinde yapılmıyorsa döner 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 prensibi. Nullable. Açık veya örtük bağlam anahtarlamaları olduğunda Veritabanı Motoru örneğine bağlı orijinal girişin kimliğini döndürür.
server_principal_name sysname Geçerli oturum açma. Nullable.
server_principal_sid varbinary Geçerli oturum açma SID'si. Nullable.
database_principal_name sysname Geçerli kullanıcı. Nullable. Mevcut değilse iadeler NULL .
target_server_principal_name sysname Hedef girişi. Nullable. Geçerli değilse beyannameler NULL .
target_server_principal_sid varbinary Hedef girişinin SID'si. Nullable. Geçerli değilse beyannameler NULL .
target_database_principal_name sysname Eylemin hedef kullanıcısı. Nullable. Geçerli değilse beyannameler NULL .
server_instance_name sysname Denetimin gerçekleştiği sunucu örneğinin adı. Standart server\instance format kullanılır.
database_name sysname Eylemin gerçekleştiği veritabanı bağlamı. Nullable. Sunucu düzeyinde gerçekleşen denetimler için iadeler NULL .
schema_name sysname Eylemin gerçekleştiği şema bağlamı. Nullable. Bir şema dışında gerçekleşen denetimler için yapılan beyanlar NULL .
object_name sysname Denetimin gerçekleştiği kurumun adı, aşağıdaki nesneleri içerir:

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

Nullable. Eğer varlık Sunucunun kendisi ise ya da denetim nesne seviyesinde yapılmıyorsa döner NULL . Örneğin, Kimlik Doğrulaması.
statement nvarchar(4000) Transact-SQL ifadesi varsa. Nullable. Geçerli değilse beyannameler 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 seviyesi, T-SQL yığını ile ilişkilendirilen eylemler için XML formatında görüntülenir. XML formatı şudur: <tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>

frame nest_level çerçevenin mevcut iç içe geçme seviyesini gösterir. Modül adı üç bölüm formatında temsil edilir (database_name, schema_name, ve object_name). Modül adı, , <>/gibi geçersiz XML karakterlerinden _xkaçmak için ayrıştırılır. Kaçtılar._xHHHH_ Bu kod HHHH , karakter için dört haneli onaltılık UCS-2 kodunu ifade eder. Nullable. Olay tarafından ek bilgi bildirilmediğinde geri döner 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 bigint Denetim kaydını içeren dosyadaki arabellek uzaklığı. Null değeri atanamaz.
user_defined_event_id smallint Kullanıcı tanımlı olay kimliği argüman olarak iletildi sp_audit_write. NULL sistem olayları için (varsayılan) ve kullanıcı tanımlı olaylar için sıfır olmayan. Daha fazla bilgi için bkz. sp_audit_write (Transact-SQL).
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.
audit_schema_version int Her zaman 1.
sequence_group_id varbinary Benzersiz tanımlayıcı.<
transaction_id bigint Tek bir işlemde birden fazla denetim olayını tanımlamak için benzersiz tanımlayıcı.
client_ip nvarchar(128) İstemci uygulamasının kaynak IP'si.
application_name nvarchar(128) Denetim olayına sebep olan ifadeyi çalıştıran istemci uygulamasının adı.
duration_milliseconds bigint Sorgu yürütme süresi milisaniyeler cinsinden.
response_rows bigint Sonuç setinde döndürülen satır sayısı.<
affected_rows bigint Yürütülen ifadeden etkilenen satır sayısı.
connection_id uniqueidentifier Sunucudaki bağlantının kimliğ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ı verilerinin keşfi ve sınıflandırması hakkında daha fazla bilgi edinin.
host_name nvarchar(128) İstemci makinenin ana adı.
session_context nvarchar(4000) Mevcut oturum bağlamının bir parçası olan anahtar-değer çiftleri.
client_tls_version bigint İstemci tarafından desteklenen minimum TLS sürümü.
client_tls_version_name nvarchar(128) İstemci tarafından desteklenen minimum TLS sürümü.
database_transaction_id bigint Mevcut oturumdaki mevcut işlemin işlem kimliği.
ledger_start_sequence_number bigint Bir işlem içindeki ve satır versiyonu oluşturan bir işlemin sıra numarası.
external_policy_permissions_checked nvarchar(4000) Dış yetkilendirme izni kontrolüyle ilgili bilgiler, bir denetim olayının ne zaman oluşturulduğu ve Purview dış yetkilendirme politikaları değerlendirilir.
obo_middle_tier_app_id varchar(120) On-belong-of (OBO) erişimi kullanarak bağlanan orta seviye uygulamanın uygulama kimliği. Nullable. Eğer talep OBO erişimi kullanılarak yapılmadıysa iade NULL eder.
is_local_secondary_replica bit True eğer denetim kaydı yalnızca okunabilir yerel ikincil bir kopyadan geliyorsa, False aksi takdirde.

Gelişmeler sys.fn_get_audit_file

Bu sys.fn_get_audit_file_v2 fonksiyon, hem dosya hem de kayıt seviyelerinde verimli zaman bazlı filtreleme sunarak eski sys.fn_get_audit_file göre önemli bir gelişme sunar. Bu optimizasyon, özellikle daha kısa zaman aralıklarını hedefleyen sorgular için faydalıdır ve çoklu veritabanı ortamlarında performansın korunmasına yardımcı olabilir.

Çift seviyeli filtreleme

Dosya düzeyinde filtreleme: Fonksiyon önce dosyaları belirlenen zaman aralığına göre filtreler, taranması gereken dosya sayısını azaltır.

Kayıt düzeyinde filtreleme: Daha sonra seçilen dosyalar içinde filtreleme uygulayarak yalnızca ilgili kayıtları çıkarır.

Performans geliştirmeleri

Performans iyileştirmeleri esas olarak blob dosyalarının rollover süresine ve sorgulanan zaman aralığına bağlıdır. Denetim kayıtlarının eşit dağılımı varsayarsak:

  • Azaltılmış yük: Taranacak dosya ve kayıt sayısını en aza indirerek, sistem üzerindeki yükü azaltır ve sorgu yanıt sürelerini iyileştirir.

  • Ölçeklenebilirlik: Veritabanı sayısı artsa bile performansı korumaya yardımcı olur, ancak net iyileşme çok sayıda veritabanı olan ortamlarda daha az belirgin olabilir.

Açıklamalar

Eğer file_pattern argümanı fn_get_audit_file_v2 mevcut olmayan bir yol veya dosyaya atıfta bulunursa ya da dosya denetim dosyası değilse, hata MSG_INVALID_AUDIT_FILE mesajı döner.

Denetim , fn_get_audit_file_v2, veya APPLICATION_LOG seçeneklerle oluşturulduğunda SECURITY_LOGfonksiyon EXTERNAL_MONITOR kullanılamaz.

Şu anda Fabric Data Warehouse'da, tek tek dosyalara erişemezsiniz, sadece denetim klasörüne erişebilirsiniz. Bir depo öğesinde SQL Audit için aşağıdaki argümanlar desteklenmez: file_pattern, initial_file_name, audit_record_offset.

Permissions

Azure SQL Database'de gerekli izinler

İzin gerektirir CONTROL DATABASE .

  • Sunucu yöneticileri, sunucudaki tüm veritabanlarının denetim kayıtlarına erişebilir.

  • Sunucu dışı yöneticiler yalnızca mevcut veritabanından denetim kayıtlarına erişebilir.

  • Yukarıdaki kriterleri karşılamayan lekeler atlanır (sorgu çıktı mesajında atlanan blobların listesi gösterilir). Fonksiyon, yalnızca erişime izin verilen bloblardan kayıtlar döndürür.

Fabric SQL veritabanında gerekli izinler

Fabric workspace rolleri kullanarak denetimi yönetmek için kullanıcıların Fabric workspace katkı sağlayıcı rolünde üyelik veya daha yüksek izinlere sahip olması gerekir. DENETIMI SQL izinleriyle yönetmek için:

  • Veritabanı denetimini yapılandırmak için kullanıcıların ALTER ANY DATABASE AUDIT iznine sahip olması gerekir.
  • T-SQL kullanarak denetim günlüklerini görüntülemek için kullanıcıların VERITABANı GÜVENLİĞİ DENETİmİ GÖRÜNTÜLE iznine sahip olması gerekir.

Daha fazla bilgi için Fabric SQL veritabanında Denetim bölümüne bakınız.

Fabric Data Warehouse'da gerekli izinler

Kullanıcıların Fabric öğesi Audit iznine sahip olması gerekir. Daha fazla bilgi için bkz . İzinler.

Örnekler

A. View SQL audit logs for Azure SQL Database

Bu örnek, belirli bir Azure Blob Depolama konumundan denetim loglarını alır ve kayıtları ile 2023-11-17T08:40:40Z2023-11-17T09:10:40Zarasında filtreler.

SELECT *
FROM sys.fn_get_audit_file_v2(
    'https://<storage_account>.blob.core.windows.net/sqldbauditlogs/server_name/database_name/SqlDbAuditing_ServerAudit/',
    DEFAULT,
    DEFAULT,
    '2023-11-17T08:40:40Z',
    '2023-11-17T09:10:40Z')

B. View SQL audit logs for Fabric Data Warehouse

Bu örnek, mevcut çalışma alanı ve depo ile hizalanmış OneLake klasöründen denetim günlüklerini alır ve kayıtları ile 2023-11-17T08:40:40Z2023-11-17T09:10:40Zarasında filtreler.

Fabric portalında, workspaceID ve warehouseID:

  • <workspaceID>: Fabric portalında çalışma alanınızı ziyaret edin. Çalışma alanı GUID'sini bölümden /groups/ sonraki URL'de veya mevcut bir depoda çalıştırarak SELECT @@SERVERNAME bulabilirsiniz. URL'nizin /groups/ ardından /me/, varsayılan çalışma alanını kullanıyorsunuz ve şu anda Fabric Data Warehouse için SQL Audit varsayılan çalışma alanında desteklenmiyor.
  • <warehouseID>: Depo Kumaş portalında ziyaret edin. Depo kimliğini bölümden sonraki /warehouses/ URL'de bulun.
SELECT *
FROM sys. fn_get_audit_file_v2(
    'https://onelake.blob.fabric.microsoft.com/{workspaceId}/{warehouseId}/Audit/sqldbauditlogs/',
    DEFAULT,
    DEFAULT,
    '2023-11-17T08:40:40Z',
    '2023-11-17T09:10:40Z')

C. SQL veritabanı için SQL audit loglarını Microsoft Fabric'de görüntüle

Bu örnek, Microsoft Fabric'te OneLake'ten ve arasında 2025-11-17T08:40:40Z2025-11-17T09:10:40Zdenetim günlüklerini alır.

Aşağıdaki betikte Microsoft Fabric çalışma alanı kimliğinizi ve veritabanı kimliğinizi vermeniz gerekir. Her ikisi de Fabric portalının URL'sinde bulunabilir. Örneğin: https://fabric.microsoft.com/groups/<fabric workspace id>/sqldatabases/<fabric sql database id>. URL'deki ilk benzersiz tanımlayıcı dizisi Fabric workspace ID'dir, ikinci benzersiz tanımlayıcı dizisi ise SQL veritabanı ID'sidir.

  • <fabric_workspace_id> ifadesini Fabric çalışma alanı kimliğiniz ile değiştirin. Url'de bir çalışma alanının kimliğini kolayca bulabilirsiniz. Bu, tarayıcı pencerenizde iki / karakterden sonra /groups/ gelen benzersiz dizedir.
  • Fabric veritabanı kimliğindeki <fabric sql database id> öğesini SQL veritabanınızla değiştirin. Veritabanı öğesinin kimliğini URL'de kolayca bulabilirsiniz. Bu, tarayıcı pencerenizde iki / karakterden sonra /sqldatabases/ gelen benzersiz dizedir.
SELECT *
FROM sys.fn_get_audit_file_v2(
    'https://onelake.blob.fabric.microsoft.com/<fabric workspace id>/<fabric sql database id>/Audit/sqldbauditlogs/',
    DEFAULT,
    DEFAULT,
    '2025-11-17T08:40:40Z',
    '2025-11-17T09:10:40Z')

Daha Fazla Bilgi

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

Transact-SQL: