Megosztás:


Rendszeradatbázisok újraépítése

A következőkre vonatkozik:SQL Server

A rendszeradatbázisokat újra kell létrehozni a , modell, msdbvagy erőforrás- rendszeradatbázisok sérülési problémáinak megoldásához, illetve az alapértelmezett kiszolgálószintű rendezés módosításához. Ez a cikk részletes útmutatást nyújt a rendszeradatbázisok SQL Serverben való újraépítéséhez.

Ez a cikk nem kapcsolódik az indexek újraépítéséhez.

Korlátozások

A master, model, msdbés tempdb rendszeradatbázisok újraépítésekor a rendszer elveti és újra létrehozza az adatbázisokat az eredeti helyén. Ha az újraépítési utasításban új rendezés van megadva, a rendszeradatbázisok ezzel a rendezési beállítással jönnek létre. Az adatbázisok felhasználói módosításai elvesznek. Előfordulhat például, hogy felhasználó által definiált objektumok vannak a master adatbázisban, ütemezett feladatok msdb, vagy a model adatbázis alapértelmezett adatbázis-beállításainak módosítása.

Előfeltételek

A rendszeradatbázisok újraépítése előtt végezze el a következő feladatokat, hogy a rendszeradatbázisokat visszaállíthassa az aktuális beállításokra.

  1. Rögzítse az összes kiszolgálószintű konfigurációs értéket.

    SELECT * FROM sys.configurations;
    
  2. Rögzítse az SQL Server-példányra alkalmazott összes gyorsjavítást és az aktuális kollációt. Ezeket a gyorsjavításokat újra kell alkalmaznia a rendszeradatbázisok újraépítése után.

    SELECT
    SERVERPROPERTY('ProductVersion ') AS ProductVersion,
    SERVERPROPERTY('ProductLevel') AS ProductLevel,
    SERVERPROPERTY('ResourceVersion') AS ResourceVersion,
    SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime,
    SERVERPROPERTY('Collation') AS Collation;
    
  3. Rögzítse a rendszeradatbázisok összes adatának és naplófájljának aktuális helyét. A rendszeradatbázisok újraépítése minden rendszeradatbázist az eredeti helyre telepít. Ha a rendszeradatbázis adatait vagy naplófájljait egy másik helyre helyezte át, akkor újra át kell helyeznie a fájlokat.

    SELECT name, physical_name AS current_file_location
    FROM sys.master_files
    WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));
    
  4. Keresse meg a master, modelés msdb adatbázisok aktuális biztonsági mentését.

  5. Ha az SQL Server példánya replikációs terjesztőként van konfigurálva, keresse meg a distribution adatbázis aktuális biztonsági mentését.

  6. Győződjön meg arról, hogy rendelkezik a rendszeradatbázisok újraépítéséhez szükséges engedélyekkel. A művelet végrehajtásához a sysadmin rögzített kiszolgálói szerepkör tagjának kell lennie. További információ: Server-Level Szerepkörök.

  7. Ellenőrizze, hogy a master, model, msdb adatok és naplófájlok másolatai léteznek-e a helyi kiszolgálón. A sablonfájlok alapértelmezett helye a C:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\Binn\Templates (ahol <xx> a telepített verzió). Ezeket a fájlokat az újraépítési folyamat során használják, és a telepítés sikeréhez jelen kell lenniük. Ha hiányoznak, futtassa a telepítő javítási funkcióját, vagy másolja manuálisan a fájlokat a telepítési adathordozóról. A telepítési adathordozón található fájlok megkereséséhez keresse meg a megfelelő platformkönyvtárat (x86 vagy x64), majd lépjen a setup\sql_engine_core_inst_msi\Pfiles\SqlServr\MSSQL.X\MSSQL\Binn\Templates.

Rendszeradatbázisok újraépítése

