Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để lịch trình và tự động sao lưu cơ sở dữ liệu SQL Server trong SQL Server Express

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 2019698
TÓM TẮT

Phiên bản SQL Server Express không cung cấp một cách để sắp xếp việc làm hoặc kế hoạch bảo trì bởi vì các thành phần đại lý SQL máy chủ không được bao gồm trong các phiên bản. Vì vậy, bạn phải có một cách tiếp cận khác nhau để sao lưu cơ sở dữ liệu của bạn khi bạn sử dụng các phiên bản.   

Hiện nay, SQL Server Express người dùng có thể sao lưu cơ sở dữ liệu của họ bằng cách sử dụng một trong những phương pháp sau đây:

Sử dụng SQL Server Management Studio Express. Điều này được cài đặt cùng với SQL Server Express Advanced Service hoặc SQL Server Express Toolkit. Để biết thêm chi tiết, hãy vào trang web mạng nhà phát triển của Microsoft (MSDN) sau đây:

Tạo bản sao lưu cơ sở dữ liệu đầy đủ (SQL Server)

  • Sử dụng một kịch bản Transact-SQL sử dụng dòng sao lưu cơ sở dữ liệu của lệnh. Để biết thêm chi tiết, hãy vào trang web MSDN sau đây:

    Sao lưu (giao dịch-SQL)

    Bài viết này mô tả cách sử dụng một tập lệnh Transact SQL cùng với Windows Task Scheduler để tự động sao lưu cơ sở dữ liệu SQL Server Express trên cơ sở theo lịch trình.

  • THÔNG TIN THÊM

    Bạn phải làm theo các bước sau ba để sao lưu cơ sở dữ liệu SQL Server của bạn bằng cách sử dụng Windows Task Scheduler:

    Bước A: sử dụng SQL Server Management Studio Express hoặc Sqlcmd để tạo ra thủ tục sau đây được lưu trữ trong cơ sở dữ liệu tổng thể:

    / / Bản quyền © Microsoft Corporation.  Tất cả các quyền.

    / / Mã này phát hành theo các điều khoản của các

    / / Giấy phép công cộng Microsoft (MS-PL,http://opensource.org/licenses/ms-pl.html.)

    Sử dụng [Thạc sĩ]
    GO 
    / ****** Đối tượng:StoredProcedure [dbo].[sp_BackupDatabases] ****** /
    SET ANSI_NULLS ON
    đi
    SET QUOTED_IDENTIFIER ON
    đi
    --=============================================
    --tác giả: Microsoft
    -tạo ngày: 2010-02-06
    -mô tả: sao lưu cơ sở dữ liệu cho SQLExpress
    -Parameter1: databaseName
    --Parameter2: backupType F = ñaày, D = vi phân, L = đăng nhập
    --Parameter3: vị trí tệp sao lưu
    --=============================================
    tạo thủ tục [dbo]. [sp_BackupDatabases]
    @ databaseName sysname = null,
    @ backupType CHAR(1),
    @ backupLocation nvarchar(200)
    AS
    đặt 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
                     Xóa @ DBs nơi DBNAME IN ('tempdb', 'Northwind', 'quán rượu', 'AdventureWorks')
    kết thúc
    ELSE IF @ backupType = có '
    bắt đầu
    DELETE @ DBs nơi DBNAME IN ('tempdb', 'Northwind', 'quán rượu', 'thầy', 'AdventureWorks')
    kết thúc
    ELSE IF @ backupType = 'L'
    bắt đầu
    DELETE @ DBs nơi DBNAME IN ('tempdb', 'Northwind', 'quán rượu', 'thầy', 'AdventureWorks')
    kết thúc
    khác
    bắt đầu
    trở về
    kết thúc
    -khai báo biến
    DECLARE @ BackupName varchar(100)
    DECLARE @ BackupFile varchar(100)
    tuyên bố @ DBNAME varchar(300)
    DECLARE @ sqlCommand NVARCHAR(1000)
    DECLARE @ dateTime NVARCHAR(20)
    DECLARE @ Loop int
    -lặp qua các cơ sở dữ liệu một
    chọn @ Loop = min(ID) từ @ DBs
    trong khi @ Loop là không NULL
    bắt đầu
    - tên cơ sở dữ liệu phải ở định dạng [dbname] kể từ khi có một số - hoặc _ trong tên của họ
         SET @ DBNAME = '[' +(SELECT DBNAME FROM @DBs WHERE ID = @Loop) +']'
    - Set hiện tại ngày và giờ n yyyyhhmmss dạng
    đặt @ dateTime = thay thế (chuyển đổi (VARCHAR, GETDATE(),101),'/','') + '_' +thay thế (chuyển đổi (VARCHAR, GETDATE(),108),':','')
    - tạo ra tên tệp sao lưu trong định dạng path\filename.extension cho bản sao lưu đầy đủ, diff và đăng nhập
    nếu @ backupType = 'F'
    đặt @ BackupFile = @ backupLocation + thay thế (thay thế (@ DBNAME, ' [', ''),'] ','') + '_FULL_' + @ dateTime + '.BAK'
    ELSE IF @ backupType = có '
    đặt @ BackupFile = @ backupLocation + thay thế (thay thế (@ DBNAME, ' [', ''),'] ','') + '_DIFF_' + @ dateTime + '.BAK'
    ELSE IF @ backupType = 'L'
    đặt @ BackupFile = @ backupLocation + thay thế (thay thế (@ DBNAME, ' [', ''),'] ','') + '_LOG_' + @ dateTime + '.TRN'
     
    -- Provide the backup a name for storing in the media
         IF @backupType = 'F'
               SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' full backup for '+ @dateTime
         IF @backupType = 'D'
               SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' differential backup for '+ @dateTime
         IF @backupType = 'L'
               SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' log backup for '+ @dateTime
     
    -- Generate the dynamic SQL command to be executed
     
          IF @backupType = 'F' 
                     BEGIN
                  SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH 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 > @ vòng lặp
    kết thúc

    Bước B: trong một trình soạn thảo văn bản, tạo một tập tin thực thi được đặt theo tên Sqlbackup.bat, và sau đó sao chép văn bản từ một trong những ví dụ sau đây vào tập tin đó, tùy thuộc vào kịch bản của bạn:

    Example1:Sao lưu đầy đủ củatất cả các cơ sở dữ liệu trong trường hợp được đặt tên theo địa phương của SQLEXPRESS bằng cách sử dụng xác thực của Windows

    / / Sqlbackup.bat

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

    Example2:vi sai sao lưu cơ sở dữ liệutất cả trong trường hợp được đặt tên theo địa phương của SQLEXPRESS bằng cách sử dụng một SQLLogin và mật khẩu của mình

    / / Sqlbackup.bat

    sqlcmd - U SQLLogin -P mật khẩu -S. \SQLEXPRESS -Q "EXEC sp_BackupDatabases@ backupLocation = 'D:\SQLBackups', @ BackupType = có '"

    Lưu ý: The SQLLogin shouldhave lúc ít nhất là vai trò nhà điều hành dự phòng trong SQL Server.


    Ví dụ 3:Nhật ký sao lưutất cả các cơ sở dữ liệu trong địa phương tên là trường hợp SQLEXPRESS bằng cách sử dụng xác thực của Windows

    / / Sqlbackup.bat

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

    Ví dụ 4:Sao lưu đầy đủ của cơ sở dữ liệu USERDB trong trường hợp được đặt tên theo địa phương của SQLEXPRESS bằng cách sử dụng xác thực của Windows

    / / Sqlbackup.bat

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

    Tương tự, bạn có thể làm một vi sai sao lưu của USERDB bởi dán trong sẽ ' cho tham số @ backupType và bản sao lưu đăng nhập của USERDB bởi dán trong 'L' cho tham số@ backupType .

    Bước C:Lịch trình một công việc bằng cách sử dụng Windows Task Scheduler để thực thi tập tin thực thi mà bạn đã tạo ở bước sinh Để làm điều này, hãy làm theo các bước sau:

    1. Trên máy tính đang chạy SQL Server Express, bấmbắt đầu, trỏ đếnTất cả các chương trình, điểm đếnphụ kiện, trỏ đếnCông cụ hệ thống, và sau đó nhấp vàotác vụ theo lịch trình. 
    2. Bấm đúp vàothêm theo lịch trình công việc. 
    3. Trong thuật sĩ tác vụ theo lịch trình nhấptiếp theo. 
    4. nhấp vào trình duyệt, bấm vào tập tin thực thi mà bạn đã tạo ở bước B, và sau đó nhấnOpen. 
    5. LoạiSQLBACKUP cho tên gọi của nhiệm vụ, bấm vào hàng ngày, và sau đó bấmtiếp theo. 
    6. Chỉ định thông tin cho một lịch trình để chạy nhiệm vụ. (Chúng tôi đề nghị bạn chạy nhiệm vụ này ít nhất một thời gian mỗi ngày). Sau đó, nhấptiếp theo.
    7. Trong lĩnh vựcnhập tên người dùng , gõ tên người dùng, và sau đó nhập mật khẩu vào trườngnhập mật khẩu .

      Lưu ý Người dùng này nên ít được giao vai trò BackupOperator SQL Server cấp nếu bạn đang sử dụng một trong các tập tin batch trong ví dụ 1, 3 hoặc 4.
    8. Nhấp vàotiếp theo, và sau đó bấm hoàn tất. 
    9. Thực hiện tác vụ theo lịch ít nhất một thời gian để đảm bảo rằng bản sao lưu được tạo thành công.

      Lưu ýThư mục cho tập tin thực thi SQLCMD thường là trong biến đường dẫn cho các máy chủ SQL Server được cài đặt, nhưng nếu biến đường dẫn không có danh sách cặp này, bạn có thể tìm thấy nó dưới< cài đặt vị trí > \90\Tools\Binn (ví dụ: c: Program Files Microsoft SQL Server\90\Tools\Binn).

      Lưu ý những điều sau đây khi bạn sử dụng các thủ tục được diễn tả trong bài viết này:

      • Dịch vụ lập lịch tác vụ Windows phải chạy lúc đó là công việc được lập biểu để chạy. Chúng tôi đề nghị rằng bạn đặt loại khởi động cho dịch vụ này làtự động. Điều này đảm bảo rằng dịch vụ sẽ chạy ngay cả trên khởi động lại.
      • Có nên có rất nhiều không gian trên ổ đĩa mà các bản sao lưu được đang được viết. Chúng tôi đề nghị bạn làm sạch các tập tin cũ trong thư mục sao lưu thường xuyên để đảm bảo rằng bạn chưa hết dung lượng đĩa. Các kịch bản không chứa logic để làm sạch tập tin cũ.

      Tham khảo thêm

    Cảnh báo: Bài viết này được dịch tự động

    Thuộc tính

    ID Bài viết: 2019698 - Xem lại Lần cuối: 06/29/2012 00:19:00 - Bản sửa đổi: 1.0

    • kbmt KB2019698 KbMtvi
    Phản hồi
    ipt>