sql >> Databáze >  >> RDS >> Sqlserver

Systémové databáze SQL Server – základní pojmy

Úvod

Návrh SQL Serveru předpokládá mapování typu one-to-many mezi databázovým strojem (instancí) a databázemi hostovanými na instanci. To znamená, že na jednu instanci SQL serveru můžete nasadit několik databází. Podle dokumentace společnosti Microsoft můžete mít až 32 767 databází na jedné instanci SQL Server. Samozřejmě budou existovat omezení, jako jsou zdroje na serveru, správa souběžnosti na TempDB, síťový provoz atd.

Databáze nasazené na instanci SQL Server mohou být systémové databáze nebo databáze uživatelů. Systémové databáze se dodávají s instancí. V tomto článku probereme účel každé systémové databáze. Také si vyjasníme, na co si musíte dát pozor při správě systémových databází na SQL Serveru.

Přehled systémových databází

Systémové databáze jsou součástí mnoha procesů probíhajících při instalaci instance SQL Server. Ve výchozím nastavení jsou tyto databáze vytvořeny v následujících cestách:

%programfiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA

a

%programfiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log

Cesta může být různá. Během instalace SQL Serveru můžete určit umístění systémových databázových souborů.

Chcete-li vypsat všechny systémové databáze v instanci, můžete vyvolat kód ve Výpisu 1. Výpis 2 lze použít k určení umístění datových souborů spojených se systémovými databázemi. Všimněte si, že v obou skriptech používáme filtr, který vrací databáze s database_id 5 nebo vyšším než 5.

Základní „viditelné“ systémové databáze mají database_ids 1,2,3,4 – odkazují na master, tempdb, model, respektive msdb. Existuje také „neviditelná“ databáze nazývaná zdrojové databáze a další systémové databáze vytvořené, když povolíte funkce, jako je replikace.

-- 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;

Obrázek 1:Systémové databáze

Hlavní databáze

Hlavní databáze je první databáze otevřená při spuštění SQL Serveru a obsahuje následující data:

  • Záznamy struktury/konfigurace instance a všech ostatních databází.
  • Nejdynamičtější zobrazení správy, která jsou nezbytná pro monitorování instance.

Má tedy informace potřebné pro otevření všech ostatních databází. Proto se musí otevřít jako první. Otázkou je, jak to udělat.

Spouštěcí parametry SQL Serveru obsahují dvě položky, které definují umístění dat a souborů protokolu hlavní databáze. Výchozí parametry spouštění obsahují pouze tři řádky – třetí je umístění souboru protokolu chyb. Když se SQL Server spustí, musí být schopen zapisovat do tohoto souboru protokolu chyb.

Nejprve se otevře hlavní databáze. Informace uložené v hlavní databázi, včetně konfigurací definovaných pomocí sp_configure, platí pro otevření dalších databází a dokončení procesu spouštění instance.

Obrázek 3:Parametry spouštění serveru SQL Server

Existuje několik způsobů, jak se dozvědět o užitečných objektech systému SQL Server, jako jsou zobrazení a funkce dynamické správy.

Například rozbalte pohledy nebo uzly programovatelnosti pro hlavní databázi v průzkumníku objektů. Zde si prohlédněte názvy těchto objektů a získejte další podrobnosti z Books Online.

Můžete také migrovat přihlášení z jedné instance do druhé. Za tímto účelem obnovte zálohu hlavní databáze do cílové instance. Konkrétní techniku ​​popíšeme v samostatném článku.

Obrázek 4:Navigace v objektech hlavní databáze

Databáze tempDB

Databáze tempDB je zodpovědná za ukládání dočasných dat, jako jsou mezivýsledky těžkých operací. Může obsahovat přestavby indexu, verze řádků databází konfigurovaných s úrovněmi izolace a další funkce, které závisí na verzování řádků, jako je READ_COMMITTED_SNAPSHOT.

