Jak zmenšit velikost databáze tempdb na serveru SQL Server

ID článku: 307487 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje tři metody, které můžete použít ke zmenšení databáze tempdb databáze na velikost menší než poslední nakonfigurovanou velikost. První metoda umožňuje úplnou kontrolu nad velikost databáze tempdb soubory, ale vyžaduje restartování serveru SQL Server. Druhá metoda zmenší databáze tempdb jako celek, s určitými omezeními, které zahrnují restartování serveru SQL Server. Třetí metoda umožňuje zmenšit velikost jednotlivých souborů databáze tempdb. Poslední dvě metody vyžadují, že žádná činnost vyskytnout v databáze tempdb databáze během operace zmenšení.

Poznámka: Používáte-li SQL Server 2005, tyto metody se rovněž vztahuje. SQL Server Management Studio by však použít namísto Enterprise Manager a Query Analyzer můžete provádět tyto operace. Dále Upozorňujeme, že SQL Server management studio 2005 nezobrazuje správnou velikost soubory databáze tempdb po operaci zmenšení. Hodnota "Aktuálně přidělená místa" vždy pochází z sys.master_files DMV a tato hodnota není aktualizován po provedení operace zmenšení akce pro databázi tempdb. Najít správnou velikost databáze tempdb soubory po operaci zmenšení spusťte následující příkaz v management studio:
use tempdb
select (size*8) as FileSizeKB from sys.database_files

Poznámka: SQL Server 2008 není ovlivněn tento problém (GUI zobrazující nesprávné velikosti).

Informace databáze tempdb

Na databáze tempdb je dočasné pracovní prostor. Mezi další použití serveru SQL Server používá databáze tempdb pro:
  • Skladování explicitně vytvořené dočasné tabulky.
  • Worktables, které obsahují průběžné výsledky vytvořené během dotazu zpracování a třídění.
  • Nastala statické kurzory.
SQL Server zaznamenává pouze dostatek informací transakčního protokolu databáze tempdb odvolat transakci, ale není znovu transakce během obnovy databáze. Tato funkce zvyšuje výkon příkazy pro vložení do databáze tempdb. Kromě toho není třeba zaznamenávat informace o opakované jakékoli transakce, protože databáze tempdb je znovu vytvořena při každém restartování serveru SQL Server; proto nemá žádné transakce dopředu vrátit nebo vrátit zpět. Při spuštění serveru SQL databáze tempdb je znovu vytvořena pomocí kopie modelu databáze a na poslední nakonfigurovanou velikost.

Ve výchozím nastavení databáze tempdb nakonfigurován pro automatické zvětšování podle potřeby; proto tato databáze může včas zvětšit velikost větší než požadované. Jednoduché restartování serveru SQL Server obnoví poslední nakonfigurovanou velikost velikost databáze tempdb. Nakonfigurovaná velikost je velikost poslední explicitní nastavení operace, jako například vlastnosti databáze možnost upravit soubor nebo příkazu DBCC SHRINKFILE Změna velikosti souboru. Tento článek nabízí tři způsoby, můžete zmenšit velikost menší než nakonfigurovanou velikost databáze tempdb.


Metoda 1 zmenšení databáze Tempdb

Tato metoda vyžaduje restartování serveru SQL Server.

  1. Zastavení serveru SQL Server. Otevřete příkazový řádek a zadáním následujícího příkazu spusťte serveru SQL Server:

    Sqlservr - c -f

    Na -c a -f Parametry způsobit SQL Server spustit v režimu s minimální konfigurace databáze tempdb velikost 1 MB pro datový soubor a 0,5 MB pro soubor protokolu.

    POZNÁMKA:: Používáte-li pojmenované instance serveru SQL Server, je nutné změnit příslušnou složku (Program Files\Microsoft SQL Server\MSSQL$ instance name\Binn) a použít -s Přepnout (-Název_instance pro % s).
  2. Připojení k serveru SQL Query Analyzer a spusťte následující příkazy jazyka Transact-SQL:
       ALTER DATABASE tempdb MODIFY FILE
       (NAME = 'tempdev', SIZE = target_size_in_MB) 
       --Desired target size for the data file
    
       ALTER DATABASE tempdb MODIFY FILE
       (NAME = 'templog', SIZE = target_size_in_MB)
       --Desired target size for the log file
    					
  3. SQL Server zastavit stisknutím CTRL-C v okně příkazového řádku restartujte službu SQL Server jako služba a potom ověřte velikost souborů Tempdb.mdf a Templog.ldf.
