Megosztás a következőn keresztül:


Adatbázis azonnali fájl inicializálása

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Ebben a cikkben megismerheti az azonnali fájl inicializálását (IFI), és azt, hogyan teheti lehetővé, hogy felgyorsítsa az SQL Server-adatbázisfájlok növekedését.

Alapértelmezés szerint az adatok és naplófájlok inicializálásával felülírja a lemezen maradt meglévő adatokat a korábban törölt fájlokból. Az adatok és naplófájlok első inicializálása a fájlok nullázásával (nullákkal való kitöltéssel) történik a következő műveletek végrehajtásakor:

  • Hozzon létre egy adatbázist.
  • Adjon hozzá adatokat vagy naplófájlokat egy meglévő adatbázishoz.
  • Meglévő fájl méretének növelése (beleértve az automatikus mentési műveleteket is).
  • Adatbázis vagy fájlcsoport visszaállítása.

Az SQL Serverben az azonnali fájl inicializálása lehetővé teszi a korábban említett fájlműveletek gyorsabb végrehajtását, mivel a felhasznált lemezterületet anélkül adja vissza, hogy nullákkal töltenél be. Ehelyett a régi lemeztartalmak felülíródnak, mivel a rendszer új adatokat ír a fájlokba.

Az Azure SQL Database-ben és a felügyelt Azure SQL-példányban az azonnali fájl inicializálása csak tranzakciónapló-fájlokhoz érhető el.

Azonnali fájl inicializálása és a tranzakciónapló

A következőkre vonatkozik: AZ SQL Server 2022 (16.x) és újabb verziói, valamint az Azure SQL Database és a felügyelt Azure SQL-példány.

Korábban a tranzakciónapló-fájlok nem inicializálhatók azonnal. Az SQL Server 2022 (16.x) (minden kiadás) és az Azure SQL Database és a felügyelt Azure SQL-példány esetében azonban a tranzakciónapló legfeljebb 64 MB-os automatikus növekedési eseményei kihasználhatják az azonnali fájl inicializálását. Az új adatbázisok alapértelmezett automatikus növekedési méretnövekedése 64 MB. A tranzakciónapló-fájlok automatikus növekedése, ha nagyobb, mint 64 MB, nem részesül az azonnali fájlinicializálás előnyeiben.

Ellentétben az adatfájlok azonnali fájl-inicializálásával, amely megakadályozza, ha a transzparens adattitkosítás (TDE) engedélyezve van, az azonnali fájl inicializálása engedélyezett a tranzakciónapló-növekedéshez azon adatbázisokon, amelyeken engedélyezve van a TDE, mivel a tranzakciónapló-fájl növekszik, és hogy a tranzakciónapló soros módon van beírva.

  • Az azonnali fájl inicializálása az Azure SQL Database és a felügyelt Azure SQL-példány általános célú és üzleti szempontból kritikus szintjeihez használható, csak a tranzakciónapló-fájlok növekedésének érdekében.

  • Az azonnali fájl inicializálása nem konfigurálható az Azure SQL Database-ben és a felügyelt Azure SQL-példányban.

Azonnali fájl inicializálásának engedélyezése

Az adatfájlok azonnali fájl inicializálása csak akkor érhető el, ha a szolgáltatásfiók vagy az Adatbázismotor szolgáltatás biztonsági azonosítója rendelkezik a SE_MANAGE_VOLUME_NAME jogosultsággal. A Windows-rendszergazdák csoport tagjai rendelkeznek ezzel a joggal, és a Kötetkarbantartási feladatok végrehajtása biztonsági szabályzatához való hozzáadásukkal más felhasználóknak is biztosíthatják azt. A SE_MANAGE_VOLUME_NAME jogosultság nem szükséges a legfeljebb 64 MB-os növekedési események azonnali fájl inicializálásához a tranzakciónaplóban, amelyet az SQL Server 2022 (16.x) kiadásával vezettek be.

