Bagaimana jadwal dan mengotomatisasi backup database SQL Server di SQL Server Express

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 2019698 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

RINGKASAN

SQL Server Express editions tidak menawarkan cara untuk jadwal rencana pemeliharaan atau pekerjaan karena komponen SQL Server agen tidak termasuk dalam edisi ini. Oleh karena itu, Anda harus mengambil pendekatan yang berbeda untuk membuat cadangan database Anda ketika Anda menggunakan edisi ini.   

Saat ini pengguna SQL Server Express dapat back up database mereka dengan menggunakan salah satu metode berikut:

Menggunakan SQL Server Management Studio Express. Ini dipasang bersama-sama dengan SQL Server Express Advanced layanan atau SQL Server Express Toolkit. Untuk informasi lebih lanjut, kunjungi website Microsoft Developer Network (MSDN) berikut:

Membuat cadangan Database penuh (SQL Server)

  • Gunakan skrip Transact-SQL yang menggunakan BACKUP DATABASE keluarga perintah. Untuk informasi lebih lanjut, kunjungi website MSDN berikut:

    CADANGAN (Transact-SQL)

    Artikel ini menjelaskan cara menggunakan script Transact-SQL dengan Windows Task Scheduler untuk mengotomatisasi backup database SQL Server Express secara dijadwalkan.

  • INFORMASI LEBIH LANJUT

    Anda harus Ikuti tiga langkah ini untuk membuat cadangan database SQL Server Anda dengan menggunakan Windows Task Scheduler:

    Langkah A: menggunakan SQL Server Management Studio Express atau Sqlcmd untuk membuat berikut prosedur yang tersimpan dalam database utama Anda:

    Hak cipta © Microsoft Corporation.  All Rights Reserved.

    Kode ini akan dirilis dibawah ketentuan dari

    / / Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.)

    Menggunakan [master]
    GO 
    / *** Objek: StoredProcedure [dbo].[sp_BackupDatabases] *** /
    SET ANSI_NULLS ON
    pergi
    SET QUOTED_IDENTIFIER ON
    pergi
    --===
    --penulis: Microsoft
    --tanggal pembuatan: 2010-02-06
    --Deskripsi: Backup database untuk SQLExpress
    -Parameter1: databaseName
    --Parameter2: backupType F = penuh, D = diferensial, L = log
    --Parameter3: cadangan lokasi file
    --===
    buat prosedur [dbo]. [sp_BackupDatabases]
    @databaseName sysname = null,
    @backupType CHAR(1),
    @backupLocation nvarchar(200)
    AS
    SET NOCOUNT ON; 
               
                DECLARE @DBs TABLE
                (
                      ID int IDENTITY PRIMARY KEY,
                      DBNAME nvarchar(500)
                )
               
                 -- Pick out only databases which are online in case ALL databases are chosen to be backed up
                 -- If specific database is chosen to be backed up only pick that out from @DBs
                INSERT INTO @DBs (DBNAME)
                SELECT Name FROM master.sys.databases
                where state=0
                AND name=@DatabaseName
                OR @DatabaseName IS NULL
                ORDER BY Name
               
                -- Filter out databases which do not need to backed up
                IF @backupType='F'
                      BEGIN
                      Hapus @DBs mana DBNAME di ('Code', 'Northwind', 'pub', 'AdventureWorks')
    akhir
    @backupType lain jika = telah '
    mulai
    Hapus @DBs mana DBNAME di ('Code', 'Northwind', 'pub', 'master', 'AdventureWorks')
    akhir
    @backupType lain jika = 'L'
    mulai
    Hapus @DBs mana DBNAME di ('Code', 'Northwind', 'pub', 'master', 'AdventureWorks')
    akhir
    ELSE
    mulai
    kembali
    akhir
    --mendeklarasikan variabel
    DECLARE @BackupName varchar(100)
    DECLARE @BackupFile varchar(100)
    DECLARE @DBNAME varchar(300)
    DECLARE @sqlCommand NVARCHAR(1000)
    DECLARE @dateTime NVARCHAR(20)
    DECLARE @Loop int
    --Loop melalui database satu
    pilih @Loop = min(ID) dari @DBs
    sementara @Loop adalah tidak NULL
    mulai
    - nama Database harus dalam format [dbname] karena beberapa - atau _ namanya
          SET @DBNAME = '[' +(SELECT DBNAME FROM @DBs WHERE ID = @Loop) +']'
    --mengatur saat ini tanggal dan waktu format n yyyyhhmmss
    SET @dateTime = ganti (MENGKONVERSI (VARCHAR, GETDATE(),101),'/','') + '_' + menggantikan (MENGKONVERSI (VARCHAR, GETDATE(),108),':','')
    --membuat cadangan file dalam format path\filename.extension untuk backup penuh, diff dan log
    jika @backupType = 'F'
    SET @BackupFile = @backupLocation + menggantikan (menggantikan (@DBNAME, ' [', ''),'] ','') '_FULL_' + @dateTime + '.BAK'
    lain jika @backupType = telah '
    SET @BackupFile = @backupLocation + menggantikan (ganti (@DBNAME, ' [', ''),'] ','') '_DIFF_' + @dateTime + '.BAK'
    lain jika @backupType = 'L'
    SET @BackupFile = @backupLocation + menggantikan (ganti (@DBNAME, ' [', ''),'] ','') '_LOG_' + @dateTime + '.TRN'
    --memberikan cadangan nama untuk menyimpan di media
    jika @backupType = 'F'
    SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' penuh cadangan untuk ' + @dateTime
    jika @backupType = telah '
    SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' diferensial cadangan untuk ' + @dateTime
    jika @backupType = 'L'
    SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' log cadangan untuk ' + @dateTime
    --menghasilkan dinamis perintah SQL akan dijalankan
    jika @backupType = 'F'
    mulai
    SET @sqlCommand = +@DBNAME+ 'Cadangan DATABASE' ' untuk DISK = '''+@BackupFile+ ''' dengan INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'
                      END
           IF @backupType = 'D'
                      BEGIN
                   SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH DIFFERENTIAL, INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                      END
           IF @backupType = 'L' 
                      BEGIN
                   SET @sqlCommand = 'BACKUP LOG ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                      END
     
    -- Execute the generated SQL command
           EXEC(@sqlCommand)
     
    -- Goto the next database
    SELECT @Loop = min(ID) FROM @DBs where ID > @Loop

    Langkah B: dalam editor teks, membuat batch file yang bernama Sqlbackup.bat, dan kemudian menyalin teks dari salah satu contoh berikut ke dalam file tadi, tergantung pada skenario Anda:

    Example1:Full backup dari semua database dalam contoh lokal bernama SQLEXPRESS dengan menggunakan Windows otentikasi

    Sqlbackup.bat

    sqlcmd -S. \EXPRESS-E -Q "EXEC sp_BackupDatabases @backupLocation = telah: \SQLBackups\', @backupType = 'F'" 

    Example2: Differential backup semua database dalam contoh lokal bernama SQLEXPRESS dengan menggunakan SQLLogin dan password

    Sqlbackup.bat

    sqlcmd - U SQLLogin -P sandi -S. \SQLEXPRESS -Q "EXEC sp_BackupDatabases @backupLocation = 'D:\SQLBackups', @BackupType = telah '"

    Catatan: The SQLLogin shouldhave di setidaknya peran cadangan Operator di SQL Server.


    Contoh 3:Log backup semua database dalam contoh lokal bernama SQLEXPRESS dengan menggunakan Windows otentikasi

    Sqlbackup.bat

    sqlcmd -S. \SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation = telah: \SQLBackups\', @backupType = 'L'"

    Contoh 4:Full backup database USERDB dalam contoh lokal bernama SQLEXPRESS dengan menggunakan Windows otentikasi

    Sqlbackup.bat

    sqlcmd -S. \SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation = telah: \SQLBackups\', @databaseName = 'USERDB', @backupType = 'F'"

    Demikian pula, Anda dapat membuat diferensial cadangan dari USERDB dengan menyisipkan dalam akan ' untuk @backupType parameter dan cadangan log dari USERDB oleh paste di 'L' untuk @backupType parameter.

    Langkah C:Jadwal yang pekerjaan dengan menggunakan Windows Task Scheduler untuk Jalankan file batch yang Anda buat pada langkah B. Untuk melakukannya, ikuti langkah berikut:

    1. Pada komputer yang menjalankan SQL Server Express, klik mulai, arahkan ke Semua program, arahkan ke aksesoris, arahkan ke Sistem alat, dan kemudian klik tugas terjadwal. 
    2. Klik dua kali Tambah tugas terjadwal. 
    3. Di Wizard tugas terjadwal, klik berikutnya. 
    4. Browse, klik file batch yang Anda buat pada langkah B, dan kemudian klik buka. 
    5. Ketik SQLBACKUP untuk nama tugas, klik harian, dan kemudian klik berikutnya. 
    6. Menentukan informasi untuk jadwal untuk menjalankan tugas. (Kami merekomendasikan bahwa Anda menjalankan tugas ini minimal satu kali setiap hari.) Selanjutnya, klik berikutnya.
    7. Di bidang Masukkan nama pengguna , ketik nama pengguna, dan kemudian ketik password di bidang Masukkan sandi .

      Catatan Pengguna ini harus setidaknya ditetapkan peran BackupOperator tingkat SQL Server jika Anda menggunakan salah satu dari file batch dalam contoh 1, 3, atau 4.
    8. Klik berikutnya, dan kemudian klik selesai. 
    9. Menjalankan tugas yang dijadwalkan minimal satu kali untuk memastikan bahwa cadangan adalah dibuat dengan sukses.

      CatatanFolder untuk SQLCMD executable adalah umumnya variabel Path untuk server setelah SQL Server diinstal, namun jika variabel Path tidak daftar folder ini, Anda dapat menemukannya di bawah < Install lokasi > \90\Tools\Binn (misalnya: C:\Program program SQL Server\90\Tools\Binn).

      Menyadari berikut ketika Anda menggunakan prosedur yang didokumentasikan di artikel ini:

      • Layanan Windows Task Scheduler harus menjalankan pada waktu itu bahwa pekerjaan ini dijadwalkan untuk menjalankan. Kami sarankan Anda mengatur startup type untuk layanan ini sebagai otomatis. Hal ini membuat yakin bahwa layanan ini akan berjalan bahkan di restart.
      • Ada harus banyak ruang pada drive yang Backup sedang menulis. Kami merekomendasikan bahwa Anda membersihkan file lama dalam folder backup secara teratur untuk memastikan bahwa Anda tidak kehabisan ruang disk. Script tidak berisi logika untuk membersihkan file lama.

      Pustaka

    Properti

    ID Artikel: 2019698 - Kajian Terakhir: 23 Juni 2014 - Revisi: 2.0
    Berlaku bagi:
    • Microsoft SQL Server 2014 Express
    • Microsoft SQL Server 2012 Express
    • Microsoft SQL Server 2008 Express
    • Microsoft SQL Server 2008 Express with Advanced Services
    • Microsoft SQL Server 2005 Express Edition
    • Microsoft SQL Server 2005 Express Edition with Advanced Services
    Kata kunci: 
    kbmt KB2019698 KbMtid
    Penerjemahan Mesin
    PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.
    Klik disini untuk melihat versi Inggris dari artikel ini: 2019698

    Berikan Masukan

     

    Contact us for more help

    Contact us for more help
    Connect with Answer Desk for expert help.
    Get more support from smallbusiness.support.microsoft.com