Omezení této metody je, že ji pracuje pouze na výchozí databáze tempdb logické soubory, tempdev a templog. Je-li další soubory, které byly přidány do databáze tempdb můžete zmenšit je po restartování serveru SQL Server jako službu. Všechny databáze tempdb soubory se znovu vytvoří při spuštění; Proto jsou prázdné a mohou být odstraněny. Chcete-li odebrat další soubory v databáze tempdb, možnost odebrat soubor pomocí příkazu ALTER DATABASE.

Metoda 2 zmenšení databáze Tempdb

Zmenšit pomocí příkazu DBCC SHRINKDATABASE databáze tempdb databáze jako celek. DBCC SHRINKDATABASE přijímá parametr target_percent, což je požadované procento volného místa v souboru databáze po databáze je zmenšit. Používáte-li DBCC SHRINKDATABASE, budete muset restartovat SQL Server.

DŮLEŽITÉ: Pokud DBCC SHRINKDATABASE, s mohou vyskytovat žádné jiné činnosti databáze tempdb databáze. A ujistěte se, že nelze použít jiné procesy databáze tempdb Při spuštění DBCC SHRINKDATABASE je třeba spustit SQL Server v režimu jednoho uživatele. Další informace naleznete Účinky provádění DBCC SHRINKDATABASE nebo DBCCSHRINKFILE při používání databáze Tempdb části tohoto článku.
  1. Aktuálně používané v místo určení databáze tempdb pomocí sp_spaceused uložené procedury. Poté vypočítejte procentuální podíl doleva volného místa pro použití jako parametr DBCC SHRINKDATABASE; Tento výpočet je založen na velikost požadovanou databázi.

    Poznámka: V některých případech bude pravděpodobně nutné spustit sp_spaceused @ updateusage = true Přepočítat místa a získat aktualizované zprávy. SQL Server Books Online najdete další informace o sp_spaceused uložené procedury.

    Vezměme si jako příklad:
    Předpokládejme, že databáze tempdb má dva soubory primární datový soubor (Tempdb.mdf), což je velikost a soubor protokolu (Tempdb.ldf), což je 30 MB 100 MB. Předpokládejme, že sp_spaceused hlásí, že primární datový soubor obsahuje 60 MB dat. Předpokládejme také chcete zmenšit velikost primárního datového souboru do 80 MB. Výpočet požadované procento volného prostoru po zmenšení, 80 MB - 60 MB = 20 MB. Nyní, rozdělit 20 MB 80 MB = 25 % a že je vaše target_percent. Soubor protokolu transakcí je odpovídajícím způsobem zmenšit, 25 % nebo 20 MB volného místa uvolnění po databáze je zmenšit.
  2. Připojení k serveru SQL Query Analyzer a spusťte následující příkazy jazyka Transact-SQL:
       dbcc shrinkdatabase (tempdb, 'target percent') 
       -- This command shrinks the tempdb database as a whole
    					
Existují omezení pro použití příkazu DBCC SHRINKDATABASE na databáze tempdb databáze. Velikost cílového data a soubory protokolu nemůže být menší než velikost zadali při vytvoření databáze nebo poslední velikosti explicitně nastavené s Změna velikosti souboru operací jako vlastnosti databáze pomocí příkazu DBCC SHRINKFILE nebo možnost upravit soubor. Další omezení DBCC SHRINKDATABASE je výpočet target_percentage parametr a jeho závislost na aktuálního použitého místa.



Metoda 3 zmenšení databáze Tempdb

