Azure Depolama'da event_file hedefiyle olay oturumu oluşturma

Şunlar için geçerlidir: Azure SQL Veritabanı Azure SQL Yönetilen Örneği

Bu kılavuzdaki üst düzey adımlar şunlardır:

  1. Bir Azure Depolama hesabı oluşturun veya kullanmak için mevcut uygun hesabı bulun.
  2. Bu depolama hesabında bir kapsayıcı oluşturun.
  3. Veritabanı Altyapısı'na RBAC rol ataması veya SAS belirteci kullanarak kapsayıcıya gerekli erişimi verin.
  4. Olay oturumunu oluşturduğunuz veritabanında veya yönetilen örnekte bir kimlik bilgisi oluşturun.
  5. Olay oturumu oluşturma, başlatma ve kullanma.

Depolama hesabı ve kapsayıcı oluşturma

Azure Depolama'da depolama hesabı oluşturma hakkında ayrıntılı bir açıklama için bkz . Depolama hesabı oluşturma. Azure portalı, PowerShell, Azure SQL, ARM şablonu veya Bicep şablonu kullanarak depolama hesabı oluşturmayı öğrenirsiniz.

Aşağıdakiler için bir hesap kullanmanızı öneririz:

  • Bir Standard general-purpose v2 hesaptır.
  • Olay oturumlarının oluşturulduğu Azure SQL veritabanının, elastik havuzun veya yönetilen örneğin yedekliliğiyle eşleşen yedeklilik türüne sahiptir.
  • Blob erişim katmanını Hot kullanır.
  • Azure SQL veritabanı, elastik havuz veya yönetilen örnekle aynı Azure bölgesindedir.

Ardından Azure portalını kullanarak bu depolama hesabında bir kapsayıcı oluşturun. PowerShell veya Azure CLI kullanarak da kapsayıcı oluşturabilirsiniz.

Oluşturduğunuz depolama hesabının ve kapsayıcının adlarını not edin. Bunları aşağıdaki adımlarda kullanacaksınız.

Kapsayıcıya erişim izni verme

Veritabanı Altyapısı, olay verilerini okumak ve yazmak için kapsayıcıya özel erişim gerektirir. Bu erişimi, seçtiğiniz kimlik doğrulama türüne bağlı olarak iki yoldan biriyle vekleyebilirsiniz:

Yönetilen kimliği kullanarak erişim izni verme

  1. Azure portalında Azure SQL mantıksal sunucunuzun veya Azure SQL yönetilen örneğinizin Kimlik sayfasına gidin ve yönetilen kimliğin atandığından emin olun. Daha fazla bilgi için bkz . Azure SQL için Microsoft Entra'da yönetilen kimlikler.

  2. Azure portalında, olay verilerini depolamak istediğiniz depolama kapsayıcısına gidin. Erişim Denetimi (IAM) sayfasında Ekle'yi seçerek Depolama Blobu Veri Katkıda Bulunanı RBAC rolünü mantıksal sunucunun veya SQL yönetilen örneğinin yönetilen kimliğine atayın.

    Mantıksal sunucuda veya SQL yönetilen örneğinde sistem tarafından atanmış yönetilen kimlik etkinleştirildiyse, rolü bu kimliğe atayın. Sistem tarafından atanan kimlik devre dışı bırakıldıysa ancak bir veya daha fazla kullanıcı tarafından atanan kimlik varsa, rolü birincil kimlik olarak atanan kullanıcı tarafından atanan kimliğe atayın.

    Daha fazla bilgi için bkz. Blob verilerine erişmek için Azure rolü atama.

  3. Veritabanı Altyapısı'na belirli bir kapsayıcı URL'si için yönetilen kimliği kullanarak Azure Depolama'da kimlik doğrulaması talimatı vermek için bir kimlik bilgisi oluşturun.

    Veritabanı kapsamlı bir kimlik bilgisi oluşturun. SSMS veya ADS gibi bir istemci aracı kullanarak yeni bir sorgu penceresi açın, olay oturumunu oluşturduğunuz veritabanına bağlanın ve aşağıdaki T-SQL toplu işlemini yapıştırın. Veritabanına değil, kullanıcı veritabanınıza bağlı olduğunuzdan master emin olun.

    Not

    Aşağıdaki T-SQL toplu işleminin yürütülmesi için veritabanı sahibi (dbo ) tarafından, veritabanı rolünün üyeleri ve mantıksal sunucunun db_owner yöneticisi tarafından tutulan veritabanı izni gerekirCONTROL.

    /*
    (Re-)create a database scoped credential.
    The name of the credential must match the URL of the blob container.
    */
    IF EXISTS (
              SELECT 1
              FROM sys.database_credentials
              WHERE name = 'https://<storage-account-name>.blob.core.windows.net/<container-name>'
              )
        DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>];
    
    /*
    When using managed identity, the credential does not contain a secret
    */
    CREATE DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]
    WITH IDENTITY = 'MANAGED IDENTITY';
    

    Bu toplu işlemi yürütmeden önce aşağıdaki değişikliği yapın:

    • öğesinin https://<storage-account-name>.blob.core.windows.net/<container-name>üç örneğinde de değerini <storage-account-name> depolama hesabınızın adıyla, değerini de kapsayıcınızın adıyla değiştirin <container-name> .

