Membuat rekam jepret database (Transact-SQL)

Berlaku untuk:SQL Server

Satu-satunya cara untuk membuat rekam jepret database SQL Server adalah dengan menggunakan Transact-SQL. SQL Server Management Studio tidak mendukung pembuatan rekam jepret database.

Prasyarat

Database sumber, yang dapat menggunakan model pemulihan apa pun, harus memenuhi prasyarat berikut:

  • Instans server harus menjalankan edisi SQL Server yang mendukung rekam jepret database. Untuk informasi tentang dukungan untuk rekam jepret database di SQL Server, lihat Edisi dan fitur yang didukung SQL Server 2022.

  • Database sumber harus online, kecuali database adalah database cermin dalam sesi pencerminan database.

  • Untuk membuat rekam jepret database pada database cermin, database harus dalam status pencerminan yang disinkronkan.

  • Database sumber tidak dapat dikonfigurasi sebagai database bersama yang dapat diskalakan.

  • Sebelum SQL Server 2019 (15.x), database sumber tidak dapat berisi MEMORY_OPTIMIZED_DATA grup file. Dukungan untuk rekam jepret database dalam memori ditambahkan di SQL Server 2019 (15.x).

Penting

Untuk informasi tentang pertimbangan signifikan lainnya, lihat Rekam Jepret Database (SQL Server).

Rekomendasi

Bagian ini membahas praktik terbaik berikut:

Praktik terbaik: penamaan rekam jepret database

Sebelum membuat rekam jepret, penting untuk mempertimbangkan cara menamainya. Setiap rekam jepret database memerlukan nama database yang unik. Untuk kemudahan administratif, nama rekam jepret dapat menggabungkan informasi yang mengidentifikasi database, seperti:

  • Nama database sumber.

  • Indikasi bahwa nama baru adalah untuk rekam jepret.

  • Tanggal dan waktu pembuatan rekam jepret, nomor urut, atau beberapa informasi lainnya, seperti waktu hari, untuk membedakan rekam jepret berurutan pada database tertentu.

Misalnya, pertimbangkan serangkaian rekam jepret untuk AdventureWorks2022 database. Tiga rekam jepret harian dibuat pada interval 6 jam antara 6 A.M. dan 6 P.M., berdasarkan jam 24 jam. Setiap rekam jepret harian disimpan selama 24 jam sebelum dihilangkan dan digantikan oleh rekam jepret baru dengan nama yang sama. Setiap nama rekam jepret menunjukkan jam, tetapi bukan hari:

AdventureWorks_snapshot_0600
AdventureWorks_snapshot_1200
AdventureWorks_snapshot_1800

Atau, jika waktu pembuatan rekam jepret harian ini bervariasi dari hari ke hari, konvensi penamaan yang kurang tepat mungkin lebih disukai, misalnya:

AdventureWorks_snapshot_morning
AdventureWorks_snapshot_noon
AdventureWorks_snapshot_evening

Praktik terbaik: membatasi jumlah rekam jepret database

Membuat serangkaian rekam jepret dari waktu ke waktu mengambil rekam jepret berurutan dari database sumber. Setiap rekam jepret berlanjut hingga dihilangkan secara eksplisit. Karena setiap rekam jepret akan terus bertambah saat halaman asli diperbarui, Anda mungkin ingin menghemat ruang disk dengan menghapus rekam jepret yang lebih lama setelah membuat rekam jepret baru.

Catatan

Untuk kembali ke rekam jepret database, Anda perlu menghapus rekam jepret lain dari database tersebut.

Praktik terbaik: koneksi klien ke rekam jepret database

Untuk menggunakan rekam jepret database, klien perlu mengetahui di mana menemukannya. Pengguna dapat membaca dari satu rekam jepret database saat yang lain sedang dibuat atau dihapus. Namun, ketika Anda mengganti rekam jepret baru untuk yang sudah ada, Anda perlu mengalihkan klien ke rekam jepret baru. Pengguna dapat menyambungkan secara manual ke rekam jepret database dengan SQL Server Management Studio atau Azure Data Studio. Namun, untuk mendukung lingkungan produksi, Anda harus membuat solusi terprogram yang secara transparan mengarahkan klien penulisan laporan ke rekam jepret database terbaru database.

Izin

Setiap pengguna yang dapat membuat database dapat membuat rekam jepret database; namun, untuk membuat rekam jepret database cermin, Anda harus menjadi anggota peran server tetap sysadmin .

Membuat rekam jepret database menggunakan Transact-SQL

  1. Berdasarkan ukuran database sumber saat ini, pastikan Anda memiliki ruang disk yang cukup untuk menyimpan rekam jepret database. Ukuran maksimum rekam jepret database adalah ukuran database sumber pada pembuatan rekam jepret. Untuk informasi selengkapnya, lihat Menampilkan Ukuran File Jarang rekam jepret Database (Transact-SQL).

  2. Terbitkan CREATE DATABASE pernyataan pada file menggunakan AS SNAPSHOT OF klausul . Membuat rekam jepret mengharuskan menentukan nama logis dari setiap file database database sumber. Sintaksisnya adalah sebagai berikut:

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

    Argumennya adalah sebagai berikut:

    Argumen Deskripsi
    database_snapshot_name Nama rekam jepret yang ingin Anda kembalikan databasenya.
    logical_file_name Nama logis yang digunakan database sumber di SQL Server saat mereferensikan file.
    os_file_name Jalur dan nama file yang digunakan oleh sistem operasi saat Anda membuat file.
    source_database_name Database sumber.

    Untuk deskripsi lengkap sintaks ini, lihat CREATE DATABASE (SQL Server Transact-SQL).

    Catatan

    Saat Anda membuat rekam jepret database, file log, file offline, memulihkan file, dan mencabut file tidak diizinkan dalam CREATE DATABASE pernyataan.

Contoh

Ekstensi .ss yang digunakan dalam contoh ini adalah untuk kenyamanan, dan tidak diperlukan. Dalam database yang berisi beberapa file, semua file harus ditentukan, sesuai dengan sintaks. Grup file tidak ditentukan.

J. Membuat rekam jepret pada database AdventureWorks

Contoh ini membuat rekam jepret database pada AdventureWorks database. Nama rekam jepret, AdventureWorks_dbss_1800, dan nama file file jarangnya, AdventureWorks_data_1800.ss, menunjukkan waktu pembuatan 6 P.M. (1800 jam).

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. Membuat rekam jepret pada database Penjualan

Contoh ini membuat rekam jepret database, sales_snapshot1200, pada Sales database, yang merupakan contoh database yang sama dari Buat database yang memiliki grup file di CREATE DATABASE.

--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