Az alábbi eljárás újraépíti a master, model, msdbés tempdb rendszeradatbázisokat. Nem adhatja meg az újraépítendő rendszeradatbázisokat. Fürtözött példányok esetén ezt az eljárást az aktív csomóponton kell végrehajtani, és a megfelelő fürt-alkalmazás-csoportban lévő SQL Server erőforrást offline állapotba kell helyezni az eljárás végrehajtása előtt.

Ez az eljárás nem építi újra a resource adatbázist. A cikk későbbi részében lásd a az erőforrásrendszer-adatbázis újraépítése című szakaszt.

Rendszeradatbázisok újraépítése az SQL Server egy példányához

  1. Szúrja be az SQL Server telepítési adathordozóját a lemezmeghajtóba, vagy egy parancssorból módosítsa a könyvtárakat a helyi kiszolgálón található setup.exe fájl helyére. Az SQL Server 2022 (16.x) esetében a kiszolgáló alapértelmezett helye C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\SQLServer2022.

  2. A parancssori ablakban adja meg a következő parancsot. A választható paraméterek jelölésére szögletes zárójelek szolgálnak. Ne írja be a zárójeleket. Ha olyan Windows operációs rendszert használ, amelyen engedélyezve van a felhasználói fiókok felügyelete (UAC), a telepítő futtatása emelt szintű jogosultságokat igényel. A parancssort rendszergazdaként kell futtatni.

    setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName ]
    
    Paraméter neve Leírás
    /QUIET vagy /Q Megadja, hogy a telepítőnek felhasználói felület nélkül kell futnia.
    /ACTION=REBUILDDATABASE Megadja, hogy a telepítőnek újra létre kell hoznia a rendszeradatbázisokat.
    /INSTANCENAME=InstanceName Az SQL Server példányának neve. Az alapértelmezett példányhoz írja be az MSSQLSERVER nevet.
    /SQLSYSADMINACCOUNTS=fiókok Megadja azokat a Windows-csoportokat vagy egyéni fiókokat, amelyeket hozzá szeretne adni a sysadmin rögzített kiszolgálói szerepkörhöz. Egynél több fiók megadásakor különítse el a fiókokat egy üres szóközzel. Például írja be a következőt: BUILTIN\Administrators MyDomain\MyUser. Ha olyan fiókot ad meg, amely üres szóközt tartalmaz a fióknéven belül, a fiókot idézőjelek közé kell foglalnia. Írja be például NT AUTHORITY\SYSTEM.
    [ /SAPWD=StrongPassword ] Megadja az SQL Server sa-fiók jelszavát. Ez a paraméter akkor szükséges, ha a példány vegyes hitelesítést (SQL Server és Windows-hitelesítés) használ.

    biztonsági megjegyzés: A sa fiók egy jól ismert SQL Server-fiók, amelyet gyakran rosszindulatú felhasználók céloznak meg. Fontos, hogy erős jelszót használjon a sa bejelentkezéshez.

    Ne adja meg ezt a paramétert a Windows-hitelesítési módhoz.
    [ /SQLCOLLATION=CollationName ] Új kiszolgálószintű összehasonlítási sorrendet ad meg. Ez a paraméter nem kötelező. Ha nincs megadva, a kiszolgáló aktuális sorrendjét használják.

    Fontos: A kiszolgálószintű rendezés módosítása nem módosítja a meglévő felhasználói adatbázisok rendezést. Az újonnan létrehozott felhasználói adatbázisok alapértelmezés szerint az új rendezést használják.

    További információ: Kiszolgáló rendezésibeállítása vagy módosítása.
    [ /SQLTEMPDBFILECOUNT=NumberOfFiles ] A tempdb adatfájlok számát adja meg. Ez az érték 8-ra vagy a magok számára növelhető, attól függően, hogy bármelyik a nagyobb.

    Alapértelmezett érték: 8 vagy a magok száma, attól függően, hogy melyik alacsonyabb.
    [ /SQLTEMPDBFILESIZE=A fájl mérete MB-ben ] Az egyes tempdb adatfájlok kezdeti méretét adja meg MB-ban. A beállítással akár 1024 MB méretű is lehet.

    Alapértelmezett érték: 8
    [ /SQLTEMPDBFILEGROWTH=FileSizeInMB ] Az egyes tempdb adatfájlok fájlnövekedési növekményét adja meg MB-ban. A 0 érték azt jelzi, hogy az automatikus növekedés ki van kapcsolva, és nincs további hely. A beállítással akár 1024 MB méretű is lehet.

    Alapértelmezett érték: 64
    [ /SQLTEMPDBLOGFILESIZE=FileSizeInMB ] A tempdb naplófájl kezdeti méretét adja meg MB-ban. A beállítással akár 1024 MB méretű is lehet.

    Alapértelmezett érték: 8.

    Megengedett tartomány: Min = 8, max = 1024.
    [ /SQLTEMPDBLOGFILEGROWTH=FileSizeInMB ] A tempdb naplófájl fájlnövekedési növekményét adja meg MB-ban. A 0 érték azt jelzi, hogy az automatikus növekedés ki van kapcsolva, és nincs további hely. A beállítással akár 1024 MB méretű is lehet.

    Alapértelmezett érték: 64

    Megengedett tartomány: Min = 8, max = 1024.
    [ /SQLTEMPDBDIR=Könyvtárak ] Megadja tempdb adatfájlok könyvtárait. Ha egynél több könyvtárat ad meg, különítse el a könyvtárakat üres szóközzel. Ha több könyvtár van megadva, a tempdb adatfájlok ciklikus időszeleteléses módon lesznek elosztva a könyvtárak között.

    Alapértelmezett érték: System Data Directory
    [ /SQLTEMPDBLOGDIR=Directory ] Adja meg a tempdb naplófájl könyvtárának helyét.

    Alapértelmezett érték: System Data Directory
  3. Amikor a telepítő befejezte a rendszer-adatbázisok újraépítését, üzenet nélkül visszatér a parancssorba. Vizsgálja meg a Summary.txt naplófájlt, és ellenőrizze, hogy a folyamat sikeresen befejeződött-e. Ez a fájl a C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logshelyen található.

  4. A RebuildDatabase forgatókönyv törli a rendszeradatbázisokat, és tiszta állapotban telepíti őket újra. Mivel a tempdb fájlszám beállítása nem marad meg, a tempdb fájlok száma nem ismert a beállítás során. Ezért az ebuildDatabase forgatókönyv nem ismeri az olvasandó fájlok számát tempdb. Az SQLTEMPDBFILECOUNT paraméterrel újra megadhatja a tempdb fájlok számát. Ha a paraméter nincs megadva, a RebuildDatabase alapértelmezett számú tempdb fájlt ad hozzá, amely a cpu-számmal megegyező számú tempdb fájl, vagy 8, amelyik alacsonyabb.

