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

Cơ sở dữ liệu hệ thống SQL Server - Khái niệm cơ bản

Giới thiệu

Thiết kế SQL Server ngụ ý ánh xạ một-nhiều giữa công cụ cơ sở dữ liệu (phiên bản) và các cơ sở dữ liệu được lưu trữ trên phiên bản. Nó có nghĩa là bạn có thể triển khai một số cơ sở dữ liệu trên một phiên bản của máy chủ SQL. Theo tài liệu của Microsoft, bạn có thể có tối đa 32767 cơ sở dữ liệu trên một phiên bản SQL Server. Tất nhiên, sẽ có những hạn chế, như tài nguyên trên máy chủ, quản lý đồng thời trên TempDB, lưu lượng mạng, v.v.

Cơ sở dữ liệu được triển khai trên phiên bản SQL Server có thể là Cơ sở dữ liệu hệ thống hoặc Cơ sở dữ liệu người dùng. Cơ sở dữ liệu hệ thống được cài đặt cùng với phiên bản này. Trong bài viết này, chúng ta sẽ thảo luận về mục đích của từng cơ sở dữ liệu Hệ thống. Ngoài ra, chúng tôi sẽ làm rõ những điều bạn cần quan tâm khi quản lý cơ sở dữ liệu hệ thống trên SQL Server.

Tổng quan về Cơ sở dữ liệu Hệ thống

Cơ sở dữ liệu hệ thống là một phần của nhiều quy trình diễn ra khi bạn cài đặt phiên bản SQL Server. Theo mặc định, các cơ sở dữ liệu này được tạo theo các đường dẫn sau:

% chương trình% \ Microsoft SQL Server \ MSSQL15.MSSQLSERVER \ MSSQL \ DATA

% chương trình% \ Microsoft SQL Server \ MSSQL15.MSSQLSERVER \ MSSQL \ Log

Con đường có thể khác nhau. Trong quá trình cài đặt SQL Server, bạn có thể chỉ định vị trí của các tệp cơ sở dữ liệu hệ thống.

Để liệt kê tất cả các cơ sở dữ liệu hệ thống trong một ví dụ, bạn có thể gọi mã trong Liệt kê 1. Liệt kê 2 có thể được sử dụng để xác định vị trí của các tệp dữ liệu được liên kết với cơ sở dữ liệu hệ thống. Lưu ý rằng trong cả hai tập lệnh, chúng tôi sử dụng bộ lọc trả về cơ sở dữ liệu với database_id là 5 hoặc cao hơn 5.

Cơ sở dữ liệu hệ thống “hiển thị” thiết yếu có database_ids 1,2,3,4 - chúng tham chiếu đến master, tempdb, model và msdb, tương ứng. Ngoài ra còn có một cơ sở dữ liệu “vô hình” được gọi là cơ sở dữ liệu tài nguyên và các cơ sở dữ liệu hệ thống khác được tạo khi bạn bật các tính năng như sao chép.

-- Listing 1: System Databases
select 
name
,database_id
,create_date
,state_desc
,recovery_model_desc
,log_reuse_wait_desc
,physical_database_name
,is_db_chaining_on
,is_broker_enabled
,is_mixed_page_allocation_on
from sys.databases 
where database_id<5;

-- Listing 2: System Database Files
select 
name
,database_id
,DB_NAME(database_id)
,name
,physical_name
,type_desc
from sys.master_files 
where database_id<5;

Hình 1:Cơ sở dữ liệu hệ thống

Cơ sở dữ liệu chính

Cơ sở dữ liệu chính là cơ sở dữ liệu đầu tiên được mở khi khởi động SQL Server, chứa các dữ liệu sau:

  • Các bản ghi về cấu trúc / cấu hình của phiên bản và tất cả các cơ sở dữ liệu khác.
  • Các chế độ xem quản lý năng động nhất cần thiết để theo dõi phiên bản.

Do đó, nó có thông tin cần thiết để mở tất cả các cơ sở dữ liệu khác. Đó là lý do tại sao nó phải được mở đầu tiên. Câu hỏi là làm thế nào để làm điều đó.

Tham số khởi động SQL Server chứa hai mục nhập, xác định vị trí của dữ liệu cơ sở dữ liệu chính và tệp nhật ký. Các tham số khởi động mặc định chỉ bao gồm ba dòng - dòng thứ ba là vị trí tệp nhật ký lỗi. Khi SQL Server khởi động, nó phải có khả năng ghi vào tệp nhật ký lỗi đó.