Javasoljuk, hogy adja meg a SE_MANAGE_VOLUME_NAME jogosultságot az Adatbázismotor szolgáltatás sid-jének . Ez biztosítja, hogy a támogatás akkor is megmarad, ha módosítja az Adatbázismotor szolgáltatás szolgáltatásfiókját. További információ: Szolgáltatásazonosítók használata az SQL Server szolgáltatásaihoz való engedélyek megadásához.

Fontos

Egyes funkciók használata, például a Transzparens adattitkosítás (TDE) megakadályozhatja az azonnali fájl inicializálását (IFI). Az SQL Server 2022 (16.x) és újabb verzióiban, valamint az Azure SQL Database-ben és az Azure SQL Managed Instance-ben az IFI engedélyezett a tranzakciónaplóban. További információ: Azonnali fájl inicializálása és a tranzakciónapló.

Az SQL Server 2016 (13.x) és újabb verzióiban ez az engedély a telepítéskor, a telepítés során adható meg a Database Engine szolgáltatás biztonsági azonosítójának (SID) számára.

Ha a parancssor telepítését használja, adja hozzá az /SQLSVCINSTANTFILEINIT argumentumot, vagy jelölje be a Kötetkarbantartási feladat jogosultságának megadása az SQL Server Adatbázismotor-szolgáltatáshoz a telepítővarázslóban.

Az alábbi lépések szerint adj a fióknak vagy szolgáltatás-azonosítónak (SID) Perform volume maintenance tasks biztonsági szabályzatot:

  1. Azon a számítógépen, amelyen az adatfájlok létrejönnek, nyissa meg a Helyi biztonsági házirend alkalmazást (secpol.msc).

  2. A bal oldali panelen bontsa ki a Helyi házirendek elemet, majd válassza a Felhasználói jogok hozzárendelése lehetőséget.

  3. A jobb oldali panelen duplán kattintson a Kötetkarbantartási feladatok végrehajtásaelemre.

  4. Válassza a Felhasználó vagy csoport hozzáadása lehetőséget, és adja hozzá az adatbázismotor szolgáltatásfiókját vagy a szolgáltatás SID-azonosítóját.

  5. Válassza az Alkalmaz lehetőséget, majd zárja be az összes Helyi biztonsági házirend párbeszédpanelt.

  6. Indítsa újra az Adatbázismotor szolgáltatást.

  7. Az adatbázismotor hibanaplójának ellenőrzése indításkor.

    A következőkre vonatkozik: SQL Server (az SQL Server 2012 (11.x) SP4, az SQL Server 2014 (12.x) SP2 és az SQL Server 2016 (13.x) és újabb verzióktól kezdve).

    1. Ha az adatbázismotor szolgáltatásfiókja vagy a szolgáltatás SID-címe megkapja a SE_MANAGE_VOLUME_NAME jogosultságot, a rendszer naplózza az alábbi példához hasonló tájékoztató üzenetet:

      Database Instant File Initialization: enabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.
      
    2. Ha az adatbázismotor szolgáltatásfiókja vagy a szolgáltatás SID-címe nem kapta meg a SE_MANAGE_VOLUME_NAME jogosultságot, a rendszer naplózza az alábbi példához hasonló tájékoztató üzenetet:

      Database Instant File Initialization: disabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.
      

    Megjegyzés:

    Az SQL Serverben használja a instant_file_initialization_enabled értékét a sys.dm_server_services dinamikus felügyeleti nézetben, hogy megállapítsa, engedélyezve van-e az azonnali fájlinicializálás a példányához.

Biztonsági szempontok

Javasoljuk, hogy engedélyezze az azonnali fájl inicializálását, mivel az előnyök meghaladják a biztonsági kockázatot.

Amikor azonnali fájl inicializálást használ, a törölt lemez tartalma csak az új adatok fájlba írásakor lesz felülírva. Emiatt a törölt tartalom egy jogosulatlan tag számára is elérhető lehet, amíg más adatok nem írnak az adatfájl adott területére.