Újraépítés utáni feladatok

Az adatbázis újraépítése után előfordulhat, hogy a következő további feladatokat kell elvégeznie:

  • Állítsa vissza a master, modelés msdb adatbázisok legutóbbi teljes biztonsági másolatát. További információ: Rendszeradatbázisok (SQL Server) biztonsági mentése és visszaállítása.

    Fontos

    Ha módosította a kiszolgáló rendezést, ne állítsa vissza a rendszeradatbázisokat. Ezzel lecseréli az új rendezést az előző rendezési beállításra.

    Ha nem érhető el biztonsági másolat, vagy ha a visszaállított biztonsági mentés nem aktuális, hozza létre újra a hiányzó bejegyzéseket. Például hozza létre újra az összes hiányzó bejegyzést a felhasználói adatbázisokhoz, biztonsági mentési eszközökhöz, SQL Server-bejelentkezésekhez, végpontokhoz stb. A bejegyzések újbóli létrehozásának legjobb módja az, ha az eredeti szkripteket futtatja, amelyek létrehozták őket.

    Fontos

    Javasoljuk, hogy biztonságossá tegye a szkripteket, hogy ne módosítsák őket illetéktelen személyek.

  • Ha az SQL Server példánya replikációs terjesztőként van konfigurálva, vissza kell állítania a distribution adatbázist. További információ: Replikált adatbázisok biztonsági mentése és visszaállítása.

  • Helyezze át a rendszeradatbázisokat a korábban rögzített helyekre. További információ: Rendszeradatbázisok áthelyezése.

  • Ellenőrizze, hogy a kiszolgálószintű konfigurációs értékek megegyeznek-e a korábban rögzített értékekkel.