Cơ sở dữ liệu chính sẽ mở ra đầu tiên. Thông tin được lưu trữ trong cơ sở dữ liệu chính, bao gồm các cấu hình được xác định bằng sp_configure, áp dụng để mở các cơ sở dữ liệu khác và hoàn tất quá trình khởi động phiên bản.

Hình 3:Tham số khởi động SQL Server

Có một số cách để tìm hiểu về các đối tượng hệ thống SQL Server hữu ích, như Chế độ xem và Chức năng quản lý động.

Ví dụ:mở rộng các chế độ xem hoặc các nút khả năng lập trình cho cơ sở dữ liệu chính trên trình khám phá đối tượng. Tại đó, hãy xem lại tên của các đối tượng này và nhận thêm thông tin chi tiết từ Books Online.

Bạn cũng có thể di chuyển thông tin đăng nhập từ phiên bản này sang phiên bản khác. Để làm điều đó, hãy khôi phục bản sao lưu của cơ sở dữ liệu chính vào phiên bản đích. Chúng tôi sẽ mô tả kỹ thuật cụ thể trong một bài viết riêng biệt.

Hình 4:Điều hướng các đối tượng cơ sở dữ liệu chính

Cơ sở dữ liệu tempDB

Cơ sở dữ liệu tempDB chịu trách nhiệm lưu trữ dữ liệu tạm thời giống như các kết quả trung gian của các hoạt động nặng. Nó có thể chứa các bản xây dựng lại chỉ mục, các phiên bản hàng của cơ sở dữ liệu được định cấu hình với các mức cô lập và các tính năng khác phụ thuộc vào việc lập phiên bản hàng, chẳng hạn như READ_COMMITTED_SNAPSHOT.

Hầu hết mọi người sẽ coi tempDB là một điểm nghẽn hiệu suất tiềm ẩn, vì mọi chức năng của cơ sở dữ liệu người dùng trong một trường hợp phụ thuộc vào tempDB.

Điều chỉnh tempDB nên là một bài tập có chủ ý. Tuy nhiên, bắt đầu với SQL Server 2016, bạn có thể thiết lập tempDB chính xác trong quá trình cài đặt SQL Server. Bài viết trước mô tả chi tiết cách bạn nên cấu hình và giám sát tempDB.

Cơ sở dữ liệu mô hình

Bạn có thể coi cơ sở dữ liệu mô hình như một mẫu. Mọi cơ sở dữ liệu người dùng được tạo trong một phiên bản SQL Server sẽ sử dụng cấu hình của cơ sở dữ liệu mô hình. Nó có cùng kích thước và cài đặt tự động phát triển, cùng vị trí tệp, v.v. Tuy nhiên, bạn có thể chỉ định các cài đặt đó một cách có chủ ý theo một cách khác trong câu lệnh CREATE DATABASE.

Về bản chất, nếu bạn có một ứng dụng tự tạo cơ sở dữ liệu với cài đặt mặc định, bạn có thể muốn định cấu hình cơ sở dữ liệu mô hình. Nó đảm bảo bạn có một số quyền kiểm soát đối với các cơ sở dữ liệu được tạo tự động này.

Hãy thử nghiệm điều này một chút, sử dụng mã trong Liệt kê 3.

-- Listing 3: Using the Model Database
select 
name
,database_id
,DB_NAME(database_id) database_name
,name
,physical_name
,type_desc
,size/1024*8 [size (MB)]
,growth/1024*8 [size (MB)]
from sys.master_files 
where DB_NAME(database_id)='model' or DB_NAME(database_id) like 'EXP%';
GO

create database EXP_BEFORE;
GO

USE [master]
GO
ALTER DATABASE [model] MODIFY FILE ( NAME = N'modeldev', SIZE = 102400KB , FILEGROWTH = 131072KB )
GO
ALTER DATABASE [model] MODIFY FILE ( NAME = N'modellog', SIZE = 102400KB )
GO

create database EXP_AFTER;
GO

select 
name
,database_id
,DB_NAME(database_id) database_name
,name
,physical_name
,type_desc
,size/1024*8 [size (MB)]
,growth/1024*8 [size (MB)]
from sys.master_files 
where DB_NAME(database_id)='model' or DB_NAME(database_id) like 'EXP%';
GO

