Cách sử dụng chức năng Tách và Đính kèm để di chuyển cơ sở dữ liệu SQL Server

Dịch tiêu đề Dịch tiêu đề
ID của bài: 224071 - Xem sản phẩm mà bài này áp dụng vào.
Bung tất cả | Thu gọn tất cả

Ở Trang này

Tóm tắt

Bài viết này mô tả cách thay đổi vị trí các tệp dữ liệu và tệp nhật ký cho bất kỳ cơ sở dữ liệu Microsoft SQL Server 2005, SQL Server 2000 hoặc SQL Server 7.0 nào.

Để biết thêm thông tin về cách di chuyển cơ sở dữ liệu hệ thống trong SQL Server 2008, hãy xem chủ đề "Di chuyển Cơ sở Dữ liệu Hệ thống" trong SQL Server Books Online. Để xem chủ đề này, hãy truy cập trang web Mạng lưới Nhà phát triển Microsoft (MSDN) Di chuyển Cơ sở dữ liệu Hệ thống.

Thông tin thêm

Các bước mà bạn phải thực hiện để thay đổi vị trí cho một số cơ sở dữ liệu hệ thống SQL Server khác với các bước mà bạn phải thực hiện để thay đổi vị trí cho cơ sở dữ liệu người dùng. Những trường hợp đặc biệt này được mô tả riêng.

Lưu ý Cơ sở dữ liệu hệ thống SQL Server 7.0 tương thích với SQL Server 2000. Không đính kèm cơ sở dữ liệu chủ, mẫu, msdb SQL Server 7.0 hoặc các cơ sở dữ liệu phân phối với SQL Server 2000. Nếu bạn đang sử dụng SQL Server 2005, bạn chỉ có thể đính kèm cơ sở dữ liệu của SQL Server 2005 với một bản sao của SQL Server 2005. Tất cả các ví dụ trong bài viết này giả định rằng SQL Server được cài đặt trong thư mục D:\Mssql7. Ngoài ra, các ví dụ cũng giả định rằng tất cả các tệp cơ sở dữ liệu và tệp nhật ký đều nằm ở thư mục D:\Mssql7\Data mặc định. Các ví dụ di chuyển tệp dữ liệu và tệp nhật ký cho tất cả các cơ sở dữ liệu tới thư mục E:\Sqldata.

Vị trí dữ liệu mặc định cho SQL Server 2005 và SQL Server 2000 như sau: 

Điều kiện tiên quyết

  • Sao lưu tất cả cơ sở dữ liệu, đặc biệt là cơ sở dữ liệu chủ từ vị trí hiện tại của chúng.
  • Đảm bảo rằng bạn có các quyền của quản trị viên hệ thống (sa).
  • Đảm bảo rằng bạn biết tên và vị trí hiện tại của tất cả các tệp dữ liệu cũng như tệp nhật ký của cơ sở dữ liệu.

    Lưu ý Bạn có thể xác định tên và vị trí hiện tại của tất cả các tệp mà cơ sở dữ liệu sử dụng bằng cách dùng quy trình lưu sẵn sp_helpfile:
    use <database_name>
    go
    sp_helpfile
    go
  • Bạn phải có độc quyền truy cập vào cơ sở dữ liệu mà bạn đang di chuyển. Nếu bạn gặp sự cố trong quá trình này đồng thời không thể truy cập cơ sở dữ liệu mà bạn đã di chuyển hoặc nếu bạn không thể khởi động SQL Server, hãy kiểm tra nhật ký lỗi SQL Server và SQL Server Book Online để biết thêm thông tin về các lỗi mà bạn đang gặp phải.

Di chuyển cơ sở dữ liệu người dùng

Ví dụ sau đây di chuyển cơ sở dữ liệu có tên mydb. Cơ sở dữ liệu này chứa một tệp dữ liệu, Mydb.mdf và một tệp nhật ký, Mydblog.ldf. Nếu cơ sở dữ liệu mà bạn di chuyển có nhiều tệp dữ liệu hoặc tệp nhật ký, hãy chỉ định các tệp dưới dạng một danh sách được phân cách bằng dấu phẩy trong quy trình lưu sẵn sp_attach_db. Quy trình sp_detach_db không thay đổi bất kể số tệp có trong cơ sở dữ liệu bởi vì quy trình sp_detach_db không liệt kê các tệp đó.
  1. Khởi động SQL Server 2005 Management Studio. Để thực hiện việc này, bấm Khởi động, bấm Tất cả chương trình, bấm Microsoft SQL Server 2005, sau đó bấm SQL Server Management Studio.
  2. Bấm Truy vấn Mới, sau đó tách cơ sở dữ liệu như sau:
    use master
       go
       sp_detach_db 'mydb'
       go
  3. Sao chép tệp dữ liệu và tệp nhật ký từ vị trí hiện tại (D:\Mssql7\Data) sang vị trí mới (E:\Sqldata).
  4. Đính kèm lại cơ sở dữ liệu. Trỏ tới các tệp ở vị trí mới như sau:
    use master
      go
      sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
      go
    Xác minh thay đổi trong vị trí tệp bằng cách sử dụng quy trình lưu sẵn sp_helpfile:
    use mydb
       go
       sp_helpfile
       go
    Các giá trị trong cột tên tệp phải phản ánh vị trí mới.
