Aracılığıyla paylaş


Veritabanı anlık görüntüsü oluşturma (Transact-SQL)

Şunlar için geçerlidir: SQL Server

SQL Server veritabanı anlık görüntüsü oluşturmanın tek yolu Transact-SQL kullanmaktır. SQL Server Management Studio, veritabanı anlık görüntülerinin oluşturulmasını desteklemez.

Önkoşullar

Herhangi bir kurtarma modelini kullanabilen kaynak veritabanı aşağıdaki önkoşulları karşılamalıdır:

  • Sunucu örneği, veritabanı anlık görüntüsünü destekleyen bir SQL Server sürümü çalıştırıyor olmalıdır. SQL Server'da veritabanı anlık görüntüleri desteği hakkında bilgi için bkz. SQL Server 2022'nin sürümleri ve desteklenen özellikleri.

  • Kaynak veritabanı, bir veritabanı yansıtma oturumu içindeki bir yansıtma veritabanı olmadığı sürece çevrimiçi olmalıdır.

  • Yansıtma veritabanında veritabanı anlık görüntüsü oluşturmak için veritabanının eşitlenmiş yansıtma durumunda olması gerekir.

  • Kaynak veritabanı ölçeklenebilir paylaşılan veritabanı olarak yapılandırılamaz.

  • SQL Server 2019'un (15.x) öncesinde kaynak veritabanı bir MEMORY_OPTIMIZED_DATA dosya grubu içeremiyordu. SQL Server 2019'da (15.x) bellek içi veritabanı anlık görüntüleri desteği eklendi.

Önemli

Diğer önemli noktalar hakkında daha fazla bilgi için bkz. Veritabanı Anlık Görüntüleri (SQL Server).

Recommendations

Bu bölümde aşağıdaki en iyi yöntemler ele alınmaktadır:

En iyi yöntem: veritabanı anlık görüntülerini adlandırma

Anlık görüntüleri oluşturmadan önce, bunları nasıl adlandıracaklarını göz önünde bulundurmanız önemlidir. Her veritabanı anlık görüntüsü benzersiz bir veritabanı adı gerektirir. Yönetim kolaylığı için, anlık görüntünün adı veritabanını tanımlayan bilgileri içerebilir, örneğin:

  • Kaynak veritabanının adı.

  • Yeni adın anlık görüntü için olduğunu gösteren bir gösterge.

  • Anlık görüntünün oluşturulma tarihi ve saati, bir sıra numarası veya belirli bir veritabanındaki sıralı anlık görüntüleri ayırt etmek için günün saati gibi başka bilgiler.

Örneğin, AdventureWorks2025 veritabanı için bir dizi anlık görüntü düşünün. 24 saatlik bir saat temelinde 06:00 ile 18:00 arasında 6 saatlik aralıklarla üç günlük anlık görüntü oluşturulur. Her günlük anlık görüntü, silinmeden önce 24 saat boyunca tutulur ve aynı isimdeki yeni bir anlık görüntüyle değiştirilir. Her anlık görüntü adı saati gösterir, ancak günü göstermez.

AdventureWorks_snapshot_0600
AdventureWorks_snapshot_1200
AdventureWorks_snapshot_1800

Alternatif olarak, bu günlük anlık görüntülerin oluşturma süresi günden güne değişirse, daha az kesin bir adlandırma kuralı tercih edilebilir, örneğin:

AdventureWorks_snapshot_morning
AdventureWorks_snapshot_noon
AdventureWorks_snapshot_evening

En iyi yöntem: veritabanı anlık görüntü sayısını sınırlama

Zaman içinde bir dizi anlık görüntü oluşturmak, kaynak veritabanının sıralı anlık görüntülerini yakalar. Her anlık görüntü açıkça silinene kadar kalır. Özgün sayfalar güncelleştirildikçe her anlık görüntü büyümeye devam edeceğinden, yeni bir anlık görüntü oluşturduktan sonra eski bir anlık görüntüyü silerek disk alanından tasarruf etmek isteyebilirsiniz.

Uyarı

Veritabanı anlık görüntüsüne geri dönmek için bu veritabanındaki diğer anlık görüntüleri silmeniz gerekir.

En iyi yöntem: veritabanı anlık görüntüsüne istemci bağlantıları

