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

Sử dụng DBCC CLONEDATABASE để tạo bản sao chỉ lược đồ và thống kê của cơ sở dữ liệu người dùng trong SQL Server 2014 SP2

DBCC CLONEDATABASE là một lệnh DBCC mới được giới thiệu trong SQL Server 2014 SP 2, được sử dụng để tạo bản sao của cơ sở dữ liệu người dùng được chỉ định, giúp khắc phục sự cố hiệu suất liên quan đến trình tối ưu hóa truy vấn.

Khi bản sao của cơ sở dữ liệu được tạo bằng cách sử dụng DBCC CLONEDATABASE, nó sẽ tạo một lược đồ và thống kê chỉ bản sao của cơ sở dữ liệu được chỉ định và không chứa bất kỳ bản sao dữ liệu nào.

Tạo bản sao đơn giản như truyền nguồn tên cơ sở dữ liệu và sao chép tên cơ sở dữ liệu vào lệnh DBCC.
 DBCC CLONEDATABASE ('SansSQL', 'SansSQL_Clone') 
Đầu ra
của Lệnh DBCC

Sau khi nhân bản xong, cơ sở dữ liệu nhân bản sẽ ở chế độ Chỉ đọc.

 CHỌN tên, database_id, is_read_only FROM sys.databases WHERE name in ('SansSQL ',' SansSQL_Clone ') 

Vậy điều gì thực sự xảy ra khi chúng ta phát hành lệnh DBCC CLONEDATABASE trên cơ sở dữ liệu?
Nó sẽ bắt đầu bằng một số xác thực trước khi bản sao được tạo, Các xác nhận sau được thực hiện bởi DBCC CLONEDATABASE. Lệnh không thành công nếu bất kỳ xác thực nào không thành công.
  • Cơ sở dữ liệu nguồn phải là cơ sở dữ liệu người dùng. Không được phép sao chép cơ sở dữ liệu hệ thống (chính, mô hình, msdb, tempdb, cơ sở dữ liệu phân phối, v.v.).
  • Cơ sở dữ liệu nguồn phải trực tuyến hoặc có thể đọc được.
  • Cơ sở dữ liệu sử dụng cùng tên với cơ sở dữ liệu nhân bản phải chưa tồn tại.
  • Lệnh không có trong giao dịch của người dùng.
Nếu tất cả các xác thực thành công, DBCC CLONEDATABASE sẽ thực hiện các thao tác sau:
  • Tạo tệp dữ liệu chính và tệp nhật ký
  • Thêm không gian dữ liệu phụ
  • Thêm các tệp phụ
Các tệp cơ sở dữ liệu đích sẽ kế thừa các cài đặt kích thước và tăng trưởng từ cơ sở dữ liệu mô hình và tên tệp của cơ sở dữ liệu đích sẽ tuân theo quy ước source_file_name _underscore_random_number.
 CHỌN database_id, file_id, type_desc, name, physical_name FROM sys.master_files WHERE DB_NAME (database_id) trong ('SansSQL', 'SansSQL_Clone') 


Sau đó, DBCC CLONEDATABASE sẽ thực hiện Ảnh chụp nhanh cơ sở dữ liệu nội bộ với các bước sau
  • Xác thực cơ sở dữ liệu nguồn
  • Nhận S lock cho cơ sở dữ liệu nguồn
  • Tạo ảnh chụp nhanh của cơ sở dữ liệu nguồn
  • Tạo cơ sở dữ liệu sao chép (đây là cơ sở dữ liệu trống kế thừa từ mô hình)
  • Nhận khóa X cho cơ sở dữ liệu sao chép
  • Sao chép siêu dữ liệu vào cơ sở dữ liệu sao chép
  • Giải phóng tất cả các khóa DB
Sử dụng lệnh dưới đây, chúng tôi có thể kiểm tra xem cơ sở dữ liệu là bản sao hay cơ sở dữ liệu bình thường.
 SELECT DATABASEPROPERTYEX ('SansSQL', 'isClone') AS SansSQL_DB_CloneStatus, DATABASEPROPERTYEX ('SansSQL_Clone', 'isClone') AS SansSQL_CloneDB_C trước> 

Tham khảo:https://support.microsoft.com/en-in/kb/3177838
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi ngày và văn hóa:Sự khác biệt giữa DATE và DATETIME

  2. Truy vấn so sánh ngày tháng trong SQL

  3. Toán tử OR Ngắn mạch trong SQL Server

  4. Làm thế nào tôi có thể biết khi nào Tổng số chỉ mục văn bản đầy đủ của SQL kết thúc?

  5. Làm cách nào tôi có thể gọi một Thủ tục được lưu trữ trong SQL bằng EntityFramework 7 và Asp.Net 5