Az erőforrás-adatbázis újraépítése

Az alábbi eljárás újraépíti a resource rendszeradatbázist. A resource adatbázis újraépítésekor minden gyakori javítás elveszik, ezért újra kell alkalmazni.

Az erőforrásrendszer-adatbázis újraépítése

  1. Indítsa el az SQL Server telepítőprogramját (setup.exe) a terjesztési adathordozóról.

  2. A bal oldali navigációs területen válassza a Karbantartási, majd a Javításlehetőséget.

  3. A telepítéstámogatási szabályok és a fájlkezelési rutinok futnak annak érdekében, hogy a rendszerhez szükséges előfeltételek telepítve legyenek, és hogy a számítógép teljesítse a telepítés érvényesítési szabályait. A folytatáshoz válassza OK vagy Telepítés lehetőséget.

  4. A Példány kiválasztása lapon válassza ki a kijavítani kívánt példányt, majd kattintson a Következőgombra.

  5. A javítási szabályok a művelet validálásához kerülnek végrehajtásra. A folytatáshoz válassza Továbblehetőséget.

  6. A Javításra kész oldalról válassza a Javításlehetőséget. A Befejezett oldal jelzi, hogy a művelet befejeződött.

Új msdb-adatbázis létrehozása

Ha a msdb adatbázis sérült vagy gyanús, és nincs biztonsági másolata a msdb adatbázisról, létrehozhat egy új msdb a instmsdb szkript használatával.

Figyelmeztetés

Ha újraépíti a msdb adatbázist a instmsdb.sql szkripttel, akkor a msdb tárolt összes információ megszűnik, például a feladatok, a riasztások, az operátorok, a karbantartási tervek, a biztonsági mentési előzmények, a házirendalapú felügyeleti beállítások, az adatbázisposta, a teljesítményadatraktár stb.

  1. Állítsa le az adatbázismotorhoz csatlakozó összes szolgáltatást, beleértve az SQL Server-ügynököt, az SSRS-t, az SSIS-t és az SQL Servert adattárként használó összes alkalmazást.

  2. Indítsa el az SQL Servert a parancssorból a következő paranccsal:

    NET START MSSQLSERVER /T3608
    

    További információért tekintse meg: Az adatbázis-motor, az SQL Server Agent vagy az SQL Server böngészőszolgáltatás indítása, leállítása, szüneteltetése, folytatása, újraindítása. A 3608-at jelző nyomkövetési jelzőről a TF3608 című témakörben olvashat bővebben.

  3. Egy másik parancssori ablakban válassza le a msdb adatbázist a következő parancs végrehajtásával, és cserélje le a <servername> az SQL Server példányára:

    SQLCMD -E -S<servername> -dmaster -Q"EXEC sp_detach_db msdb"
    
  4. A Windows Intézővel nevezze át a msdb adatbázisfájlokat. Alapértelmezés szerint ezek az SQL Server-példány DATA almappájában találhatók.

  5. Az SQL Server Configuration Managerrel állítsa le és indítsa újra az adatbázismotor szolgáltatást normál esetben további nyomkövetési jelzők nélkül.

  6. Egy parancssori ablakban csatlakozzon az SQL Serverhez, és hajtsa végre a következő parancsot:

    SQLCMD -E -S<servername> -i"C:\Program Files\Microsoft SQL Server\MSSQLXX.INSTANCE_NAME\MSSQL\Install\instmsdb.sql" -o"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Install\instmsdb.out"
    

    Cserélje le a <servername>-t az adatbázismotor példányával. Használja az SQL Server-példány fájlrendszer-elérési útját. Cserélje le a MSSQLXX.INSTANCE_NAME-t az ön verziójának és példányának megfelelő könyvtárra.

  7. A Windows Jegyzettömb használatával nyissa meg a instmsdb.out fájlt, és ellenőrizze a kimenetet, hogy vannak-e hibák.

  8. Telepítse újra a példányra telepített CU-kat, amelyek a msdb adatbázist a jelenlegi CU-szintre frissítik.

  9. Hozza létre újra a msdb adatbázisban tárolt felhasználói tartalmat, például feladatokat, riasztásokat és egyéb elemeket.

  10. Készítsen biztonsági másolatot a msdb adatbázisról.