SAS belirteci kullanarak erişim verme

  1. Azure portalında, oluşturduğunuz depolama hesabına ve kapsayıcıya gidin. Kapsayıcıyı seçin ve Ayarlar > Paylaşılan erişim belirteçleri'ne gidin.

    SAS belirteci aşağıdaki gereksinimleri karşılamalıdır:

    • İzinler Read, , Write, DeleteList.
    • Başlangıç saati ve Süre Sonu süresi, olay oturumunun ömrünü içermelidir. Oluşturduğunuz SAS belirteci yalnızca bu zaman aralığı içinde çalışır.
    • IP adresi kısıtlaması yoktur.

    SAS belirteci ve URL oluştur düğmesini seçin. SAS belirteci Blob SAS belirteci kutusundadır. Sonraki adımda kullanmak üzere kopyalayabilirsiniz.

    Önemli

    SAS belirteci bu kapsayıcıya okuma ve yazma erişimi sağlar. Parolayı veya başka bir gizli diziyi ele alır gibi davranın.

    Azure Depolama kapsayıcısı için Paylaşılan Erişim Belirteçleri ekranının ekran görüntüsü ve örnek bir kapsayıcı için oluşturulmuş SAS belirteci.

  2. SAS belirtecini depolamak için bir kimlik bilgisi oluşturun.

    SAS belirtecini veritabanı kapsamlı bir kimlik bilgileri içinde depolayın. SSMS veya ADS gibi bir istemci aracı kullanarak yeni bir sorgu penceresi açın, olay oturumunu oluşturduğunuz veritabanına bağlanın ve aşağıdaki T-SQL toplu işlemini yapıştırın. Veritabanına değil, kullanıcı veritabanınıza bağlı olduğunuzdan master emin olun.

    Not

    Aşağıdaki T-SQL toplu işleminin yürütülmesi için veritabanı sahibi (dbo ) tarafından, veritabanı rolünün üyeleri ve mantıksal sunucunun db_owner yöneticisi tarafından tutulan veritabanı izni gerekirCONTROL.

    /*
    Create a master key to protect the secret of the credential
    */
    IF NOT EXISTS (
                  SELECT 1
                  FROM sys.symmetric_keys
                  WHERE name = '##MS_DatabaseMasterKey##'
                  )
    CREATE MASTER KEY;
    
    /*
    (Re-)create a database scoped credential.
    The name of the credential must match the URL of the blob container.
    */
    IF EXISTS (
              SELECT 1
              FROM sys.database_credentials
              WHERE name = 'https://<storage-account-name>.blob.core.windows.net/<container-name>'
              )
        DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>];
    
    /*
    The secret is the SAS token for the container. The Read, Write, and List permissions are set.
    */
    CREATE DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
        SECRET = '<sas-token>';
    

    Bu toplu işlemi yürütmeden önce aşağıdaki değişiklikleri yapın:

    • öğesinin https://<storage-account-name>.blob.core.windows.net/<container-name>üç örneğinde de değerini <storage-account-name> depolama hesabınızın adıyla, değerini de kapsayıcınızın adıyla değiştirin <container-name> .
    • yan tümcesinde SECRET değerini önceki adımda kopyaladığınız SAS belirteciyle değiştirin <sas-token> .

Olay oturumu oluşturma, başlatma ve durdurma

Kimlik bilgisi oluşturulduktan sonra olay oturumunu oluşturabilirsiniz. Kimlik bilgilerini oluşturmanın aksine, olay oturumu oluşturmak için izin gerekmez CONTROL . Kimlik bilgisi oluşturulduktan sonra, daha kısıtlı izinleriniz olsa bile olay oturumları oluşturabilirsiniz. Bkz. gereken belirli izinler için izinler.

SSMS'de yeni bir olay oturumu oluşturmak için Genişletilmiş Olaylar düğümünü genişletin. Bu düğüm, Azure SQL Veritabanı'daki veritabanı klasörünün altında ve Azure SQL Yönetilen Örneği'daki Yönetim klasörünün altındadır. Oturumlar klasörüne sağ tıklayın ve Yeni Oturum... öğesini seçin. Genel sayfasında, oturum için bu örnekteki example-session adı girin. Olaylar sayfasında oturuma eklenecek bir veya daha fazla olayı seçin. Bu örnekte olayı seçtik sql_batch_starting .

sql_batch_starting olayının seçili olduğu olay seçim sayfasını gösteren Yeni Oturum SSMS iletişim kutusunun ekran görüntüsü.