Bár az adatbázisfájl az SQL Server-példányhoz van csatolva, ezt az adatfeltárás kockázatát csökkenti a fájl belátás szerinti hozzáférés-vezérlési listája (DACL). A DACL csak az SQL Server szolgáltatásfiókjához, a szolgáltatás SID-éhez és a helyi rendszergazdához engedélyezi a fájlhozzáférést. Amikor azonban a fájl leválasztásra kerül, akkor egy olyan felhasználó vagy szolgáltatás is hozzáférhet hozzá, amely nem rendelkezik SE_MANAGE_VOLUME_NAME jogosultsággal.

Hasonló szempontok léteznek a következő esetekben:

  • Az adatbázisról biztonsági másolatot készítünk. Ha a biztonsági mentési fájl nem rendelkezik megfelelő DACL-védelemmel, a törölt tartalom elérhetővé válhat egy jogosulatlan felhasználó vagy szolgáltatás számára.

  • A fájlokat IFI használatával termesztik. Egy SQL Server-rendszergazda esetleg hozzáférhet a nyers lap tartalmához, és megtekintheti a korábban törölt tartalmat.

  • Az adatbázisfájlok tárolóhálózaton vannak tárolva. Az is lehetséges, hogy a tárolóhálózat mindig előreinicializáltként jeleníti meg az új lapokat, és az operációs rendszer újraincializálása felesleges többletterhelést jelenthet.

Ha a törölt tartalom felfedésének lehetősége aggodalomra ad okot, az alábbi műveletek egyikét vagy mindkettőt kell elvégeznie:

  • Mindig győződjön meg arról, hogy minden leválasztott adatfájl és biztonsági mentési fájl korlátozó DACL-eket tartalmaz.

  • Tiltsa le az SQL Server-példány azonnali fájl inicializálását. Ehhez vonja vissza SE_MANAGE_VOLUME_NAME a Database Engine szolgáltatásfiókját és a szolgáltatás SID-azonosítóját.

    Megjegyzés:

    Az IFI letiltása növeli az adatfájlok növekedési idejét, és csak a jogosultság visszavonása után létrehozott vagy megnövelt méretű fájlokat érinti.

SE_MANAGE_VOLUME_NAME jogosultság

A SE_MANAGE_VOLUME_NAME jogosultság a Windows Felügyeleti eszközökhelyi biztonsági szabályzat kisalkalmazásában rendelhető hozzá. A Helyi házirendek csoportban válassza a Felhasználóhoz való hozzárendelés lehetőséget , és módosítsa a Kötetkarbantartási feladatok végrehajtása tulajdonságot.

Teljesítménnyel kapcsolatos szempontok

Az adatbázisfájl inicializálási folyamata nullákat ír az inicializálás alatt álló fájl új régióiba. A folyamat időtartama az inicializált fájlrész méretétől, valamint a tárolási rendszer válaszidejától és kapacitásától függ. Ha az inicializálás hosszú időt vesz igénybe, előfordulhat, hogy a következő üzeneteket rögzíti az SQL Server hibanaplója és az alkalmazásnapló.

Msg 5144
Autogrow of file '%.*ls' in database '%.*ls' was cancelled by user or timed out after %d milliseconds. Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.
Msg 5145
Autogrow of file '%.*ls' in database '%.*ls' took %d milliseconds. Consider using ALTER DATABASE to set a smaller FILEGROWTH for this file.

Egy adatbázis és/vagy tranzakciónapló-fájl hosszú automatikus bővítése lassulást okozhat a lekérdezéseknél. Egy olyan művelet, amely megköveteli egy fájl automatikus növekedését, olyan erőforrásokra támaszkodik, mint a zárolások vagy reteszek a fájlnövelési művelet időtartama alatt. Előfordulhat, hogy az allokációs oldalakat érintő reteszeknél hosszú várakozási időket tapasztal. A hosszú autogrow-t igénylő művelet a várakozási típust jeleníti meg PREEMPTIVE_OS_WRITEFILEGATHER.