Mã thực hiện các bước sau:

  1. Truy vấn sys.master_files để xác định cài đặt được sử dụng trong cơ sở dữ liệu mô hình
  2. Tạo cơ sở dữ liệu
  3. Thay đổi cài đặt phát triển tệp cơ sở dữ liệu mô hình và tự động phát triển
  4. Tạo một cơ sở dữ liệu khác
  5. Truy vấn sys.master_files lại

Hãy chú ý đến cụm từ duy nhất để tạo cơ sở dữ liệu - “TẠO CƠ SỞ DỮ LIỆU”. Bằng cách này, nó chọn các cài đặt thuộc cơ sở dữ liệu mô hình. Kết quả cho thấy rằng lần thứ hai chúng tôi phát hành lệnh CREATE DATABASE, cơ sở dữ liệu EXP_AFTER đã nhận được kích thước tệp là 96GB và tự động phát triển là 128 MB (xem Hình 5).

Hình 5:Sử dụng Cơ sở dữ liệu Mô hình

Cũng cần nhắc lại rằng không phải tất cả các cài đặt cơ sở dữ liệu đều được tự động chọn từ cơ sở dữ liệu mô hình. Ví dụ:MIXED_PAGE_ALLOCATION được đặt thành TẮT khi bạn tạo cơ sở dữ liệu mới, ngay cả khi nó đang BẬT trong mô hình và các cơ sở dữ liệu hệ thống khác.

Cơ sở dữ liệu msdb

Bạn có thể coi msdb là cơ sở dữ liệu SQL Server Agent. Nó lưu trữ tất cả dữ liệu liên quan đến công việc, thư cơ sở dữ liệu, người vận hành và tự động hóa. Dữ liệu liên quan đến vận chuyển nhật ký giao dịch, sao chép, v.v., cũng có ở đó. Bạn có thể xác minh điều đó bằng cách chạy các nhóm truy vấn trong Liệt kê 4 trong trường hợp của bạn. Ví dụ:các đối tượng liên quan đến tự động hóa có trong msdb.

-- Listing 4: Querying msdb Objects

-- Jobs, Alerts, Operators sit in the msdb database ...
select * from msdb..sysjobs
select * from msdb..sysalerts
select * from msdb..sysoperators
select * from msdb..sysmail_allitems

-- ... NOT in the master database
select * from master..sysjobs
select * from master..sysalerts
select * from master..sysoperators
select * from master..sysmail_allitems

Bạn có thể tìm hiểu nhiều về các đối tượng trong cơ sở dữ liệu msdb bằng cách giải nén và điều tra chúng trên SQL Server Books Online. Cách tiếp cận cũng giống như với cơ sở dữ liệu chính.

Bạn có thể di chuyển công việc, toán tử, v.v. từ phiên bản SQL Server này sang phiên bản SQL Server khác. Đối với điều đó, hãy sao lưu cơ sở dữ liệu msdb từ cá thể nguồn và khôi phục nó về cá thể đích. Chúng tôi sẽ giải quyết vấn đề này trong một bài viết khác.

Phần kết

Trong bài viết này, chúng tôi đã cung cấp một cái nhìn tổng quan nhanh chóng về cơ sở dữ liệu hệ thống.

Cơ sở dữ liệu hệ thống đi kèm với cài đặt SQL Server theo mặc định. Việc hiểu các cơ sở dữ liệu hệ thống khác nhau và vai trò của chúng là một trợ giúp tuyệt vời để quản lý phiên bản SQL Server của bạn.

Bạn có thể biết thêm thông tin về những gì họ lưu trữ và hiểu cách quản lý chúng từ Sách Trực tuyến và các bài viết khác trên CodingSight.

Tài liệu tham khảo

  1. Cơ sở dữ liệu Hệ thống
  2. Cơ sở dữ liệu và lưu trữ MS SQL Server
  3. Chuỗi sở hữu cơ sở dữ liệu chéo


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn phân cấp trong SQL Server 2005

  2. Dấu ngoặc nhọn trong T-SQL

  3. Thực thi thủ tục đã lưu trữ với tham số Đầu ra?

  4. Làm thế nào để tìm các hàng liên tiếp dựa trên giá trị của một cột?

  5. Tại sao bạn tạo một Dạng xem trong cơ sở dữ liệu?