Zmenšit velikost jednotlivých pomocí příkazu DBCC SHRINKFILE databáze tempdb soubory. DBCC SHRINKFILE umožňuje větší flexibilitu než DBCC SHRINKDATABASE, protože jej lze použít v jediném souboru bez ovlivnění dalších souborů, které patří do stejné databáze. Přijímá DBCC SHRINKFILE velikost cílového parametr, který je požadovanou konečnou velikost souboru databáze.

DŮLEŽITÉ: Je nutné spustit příkaz DBCC SHRINKFILE, zatímco ostatní nečinnosti v databáze tempdb databáze. A ujistěte se, že nelze použít jiné procesy databáze tempdb zatímco DBCC SHRINKFILE spustí, je nutné restartovat v režimu jednoho uživatele serveru SQL Server. Další informace o DBCC SHRINKFILE naleznete Účinky provádění DBCC SHRINKDATABASE nebo DBCCSHRINKFILE při používání databáze Tempdb části tohoto článku.
  1. Určete požadovanou velikost primárního datového souboru (tempdb.mdf), soubor protokolu (templog.ldf) a další soubory přidané do databáze tempdb. Ujistěte se, že místa v souborech je menší nebo roven velikosti požadované cílové.
  2. Připojení k serveru SQL Query Analyzer a spusťte následující příkazy jazyka Transact-SQL pro konkrétní databázové soubory, které potřebujete zmenšit velikost:
       use tempdb
       go
    
       dbcc shrinkfile (tempdev, 'target size in MB')
       go
       -- this command shrinks the primary data file
    
       dbcc shrinkfile (templog, 'target size in MB')
       go
       -- this command shrinks the log file, look at the last paragraph.
    						
Výhodou DBCC SHRINKFILE je, že jej můžete zmenšit velikost souboru na velikost menší než původní velikosti. Můžete vydat DBCC SHRINKFILE na některé soubory dat nebo protokolu. Omezení DBCC SHRINKFILE je možné provádět databáze menší než velikost modelu databáze.

Zmenšit velikost protokolu transakcí serveru SQL Server 7.0 je odložené operace a musí vydat zkrácení protokolu a zálohování usnadnit operace zmenšení v databázi. Ve výchozím nastavení však databáze tempdbFunkce USEKNOUT přihlášení chkpt možnost nastavit na; Proto zde nepotřebujete vydat zkrácení protokolu, dané databáze. Další informace jak zmenšení databáze serveru SQL Server 7.0 protokol transakcí, klepněte na tlačítko znalostní báze Microsoft Knowledge Base:
256650 Soubor INF: Jak zmenšit velikost protokolu transakce SQL Server 7.0

Účinky provádění DBCC SHRINKDATABASE nebo DBCCSHRINKFILE při používání databáze Tempdb

Pokud databáze tempdb používá a pokusíte se jej zmenšit pomocí DBCC SHRINKDATABASE nebo DBCC SHRINKFILE příkazy, může se zobrazit více konzistence chyby podobné následujícím typu a může dojít k selhání operace zmenšení:
Server: Msg 2501, úroveň 16, stav 1, řádek 1 Nelze najít tabulku s názvem "1525580473". Kontrola sysobjects.
- nebo -
Server: Msg 8909, úroveň 16, stav 1, řádek 0 Tabulka poškozeno: Object ID 1, ID indexu 0, stránka ID % S_PGID. PageId v záhlaví stránky = % S_PGID.
Ačkoli chyba 2501 nemusí být orientační z jakékoli poškození databáze tempdb, způsobí selhání operace zmenšení. Na druhé straně došlo k chybě 8909 může znamenat poškození databáze tempdb databáze. Restartujte službu SQL Server znovu vytvořit databáze tempdb a vyčistit chyby konzistence. Ale pamatujte, že je možné z jiných důvodů pro fyzické datové chyby poškození jako chyba 8909 a ty zahrnout problémy podsystém vstupu a výstupu.

ODKAZY

SQL Server Books Online; témata: "dbcc shrinkfile"; "DBCC SHRINKDATABASE"

Vlastnosti

ID článku: 307487 - Poslední aktualizace: 18. května 2011 - Revize: 8.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Klíčová slova: 
kbsqlsetup kbhowtomaster kbmt KB307487 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:307487

Dejte nám zpětnou vazbu