Veri Depolama sayfasında hedef tür olarak seçin event_file ve depolama kapsayıcısının URL'sini Depolama URL'si kutusuna yapıştırın. Bu URL'nin sonuna bir eğik çizgi (/) ve ardından dosya (blob) adı yazın. Örneğimizde blob adı şeklindedir example-session.xelve URL'nin tamamı şeklindedir https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.

Not

SQL Yönetilen Örneği için, depolama kapsayıcısı URL'sini Veri depolama sayfasına yapıştırmak yerine Betik düğmesini kullanarak oturumun T-SQL betiğini oluşturun. Aşağıdaki SQL Yönetilen Örneği örneğe benzer şekilde bağımsız değişkenin filename değeri olarak kapsayıcı URL'sini belirtin ve betiği yürüterek oturumu oluşturun.

Bir event_file hedefi seçili ve girilen depolama URL'sini içeren veri depolama seçimi sayfasını gösteren Yeni Oturum SSMS iletişim kutusunun ekran görüntüsü.

Oturum yapılandırıldığına göre, betik düğmesini seçerek oturumun T-SQL betiğini oluşturabilir ve daha sonra kaydedebilirsiniz. Örnek oturumumuzun betiği şu şekildedir:

CREATE EVENT SESSION [example-session] ON DATABASE
ADD EVENT sqlserver.sql_batch_starting
ADD TARGET package0.event_file(SET filename=N'https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel')
GO

Oturumu oluşturmak için Tamam'ı seçin.

oluşturduğunuz olay oturumunu görmek için Nesne Gezgini Oturumlar klasörünü genişletin. Varsayılan olarak, oturum oluşturulduğunda başlatılmaz. Oturumu başlatmak için oturum adına sağ tıklayın ve Oturumu Başlat'ı seçin. Daha sonra, oturum çalıştırıldıktan sonra benzer şekilde Oturumu Durdur'u seçerek durdurabilirsiniz.

T-SQL toplu işlemleri bu veritabanında veya yönetilen örnekte yürütüldükçe, oturum olayları depolama kapsayıcısında bloba example-session.xel yazar.

Oturumu durdurmak için Nesne Gezgini sağ tıklayın ve Oturumu Durdur'u seçin.

Olay verilerini görüntüleme

Olay verilerini, yakaladığınız verileri analiz etmek için filtreleri ve toplamaları kullanabileceğiniz SQL Server Management Studio (SSMS) olay görüntüleyicisi kullanıcı arabiriminde görüntüleyebilirsiniz. SSMS'de olay görüntüleyicisini kullanma hakkında daha fazla bilgi için bkz . SSMS'de olay verilerini görüntüleme.

Azure depolamadan xel dosyalarını indirme

İpucu

SSMS v19.2 veya üzerini kullanıyorsanız, bu bölümde açıklandığı gibi dosyaları indirmeniz xel gerekmez. Bu sürümlerde SSMS, her oturumun xel dosyalarını doğrudan Azure depolama alanından okur. Daha fazla bilgi için Bkz . Azure SQL'de Genişletilmiş Olayları Geliştirme blogu.

Oturumun blobunu xel depolama kapsayıcısından indirin ve yerel dosya olarak kaydedin. Azure portalında kullandığınız depolama hesabını bulun, Veri depolama'nın altında Kapsayıcılar'ı seçin ve olay oturumunuz için oluşturduğunuz kapsayıcıyı seçin. Oturumun blobu, adının ilk bölümü olarak oturum adını ve sayısal son eki içerir. Blob için bağlam menüsünü göstermek için üç noktayı (...) ve ardından İndir'i seçin.

Tek bir işlemde birden çok xel blob indirmek için Azure Depolama Gezgini yükleyebilirsiniz.

xel Dosya indirildikten sonra SSMS'de açın. SSMS ana menüsünde Dosya'ya gidin ve Aç'ı seçin. Tek xel bir dosyanız varsa Dosya... öğesini seçin ve indirdiğiniz dosyaya gidin. Aynı olay oturumu tarafından oluşturulan birden çok xel dosyanız varsa (geçiş dosyaları olarak bilinir), Tümünü olay görüntüleyicisinde açmak için Genişletilmiş Olay Dosyalarını Birleştir... iletişim kutusunu kullanabilirsiniz.

T-SQL kullanarak olay verilerini görüntüleme

T-SQL kullanarak olay oturumu verilerini okumak için sys.fn_xe_file_target_read_file() işlevini kullanın. Bu işlevi, olay oturumunun oluşturulduğu veritabanından farklı bir veritabanında veya yönetilen örnekte kullanmak için, olay veri bloblarıyla depolama kapsayıcısında Veritabanı Altyapısı'na erişim verin.

Daha ayrıntılı bir izlenecek yol için bkz . SSMS'de olay oturumu oluşturma.