Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Di chuyển cơ sở dữ liệu SQL với dòng lệnh

Điều gì sẽ xảy ra nếu bạn có hàng tá cơ sở dữ liệu SQL và việc sao lưu / khôi phục từng cơ sở dữ liệu theo cách thủ công là quá tốn thời gian cho dự án của bạn? Không vấn đề gì! Chúng ta có thể viết ra một phương thức sẽ xuất và nhập tất cả các cơ sở dữ liệu cùng một lúc mà không cần can thiệp thủ công. Để được trợ giúp về việc chuyển Đăng nhập SQL và Quy trình &Chế độ xem được Lưu trữ, hãy xem bài viết Di chuyển MSSQL với SSMS của chúng tôi.

Sao lưu cơ sở dữ liệu trên máy chủ nguồn

1. Mở SSMS (Microsoft SQL Server Management Studio) trên máy chủ nguồn, đăng nhập vào phiên bản SQL và mở cửa sổ Truy vấn Mới. Chạy truy vấn sau:

SELECT name FROM master.sys.databases

Lệnh này sẽ xuất ra danh sách tất cả các cơ sở dữ liệu MSSQL trên máy chủ của bạn. Để sao chép danh sách này, hãy nhấp vào bất kỳ đâu trong kết quả và sử dụng phím tắt CTRL + A (Command + A cho người dùng Mac) để chọn tất cả cơ sở dữ liệu. Sau khi đánh dấu tất cả các cơ sở dữ liệu, hãy nhấp chuột phải và chọn bản sao.

2. Mở Notepad, dán kết quả của bạn và xóa tất cả cơ sở dữ liệu (trong văn bản notepad mới được sao chép) mà bạn KHÔNG muốn di chuyển, cũng như xóa các mục sau:

  • chính
  • tempdb
  • mô hình
  • msdb

Những mục nhập này là cơ sở dữ liệu của hệ thống và việc sao chép chúng là không cần thiết. Đảm bảo xóa mọi thứ ngoại trừ rõ ràng các cơ sở dữ liệu bạn cần di chuyển. Bây giờ bạn sẽ có một danh sách tất cả các cơ sở dữ liệu bắt buộc được phân tách bằng một dòng. tức là

  • AdventureWorks2012
  • AdventureWorks2014
  • AdventureWorks2016

3. Lưu kết quả này trên máy tính dưới dạng C:\ databases .txt .

4. Tạo một cửa sổ Notepad mới, sao chép / dán phần sau vào tài liệu và lưu nó dưới dạng C:\ db-backup .bat

mkdir %systemdrive%\dbbackups
for /F "tokens=*" %%a in (databases.txt) do ( sqlcmd.exe -Slocalhost -Q"BACKUP DATABASE %%a TO DISK ='%systemdrive%\dbbackups\%%a.bak' WITH STATS" )

5. Bây giờ bạn đã lưu tệp dưới dạng C:\ db-backup.bat, hãy điều hướng đến Bắt đầu và nhập cmd và nhấp chuột phải vào Command Prompt để chọn Chạy với tư cách Quản trị viên .Gõ lệnh sau:

cd C:\

Và nhấn enter. Sau đó, nhập db-backup.bat và nhấn enter một lần nữa.

Tại thời điểm này, cơ sở dữ liệu của bạn đã bắt đầu xuất và bạn sẽ thấy tiến độ phần trăm của mỗi lần xuất cơ sở dữ liệu (hình bên dưới).

Lưu ý bất kỳ cơ sở dữ liệu nào bị lỗi, vì bạn có thể chạy lại tệp hàng loạt khi hoàn tất, chỉ sử dụng các cơ sở dữ liệu có thể đã bị lỗi. Nếu cơ sở dữ liệu không sao lưu được, hãy lưu ý thông báo lỗi hiển thị trong dấu nhắc lệnh, giải quyết lỗi bằng cách sửa đổi tệp C:\ databases.txt hiện có để chỉ bao gồm các cơ sở dữ liệu bị lỗi và chạy lại db-backup.bat cho đến khi tất cả cơ sở dữ liệu được xuất thành công.