A tempdb-adatbázis újraépítése

Ha a tempdb adatbázis sérült vagy gyanús, és az adatbázismotor nem indul el, újraépítheti tempdb anélkül, hogy újra kellene építenie az összes rendszeradatbázist.

  1. Ha nem hiányzik, nevezze át az aktuális tempdb.mdf és templog.ldf fájlokat.

  2. Indítsa el az SQL Servert egy parancssorból az sqlservr alkalmazással.

    sqlservr -c -f -T3608 -T4022 -s <instance> -mSQLCMD
    

    Alapértelmezett példánynévhez használja a MSSQLSERVER-t. Névszerinti példány esetében használja a MSSQL$<instance_name>-et. A 4022 nyomkövetési jelző letiltja az indítási tárolt eljárások végrehajtását. A -mSQLCMD csak sqlcmd.exe tud csatlakozni a kiszolgálóhoz. További információ: Egyéb indítási beállítások.

    Jegyzet

    Győződjön meg arról, hogy a parancssori ablak az SQL Server indítása után is nyitva marad. A parancssor ablakának bezárása leállítja a folyamatot.

  3. Csatlakozzon a kiszolgálóhoz sqlcmdhasználatával, majd az alábbi tárolt eljárással állítsa alaphelyzetbe a tempdb adatbázis állapotát.

    exec master..sp_resetstatus tempdb
    
  4. Állítsa le a kiszolgálót a parancssori ablakban található Ctrl+C lenyomásával.

  5. Indítsa újra az SQL Server szolgáltatást. Ezzel új tempdb adatbázisfájlokat hoz létre, és helyreállítja a tempdb adatbázist.

Újraépítési hibák elhárítása

A parancssori ablakban szintaxis és egyéb futásidejű hibák jelennek meg. Vizsgálja meg a beállítási utasítást a következő szintaxishibák esetén:

  • Hiányzik a perjel (/) az egyes paraméterek neve előtt.

  • Hiányzik az egyenlőségjel (=) a paraméter neve és a paraméter értéke között.

  • Üres szóközök jelenléte a paraméter neve és az egyenlőségjel között.

  • Vesszők (,) vagy más karakterek jelenléte, amelyek nincsenek megadva a szintaxisban.

Az újraépítési művelet befejezése után vizsgálja meg az SQL Server naplóit az esetleges hibák esetén. Az alapértelmezett naplóhely C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logs. Az újraépítési folyamat eredményeit tartalmazó naplófájl megkereséséhez módosítsa a címtárakat a Naplók mappára egy parancssorból, majd futtassa a findstr /s RebuildDatabase summary*.*. Ez a keresés a rendszeradatbázisok újraépítésének eredményeit tartalmazó naplófájlokra mutat. Nyissa meg a naplófájlokat, és vizsgálja meg a vonatkozó hibaüzeneteket.