Bir veritabanı anlık görüntüsünü kullanmak için istemcilerin bu anlık görüntüyü nerede bulacağını bilmesi gerekir. Bir veritabanı anlık görüntüsü oluşturulurken veya silinirken, kullanıcılar başka bir veritabanı anlık görüntüsünden okuyabilir. Ancak, mevcut anlık görüntüye yeni bir anlık görüntü eklediğinizde istemcileri yeni anlık görüntüye yeniden yönlendirmeniz gerekir. Kullanıcılar SQL Server Management Studio veya Azure Data Studio ile veritabanı anlık görüntüsüne el ile bağlanabilir. Ancak, bir üretim ortamını desteklemek için rapor yazma istemcilerini saydam bir şekilde veritabanının en son veritabanı anlık görüntüsüne yönlendiren bir programlı çözüm oluşturmanız gerekir.

Permissions

Veritabanı oluşturabilen tüm kullanıcılar veritabanı anlık görüntüsü oluşturabilir; ancak yansıtma veritabanının anlık görüntüsünü oluşturmak için sysadmin sabit sunucu rolünün üyesi olmanız gerekir.

Transact-SQL kullanarak veritabanı anlık görüntüsü oluşturma

  1. Kaynak veritabanının geçerli boyutuna bağlı olarak, veritabanı anlık görüntüsünü tutmak için yeterli disk alanınız olduğundan emin olun. Veritabanı anlık görüntüsünün en büyük boyutu, anlık görüntü oluşturma sırasında kaynak veritabanının boyutudur. Daha fazla bilgi için, Veritabanı Anlık Görüntüsünün Seyrek Dosyasının Boyutunu Görüntüle (Transact-SQL) bölümüne bakınız.

  2. AS SNAPSHOT OF yan tümcesini kullanarak dosyalar üzerinde bir CREATE DATABASE emir oluşturun. Anlık görüntü oluşturmak için kaynak veritabanının her veritabanı dosyasının mantıksal adının belirtilmesi gerekir. Söz dizimi aşağıdaki gibidir:

    CREATE DATABASE database_snapshot_name
    ON
    (
        NAME = logical_file_name
        , FILENAME = 'os_file_name'
    ) [ , ...n ]
    
    AS SNAPSHOT OF source_database_name
    [;]
    

    Bağımsız değişkenler aşağıdaki gibidir:

    Argument Description
    database_snapshot_name Veritabanını geri döndürmek istediğiniz anlık görüntünün adı.
    logical_file_name Kaynak veritabanının dosyaya başvururken SQL Server'da kullandığı mantıksal ad.
    os_file_name Dosyayı oluştururken işletim sistemi tarafından kullanılan yol ve dosya adı.
    source_database_name Kaynak veritabanı.

    Bu söz diziminin tam açıklaması için bkz. CREATE DATABASE (SQL Server Transact-SQL).

    Uyarı

    Veritabanı anlık görüntüsü oluşturduğunuzda, CREATE DATABASE ifadesinde günlük dosyaları, çevrimdışı dosyalar, geri yükleme dosyaları ve geçersiz dosyalara izin verilmez.

Örnekler

.ss Bu örneklerde kullanılan uzantı kolaylık sağlamak içindir ve gerekli değildir. Birden çok dosya içeren veritabanlarında, söz dizimine uygun olarak tüm dosyaların belirtilmesi gerekir. Dosya grupları belirtilmemiş.

A. AdventureWorks veritabanında anlık görüntü oluşturma

Bu örnek, AdventureWorks veritabanında bir veritabanı anlık görüntüsü oluşturur. Anlık görüntü adı, AdventureWorks_dbss_1800ve seyrek dosyasının dosya adı, AdventureWorks_data_1800.ss18:00 (1800 saat) oluşturma zamanını gösterir.

CREATE DATABASE AdventureWorks_dbss1800 ON (
    NAME = AdventureWorks,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800.ss'
    ) AS SNAPSHOT OF AdventureWorks;
GO

B. Sales veritabanında anlık görüntü oluşturma

Bu örnek, sales_snapshot1200, Sales veritabanında bir anlık görüntü oluşturur. Bu, CREATE DATABASE içinde dosya gruplarına sahip bir veritabanı oluşturma örneğindeki aynı örnek veritabanıdır.

--Create sales_snapshot1200 as snapshot of the Sales database:
CREATE DATABASE sales_snapshot1200 ON (
    NAME = SPri1_dat,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SPri1dat_1200.ss'
    ),
    (
    NAME = SPri2_dat,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SPri2dt_1200.ss'
    ),
    (
    NAME = SGrp1Fi1_dat,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\mssql\data\SG1Fi1dt_1200.ss'
    ),
    (
    NAME = SGrp1Fi2_dat,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SG1Fi2dt_1200.ss'
    ),
    (
    NAME = SGrp2Fi1_dat,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SG2Fi1dt_1200.ss'
    ),
    (
    NAME = SGrp2Fi2_dat,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SG2Fi2dt_1200.ss'
    ) AS SNAPSHOT OF Sales;
GO