Khôi phục Cơ sở dữ liệu vào Máy chủ Đích

Bây giờ bạn có thư mục C:\ dbbackups \ chứa các tệp .bak cho mỗi cơ sở dữ liệu bạn muốn di chuyển. Bạn sẽ cần sao chép thư mục C:\ databases.txt của bạn tệp đến máy chủ đích. Có nhiều cách để di chuyển dữ liệu của bạn đến máy chủ đích; bạn có thể sử dụng USB, Robocopy hoặc FTP. Thư mục trên ổ C của máy chủ đích phải được gọi là C:\ dbbackups . Điều quan trọng là phải đặt tên chính xác cho tệp vì tập lệnh của chúng tôi sẽ tìm kiếm các tệp .bak tại đây. Đảm bảo rằng máy chủ đích cũng có tệp C:\ databases.txt của bạn, vì tập lệnh của chúng tôi sẽ tìm kiếm các tên cơ sở dữ liệu tại đây.

1. Mở Notepad và sao chép / dán phần sau vào tài liệu và lưu nó dưới dạng C:\ db-restore .bat

for /F "tokens=*" %%a in (C:\databases.txt) do (
sqlcmd.exe -E -Slocalhost -Q"RESTORE DATABASE %%a FROM DISK='%systemdrive%\dbbackups\%%a.bak' WITH RECOVERY"
)

2. Lưu tệp dưới dạng C:\ db-restore . bat

3. Điều hướng đến menu Bắt đầu và nhập cmd .

4. Nhấp chuột phải vào Command Prompt và chọn Chạy với tư cách Quản trị viên . Nhập lệnh sau:

cd C:\

và nhấn Enter. Bây giờ, hãy nhập db-restore.bat và nhấn Enter.

Cơ sở dữ liệu của bạn hiện đã bắt đầu nhập. Bạn sẽ thấy phần trăm khôi phục của từng cơ sở dữ liệu và thông báo “ Đã xử lý thành công CƠ SỞ DỮ LIỆU KHÔI PHỤC ”Cho mỗi cơ sở dữ liệu đã được xử lý thành công.

Lưu ý bất kỳ cơ sở dữ liệu nào bị lỗi, vì bạn có thể chạy lại tệp hàng loạt khi hoàn tất, chỉ sử dụng các cơ sở dữ liệu bị lỗi. Nếu cơ sở dữ liệu không sao lưu được, hãy lưu ý thông báo lỗi hiển thị trong dấu nhắc lệnh, giải quyết lỗi (bạn có thể thay đổi tệp hàng loạt nếu cần), sửa đổi C:\ databases.txt để chỉ bao gồm các cơ sở dữ liệu bị lỗi và tái -run db-restore.bat cho đến khi tất cả cơ sở dữ liệu được xuất thành công.

Xin chúc mừng, bạn đã sao lưu và khôi phục tất cả cơ sở dữ liệu của mình vào máy chủ mới. Nếu bạn gặp bất kỳ sự cố đăng nhập nào trong khi kiểm tra kết nối SQL trên máy chủ đích, hãy tham khảo phần Di chuyển đăng nhập Microsoft SQL (liên kết neo) của bài viết này và làm theo các bước trong đó. Để di chuyển chế độ xem hoặc quy trình được lưu trữ, vui lòng tham khảo Di chuyển chế độ xem và quy trình đã lưu trữ tiết diện. Mỗi máy chủ SQL sẽ có cấu hình và những trở ngại phải đối mặt, nhưng chúng tôi hy vọng bài viết này đã cung cấp cho bạn một nền tảng vững chắc cho việc di chuyển Microsoft SQL Server của bạn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để thực hiện câu lệnh IF trong SQL?

  2. Phỏng vấn Oren Eini của RavenDB về quản lý cơ sở dữ liệu, phân tích và bảo mật

  3. Hash tham gia trên các cột không thể xóa

  4. Mô hình dữ liệu ngày quan trọng

  5. Số lần xem và số liệu thống kê được lập chỉ mục