Většina lidí by považovala tempDB za potenciální problémové místo výkonu, protože funkce každé uživatelské databáze v instanci závisí na tempDB.

Ladění tempDB by mělo být záměrným cvičením. Počínaje SQL Serverem 2016 však můžete tempDB přesně nastavit během instalace SQL Server. Předchozí článek podrobně popisuje, jak byste měli nakonfigurovat a monitorovat tempDB.

Databáze modelů

S modelovou databází můžete zacházet jako se šablonou. Každá uživatelská databáze vytvořená v instanci SQL Serveru přebírá konfiguraci modelové databáze. Má stejnou velikost a nastavení automatického růstu, stejná umístění souborů atd. Tato nastavení však můžete záměrně zadat jiným způsobem v příkazu CREATE DATABASE.

V podstatě, pokud máte aplikaci, která sama vytváří databázi s výchozím nastavením, možná budete chtít nakonfigurovat modelovou databázi. Zajišťuje, že budete mít určitou kontrolu nad tím, jak se tyto automaticky vytvořené databáze vyvíjejí.

Pojďme si s tím trochu zaexperimentovat pomocí kódu ve výpisu 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

Kód provede následující kroky:

  1. Zeptejte se sys.master_files k určení nastavení použitých v modelové databázi
  2. Vytvořte databázi
  3. Změňte nastavení růstu a automatického růstu souboru modelové databáze
  4. Vytvořit další databázi
  5. Dotaz na sys.master_files znovu

Věnujte pozornost jediné frázi pro vytvoření databáze – „CREATE DATABASE“. Tímto způsobem převezme nastavení patřící do modelové databáze. Výsledky ukazují, že když jsme podruhé zadali příkaz CREATE DATABASE, databáze EXP_AFTER získala velikost souboru 96 GB a automatický růst 128 MB (viz obrázek 5).

Obrázek 5:Použití modelové databáze

Za zmínku také stojí, že ne všechna nastavení databáze se automaticky přebírají z modelové databáze. Například MIXED_PAGE_ALLOCATION nastaveno na VYPNUTO, když vytváříte novou databázi, i když je v modelových a jiných systémových databázích zapnuto.

Databáze msdb

Můžete považovat msdb za databázi SQL Server Agent. Ukládá všechna data související s úlohami, databázovou poštou, operátory a automatizací. Jsou zde také data související s expedicí protokolu transakcí, replikací atd. Můžete to ověřit spuštěním sad dotazů ve výpisu 4 ve vaší instanci. Například objekty související s automatizací jsou přítomny v 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

Můžete se dozvědět hodně o objektech v databázích msdb jejich extrahováním a prozkoumáním na SQL Server Books Online. Postup je stejný jako u hlavní databáze.

Úlohy, operátory atd. můžete migrovat z jedné instance SQL Serveru do druhé. Za tímto účelem vezměte zálohu databáze msdb ze zdrojové instance a obnovte ji do cílové instance. Tomu se budeme věnovat v jiném článku.

Epilolog

V tomto článku jsme poskytli rychlý přehled systémových databází.

Systémové databáze jsou standardně dodávány s instalací SQL Server. Pochopení různých systémových databází a jejich rolí je vynikající pomůckou pro správu vaší instance SQL Server.

Další informace o tom, co ukládají, a porozumět tomu, jak je spravovat, můžete získat z Books Online a dalších článků na CodingSight.

Odkazy

  1. Systémové databáze
  2. Databáze a úložiště MS SQL Server
  3. Řetězení vlastnictví mezi databázemi


  1. Spravujte MySQL pomocí phpMyAdmin na Ubuntu 10.10 (Maverick)

  2. Generování diagramu vztahu tabulky z existujícího schématu (SQL Server)

  3. ORA-00932:nekonzistentní datové typy:očekáváno - dostal CLOB

  4. Přihlaste výstup DBMS_OUTPUT.Put_Line do tabulky v Oracle pomocí DBMS_OUTPUT.Get_Lines