Lưu ý Bài viết 922804 trong Cơ sở Kiến thức Microsoft mô tả sự cố xảy ra với cơ sở dữ liệu SQL Server 2005 trên bộ nhớ kết nối trực tiếp với mạng.  Để biết thêm thông tin, hãy bấm vào số bài viết sau để xem bài viết đó trong Cơ sở Kiến thức Microsoft:
922804 SỬA LỖI: Sau khi bạn tách cơ sở dữ liệu Microsoft SQL Server 2005 được lưu trữ trên bộ nhớ kết nối trực tiếp với mạng, bạn không thể đính kèm lại cơ sở dữ liệu SQL Server
Xem xét sự cố này. Ngoài ra, hãy xem xét các quyền được áp dụng cho cơ sở dữ liệu khi cơ sở dữ liệu được tách trong SQL Server 2005. Để biết thêm thông tin, hãy xem phần "Tách và Đính kèm Cơ sở dữ liệu" của chủ đề "Bảo mật Dữ liệu và Tệp Nhật ký" trong SQL Server Books Online. Để xem chủ đề này, hãy truy cập trang web MSDN Bảo mật Dữ liệu và Tệp Nhật ký.

Di chuyển cơ sở dữ liệu mẫu

Để di chuyển cơ sở dữ liệu mẫu pubs và cơ sở dữ liệu mẫu Northwind trong SQL Server 2000 hoặc SQL Server 7.0 hoặc để di chuyển cơ sở dữ liệu mẫu AdventureWorks và cơ sở dữ liệu mẫu AdventureWorksDW trong SQL Server 2005, hãy thực hiện theo quy trình tương tự dành cho di chuyển cơ sở dữ liệu người dùng.

Di chuyển cơ sở dữ liệu mẫu

SQL Server 2005 và SQL Server 2000

SQL Server 7.0

Di chuyển cơ sở dữ liệu MSDB

SQL Server 2005 và SQL Server 2000

SQL Server 7.0

Di chuyển cơ sở dữ liệu chủ

SQL Server 2005

SQL Server 2000 và SQL Server 7.0

Di chuyển cơ sở dữ liệu tempdb

Bạn cũng có thể di chuyển các tệp tempdb bằng cách sử dụng lệnh ALTER DATABASE.
  1. Xác định các tên tệp lô-gic cho cơ sở dữ liệu tempdb bằng cách sử dụng sp_helpfile như sau:
    use tempdb
    go
    sp_helpfile
    go
    Tên lô-gic của từng tệp có trong cột tên. Ví dụ này sử dụng tên tệp mặc định là tempdevtemplog.
  2. Sử dụng câu lệnh THAY ĐỔI CƠ SỞ DỮ LIỆU, chỉ định tên tệp lô-gic như sau:
    use master
    go
    Alter database tempdb modify file (name = tempdev, filename = 'E:\Sqldata\tempdb.mdf')
    go
    Alter database tempdb modify file (name = templog, filename = 'E:\Sqldata\templog.ldf')
    go
    Bạn sẽ nhận được thông báo sau xác nhận thay đổi:
    Thông báo 1
    Tệp 'tempdev' được sửa đổi trong sysaltfiles. Hãy xóa tệp cũ sau khi khởi động lại SQL Server.
    Thông báo 2
    Tệp 'templog' được sửa đổi trong sysaltfiles. Hãy xóa tệp cũ sau khi khởi động lại SQL Server.
  3. Việc sử dụng sp_helpfile trong tempdb sẽ không xác nhận những thay đổi này cho đến khi bạn khởi động lại SQL Server.
  4. Dừng, sau đó khởi động lại SQL Server.

Tham khảo

Để biết thêm thông tin, hãy bấm vào số bài viết sau để xem bài viết đó trong Cơ sở Kiến thức Microsoft:
912397 Không thể khởi động dịch vụ SQL Server khi bạn thay đổi tham số khởi động cho bản sao được ghép cụm của SQL Server 2000 hoặc của SQL Server 2005 thành giá trị không hợp lệ
274188 Chủ đề "Khắc phục người dùng mồ côi" trong Books Online bị thiếu
246133 Cách chuyển thông tin đăng nhập và mật khẩu giữa các bản sao của SQL Server
168001 Quyền và thông tin đăng nhập của người dùng trên cơ sở dữ liệu có thể không chính xác sau khi cơ sở dữ liệu được khôi phục

Để biết thêm thông tin, hãy xem các sách sau:
Microsoft Corporation
Microsoft SQL Server 7.0 System Administration Training Kit (Bộ Đào tạo Quản trị Hệ thống Microsoft SQL Server 7.0)
Microsoft Press, 2001
Microsoft Corporation
MCSE Training Kit: Microsoft SQL Server 2000 System Administration (Bộ Đào tạo MCSE: Quản trị Hệ thống Microsoft SQL Server 2000)
Microsoft Press, 2001
Microsoft Corporation
Microsoft SQL Server 2000 Resource Kit (Bộ Tài nguyên Microsoft SQL Server 2000)
Microsoft Press, 2001

Thuộc tính

ID của bài: 224071 - Lần xem xét sau cùng: 08 Tháng Giêng 2014 - Xem xét lại: 5.0
Áp dụng
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Từ khóa: 
kbsqlsetup kbinfo KB224071

Cung cấp Phản hồi