Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server
Azure SQL Database
Azure SQL Managed Instance
V tomto článku se dozvíte o okamžité inicializaci souborů (IFI) a o tom, jak ji umožnit zrychlit růst souborů databáze SQL Serveru.
Ve výchozím nastavení se data a soubory protokolu inicializují tak, aby přepsaly všechna existující data na disku z dříve odstraněných souborů. Datové a protokolové soubory se nejprve inicializují vynulováním při provádění následujících operací (zaplnění nulami):
- Vytvořte databázi.
- Přidejte data nebo soubory protokolu do existující databáze.
- Zvětšete velikost existujícího souboru (včetně operací automatického zvětšování).
- Obnovení databáze nebo skupiny souborů
V SQL Serveru umožňuje okamžité inicializace souborů rychlejší provádění dříve zmíněných operací se soubory, protože uvolní využité místo na disku bez vyplnění tohoto místa nulami. Místo toho se starý obsah disku přepíše, protože se do souborů zapisují nová data.
Ve službě Azure SQL Database a azure SQL Managed Instance je okamžitá inicializace souborů dostupná jenom pro soubory transakčních protokolů.
Inicializace okamžitých souborů a transakční protokol
Platí pro: SQL Server 2022 (16.x) a novější verze a Azure SQL Database a Azure SQL Managed Instance.
V minulosti se soubory transakčních protokolů nedají inicializovat okamžitě. Od verze SQL Server 2022 (16.x) (všechny edice) a služby Azure SQL Database a Azure SQL Managed Instance mohou automatické růsty transakčních logů až do 64 MB využívat výhody okamžité inicializace souborů. Výchozí velikost automatického růstu pro nové databáze je 64 MB. Události automatického zvětšování souboru transakčního protokolu větší než 64 MB nemohou těžit z okamžité inicializace souborů.
Na rozdíl od okamžité inicializace souborů u datových souborů, čemuž je zabráněno, pokud je povoleno transparentní šifrování dat (TDE), je okamžitá inicializace souborů povolena pro růst transakčního protokolu u databází s povoleným transparentním šifrováním dat, kvůli způsobu, jakým se zvětšuje soubor transakčního protokolu, a skutečnosti, že transakční protokol se zapisuje sériově.
Okamžitá inicializace souborů se používá pro úrovně Pro obecné účely a Pro důležité obchodní informace služby Azure SQL Database a Azure SQL Managed Instance pouze pro zvýšení růstu souborů transakčních protokolů.
Okamžité inicializace souborů není možné konfigurovat ve službě Azure SQL Database a ve spravované instanci Azure SQL.
Povolit okamžitou inicializaci souboru
Okamžitá inicializace datových souborů je k dispozici pouze v případě, že je buď účtu služby, nebo identifikátoru SID služby databázového stroje uděleno SE_MANAGE_VOLUME_NAME oprávnění. Členové skupiny Správci systému Windows mají toto oprávnění a můžou ho udělit jiným uživatelům tím, že je přidají do zásad zabezpečení Provádět úlohy údržby svazků. Oprávnění SE_MANAGE_VOLUME_NAME není vyžadováno pro okamžitou inicializaci souborů při událostech růstu až do 64 MB v rámci transakčního protokolu, který byl zaveden s vydáním SQL Serveru 2022 (16.x).
Doporučujeme udělit SE_MANAGE_VOLUME_NAME oprávnění služebnímu SID služby databázového systému. Tím se zajistí, že oprávnění zůstane i v případě, že změníte účet služby databázového stroje. Další informace naleznete v tématu Použití identifikátorů SID služby k udělení oprávnění ke službám na SQL Serveru.
Důležité
Některé použití funkcí, jako je transparentní šifrování dat (TDE), může zabránit okamžité inicializaci souborů (IFI). V SQL Serveru 2022 (16.x) a novějších verzích a ve službě Azure SQL Database a azure SQL Managed Instance je v transakčním protokolu povolená funkce IFI. Další informace naleznete v tématu Okamžité inicializace souboru a transakční protokol.
V SQL Serveru 2016 (13.x) a novějších verzích lze toto oprávnění udělit identifikátoru zabezpečení služby databázového stroje (SID) v době instalace během instalace.
Pokud používáte instalaci příkazového řádku, přidejte /SQLSVCINSTANTFILEINIT argument nebo zaškrtněte políčko Udělit oprávnění k provádění úlohy údržby svazku službě databázového stroje SQL Serveru v průvodci instalací.
Pokud chcete účtu nebo službě identifikátor SID Perform volume maintenance tasks udělit zásady zabezpečení:
V počítači, kde budou vytvořeny datové soubory, otevřete aplikaci Místní zásady zabezpečení (
secpol.msc).V levém podokně rozbalte místní zásady a pak vyberte Přiřazení uživatelských práv.
V pravém podokně poklikejte na Provádět úlohy údržby svazků.
Vyberte Přidat uživatele nebo skupinu a přidejte účet služby databázového stroje nebo identifikátor SID služby.
Vyberte Použít a potom zavřete všechna dialogová okna Místní zásady zabezpečení .
Restartujte službu databázového stroje.
Zkontrolujte protokol chyb databázového stroje při spuštění.
Platí pro: SQL Server (počínaje SQL Serverem 2012 (11.x) SP4, SQL Serverem 2014 (12.x) SP2 a SQL Serverem 2016 (13.x) a novějším).
Pokud je účtu služby databázového stroje nebo jeho identifikátor SID služby udělena
SE_MANAGE_VOLUME_NAMEoprávnění, zaprotokoluje se informační zpráva podobná následujícímu příkladu: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.Pokud nebylo účtu služby databázového stroje nebo jeho identifikátoru SID služby uděleno oprávnění, je zaznamenána informační zpráva podobná následujícímu příkladu:
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.
Poznámka:
V SQL Serveru použijte hodnotu
instant_file_initialization_enabledv zobrazení sys.dm_server_services dynamické správy k identifikaci, jestli je pro vaši instanci povolená okamžitá inicializace souborů.
Bezpečnostní aspekty
Doporučujeme povolit okamžité inicializaci souborů, protože výhody můžou převažovat nad rizikem zabezpečení.
Když použijete okamžité inicializace souborů, obsah odstraněného disku se přepíše jenom v případě, že se do souborů zapisují nová data. Z tohoto důvodu je odstraněný obsah potenciálně přístupný neoprávněným subjektem, dokud některá jiná data nepřepíší tuto část datového souboru.
I když je soubor databáze připojený k instanci SQL Serveru, riziko zpřístupnění informací se sníží volitelným seznamem řízení přístupu (DACL) v souboru. DACL umožňuje přístup k souboru pouze účtu služby SQL Serveru, jeho identifikátoru SID a místnímu správci. Když je ale soubor odpojený, je potenciálně přístupný uživatelem nebo službou, která nemá SE_MANAGE_VOLUME_NAME oprávnění.
Podobné aspekty existují v případech:
Databáze se zálohuje. Pokud záložní soubor není chráněný příslušným seznamem DACL, může být odstraněný obsah dostupný neautorizovanému uživateli nebo službě.
Soubor se zvětšuje pomocí IFI. Správce SQL Serveru může potenciálně získat přístup k nezpracovaným obsahu stránky a zobrazit dříve odstraněný obsah.
Soubory databáze jsou hostované v síti storage area network. Je také možné, že síť SAN vždy zobrazuje nové stránky jako předem inicializované, a pokud operační systém znovu inicializuje stránky, může to být zbytečná režijní zátěž.
Pokud se jedná o riziko zveřejnění odstraněného obsahu, měli byste provést jednu nebo obě z následujících akcí:
Vždy se ujistěte, aby všechny odpojené datové soubory a záložní soubory měly omezující DACL.
Zakažte okamžitou inicializaci souborů pro instanci SQL Serveru. Uděláte to tak, že odvoláte
SE_MANAGE_VOLUME_NAMEúčet služby databázového stroje a identifikátor SID služby.Poznámka:
Zakázání funkce IFI zvyšuje dobu růstu datových souborů a ovlivňuje pouze soubory vytvořené nebo zvýšené velikosti po odvolání oprávnění.
oprávnění SE_MANAGE_VOLUME_NAME
Oprávnění SE_MANAGE_VOLUME_NAME je možné přiřadit v nástrojích pro správu systému Windows, apletu místních zásad zabezpečení . V části Místní zásady vyberte Přiřazení práv uživatele a upravte vlastnost Provést úlohy údržby svazku.
Důležité informace o výkonu
Proces inicializace souboru databáze zapíše nuly do nových oblastí souboru při inicializaci. Doba trvání tohoto procesu závisí na velikosti části souboru, která se inicializuje, a na době odezvy a kapacitě systému úložiště. Pokud inicializace trvá dlouhou dobu, může se zobrazit následující zprávy zaznamenané v protokolu chyb SQL Serveru a v protokolu aplikace.
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.
Dlouhé automatické zvětšování databáze nebo souboru transakčního protokolu může způsobit problémy s výkonem dotazů. Operace, která vyžaduje automatické zvětšování souboru, se uchovává u prostředků, jako jsou zámky nebo západky během doby trvání operace zvětšení souboru. Na západkách pro stránky přidělení se může zobrazit dlouhé čekání. Operace, která vyžaduje dlouhý autogrow, ukazuje typ čekání PREEMPTIVE_OS_WRITEFILEGATHER.