Teď jste offline a čekáte, až se znova připojí internet.

Zmenšení databáze tempdb v SQL Server

DŮLEŽITÉ: Tento článek je přeložen pomocí softwaru na strojový překlad Microsoft. Nepřesný či chybný překlad lze opravit prostřednictvím technologie Community Translation Framework (CTF). Microsoft nabízí strojově přeložené, komunitou dodatečně upravované články, a články přeložené lidmi s cílem zajistit přístup ke všem článkům v naší znalostní bázi ve více jazycích. Strojově přeložené a dodatečně upravované články mohou obsahovat chyby ve slovníku, syntaxi a gramatice. Společnost Microsoft není odpovědná za jakékoliv nepřesnosti, chyby nebo škody způsobené nesprávným překladem obsahu nebo jeho použitím našimi zákazníky. Více o CTF naleznete na http://support.microsoft.com/gp/machine-translation-corrections/cs.

Projděte si také anglickou verzi článku: 307487
Souhrn
Tento článek popisuje tři metody, které můžete použít ke zmenšení databáze tempdb na velikost, která je menší než poslední nakonfigurovanou velikost. První metoda umožňuje úplnou kontrolu nad velikost databáze tempdb soubory. První metoda však vyžaduje restartování serveru Microsoft SQL Server. Druhá metoda zmenší databáze tempdb a může být nutné restartovat SQL Server. Třetí metoda umožňuje zmenšit velikost jednotlivých souborů v databázitempdb . Poslední dvě metody vyžadují, aby žádná aktivita může dojít v databázi tempdb během operace zmenšení.

Poznámka:Používáte-li SQL Server 2005, můžete také použít tyto metody. K provádění těchto operací by však použít SQL Server Management Studio Enterprise Manager a Query Analyzer. Také si uvědomte, že SQL Server Management Studio v SQL Server 2005 nezobrazuje správnou velikostdatabáze tempdbsoubory po provedení operace zmenšení. Hodnota "Aktuálně přidělená místa" vždy načítána z sys.master_files DMV a tato hodnota není aktualizován po provedení operace zmenšení databázetempdb . Chcete-li najít správnou velikost soubory databáze tempdb po operaci zmenšení, spusťte následující příkaz v SQL Server Management Studio:
use tempdbselect (size*8) as FileSizeKB from sys.database_files

Poznámka:SQL Server 2008 není ovlivněn problém nesprávná velikostdatabáze tempdbsoubory po provedení operace zmenšení.

Informace databáze tempdb

Databáze tempdb je dočasné pracovní prostor. Mezi další použití SQL Server používá databáze tempdb pro následující:
  • Skladování explicitně vytvořené dočasné tabulky
  • Worktables, které obsahují dílčí výsledky vytvořené během dotazu zpracování a třídění
  • Materializované statické kurzory
SQL Server zaznamenává do transakčního protokolu databáze tempdbtransakci vrátit zpět, ale nikoli opakovat transakce během obnovy databáze pouze dostatek informací. Tato funkce zvyšuje výkon příkazy INSERT vdatabáze tempdb. Kromě toho není nutné protokolovat informace znovu všechny transakce, protože databáze tempdb je znovu vytvořen při každém restartování serveru SQL Server. Proto nemá žádné transakce posunout vpřed nebo zpět. Při spuštění serveru SQL databáze tempdb je znovu vytvořena pomocí kopie modelu databáze a databáze tempdb je obnovit poslední nakonfigurovanou velikost.

Ve výchozím nastavení je databáze tempdb nakonfigurován automatické zdvojnásobení velikosti podle potřeby. Proto tato databáze může růst v čase na velikost větší než požadovaná velikost. Jednoduché restartování serveru SQL Server nastaví velikost databáze tempdb poslední nakonfigurovanou velikost. Nakonfigurovaná velikost je poslední explicitní velikost, která byla nastavena pomocí operace například ALTER DATABASE, který využívá možnost upravit soubor nebo příkazu DBCC SHRINKFILE změna velikost souboru.

Následující tři metody můžete zmenšit na velikost, která je menší než je její konfigurovaná velikostdatabáze tempdb.

Metoda 1: Použití Transact-SQL příkazy
Poznámka: Tato metoda vyžaduje restartování serveru SQL Server.

  1. Zastavte službu SQL Server. Na příkazovém řádku zadejte následující příkaz ke spuštění serveru SQL Server:
    Sqlservr - c -f
    Na -c a -fParametry způsobit SQL Server spustit v režimu minimální konfigurace, který má velikost 1 MB pro datový soubor a 0,5 MB souboru protokoludatabáze tempdb.

    Poznámka: Pokud používáte pojmenované instance serveru SQL, musíte 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 % s).
  2. Připojení k serveru SQL Server pomocí 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. Zastavte službu SQL Server. Chcete-li to provést, stiskněte kombinaci kláves 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 pouze pracuje s výchozí soubory databáze tempdb logické: tempdev a templog. Pokud další soubory jsou přidány dodatabáze tempdb, lze je přizpůsobit po restartování serveru SQL Server jako služba. Všechny soubory databáze tempdb je znovu vytvořena během spuštění. Však jsou prázdné a mohou být odstraněny. Chcete-li odebrat další soubory v databázi tempdb, pomocí příkazu ALTER DATABASE pomocí možnosti odebrat soubor.

Metoda 2: Použití příkazu DBCC ShrinkDatabase
Zmenšení databáze tempdb databáze pomocí příkazu DBCC SHRINKDATABASE. DBCC SHRINKDATABASE přijímá parametr target_percent. Toto je požadované procento volného místa v souboru databáze po databáze je zmenšit. Pokud pomocí DBCC SHRINKDATABASE, bude pravděpodobně nutné restartovat SQL Server.

Důležité Při spuštění DBCC SHRINKDATABASE, žádné jiné činnosti mohou vyskytovat v databázi tempdb . A ujistěte se, že jiné procesy nelze použít tempdb při spuštění DBCC SHRINKDATABASE, je třeba spustit SQL Server v režimu jednoho uživatele. Další informace naleznete v části "Účinky provádění DBCC SHRINKDATABASE nebo DBCCSHRINKFILE při tempdb je používán".
  1. Určete prostor, který se aktuálně používá v databázi tempdb pomocí sp_spaceused uložené procedury. Pak vypočte procento volného místa, která je ponechána pro použití jako parametr DBCC SHRINKDATABASE. Tento výpočet je založen na databázi požadované velikosti.

    Poznámka: V některých případech bude pravděpodobně nutné provést sp_spaceused @updateusage = true a přepočítat místo, které slouží získat aktualizované zprávy. SQL Server Books Online Další informace naleznete o sp_spaceused uložené procedury.

    Zvažte následující příklad:
    Předpokládejme, že databáze tempdb má dva soubory: primárního datového souboru (Tempdb.mdf), který je 100 MB a soubor protokolu (Tempdb.ldf), která je 30 MB. Předpokládejme, že sp_spaceusedhlásí, že primární datový soubor obsahuje 60 MB dat. Předpokládá chcete zmenšit velikost primárního datového souboru na 80 MB. Výpočet po zmenšit požadovanou velikost v procentech volného prostoru: 80 MB 60 MB = 20 MB. Nyní, dělení 20 MB 80 MB = 25 %, který je vašetarget_percent. Je odpovídajícím způsobem zmenšit soubor protokolu transakcí, 25 % nebo 20 MB volného místa zdarma po databáze je zmenšit.
  2. Připojení k serveru SQL Server pomocí Query Analyzer a spusťte následující příkazy jazyka Transact-SQL:
       dbcc shrinkdatabase (tempdb, 'target percent')    -- This command shrinks the tempdb database					
Existují určitá omezení pro použití příkazu DBCC ShrinkDatabase databáze tempdb . Velikost cílového data a soubory protokolu nemůže být menší než velikost, která je určena, pokud byla databáze vytvořené nebo menší než velikost poslední, který byl explicitně nastavit pomocí operace změny velikosti souboru například ALTER DATABASE, který využívá možnost upravit soubor nebo příkazu DBCC SHRINKFILE. Jiné omezení DBCC SHRINKDATABASE je výpočet target_percentage parametr a jeho závislost na aktuální místo, které slouží.

Metoda 3: Použití příkazu DBCC SHRINKFILE
Pomocí příkazu DBCC SHRINKFILE zmenšit jednotlivédatabáze tempdb soubory. DBCC SHRINKFILE poskytuje větší flexibilitu než DBCC SHRINKDATABASE, protože můžete v jediném souboru bez ovlivnění jiných souborů, které náleží do stejné databáze. DBCC SHRINKFILE přijímá parametr Cílová velikost a je to požadovanou konečnou velikost souboru databáze.

Důležité Spuštěním příkazu DBCC SHRINKFILE a žádné jiné činnosti dochází v databázi tempdb . Ujistěte se, že jiné procesy nelze použít tempdb při spustí DBCC SHRINKFILE, restartování serveru SQL Server v režimu jednoho uživatele. Další informace o DBCC SHRINKFILE naleznete v části "Účinky provádění DBCC SHRINKDATABASE nebo DBCCSHRINKFILE při tempdb je používán".
  1. Určete požadovanou velikost primárního datového souboru (tempdb.mdf), soubor protokolu (templog.ldf) a další soubory, které jsou přidány do databáze tempdb. Přesvědčte se, zda prostor, který se používá v souborech je menší než velikost požadovaného cíle.
  2. Připojení k serveru SQL Server pomocí Query Analyzer a spusťte následující příkazy jazyka Transact-SQL pro určité databázové soubory, které chcete zmenšit:
       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, examine the last paragraph.						
Výhodou DBCC SHRINKFILE je, že může snížit velikost souboru na velikost, která je menší než původní velikosti. Můžete vydat DBCC SHRINKFILE na některý ze souborů dat a protokolů. Omezení DBCC SHRINKFILE je možné provádět databáze menší než velikost modelu databáze.

V SQL Server 7.0 zmenšit protokolu transakcí je odložené operace a musí vydat zkrácení protokolu a zálohování usnadnit operace zmenšení v databázi. Databáze tempdb má ve výchozím nastavení zapnuta možnost trunc přihlásit chkpt . Proto není nutné vystavení protokolu zkrácení pro tuto databázi.

Další informace o tom, jak zmenšit protokolu transakcí databáze v serveru SQL Server 7.0 získáte v následujícím článku znalostní databáze Microsoft Knowledge Base:
256650 INF: Jak zmenšit transakčního protokolu 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á, pokuste zmenšit pomocí DBCC SHRINKDATABASE nebo DBCC SHRINKFILE příkazy, může se zobrazit více konzistence chyby podobné následujícím a může dojít k selhání operace zmenšení:
  • Server: Msg 2501, úroveň 16, stav 1, řádek 1Could nelze najít tabulku s názvem "1525580473". Zkontrolujte sysobjects.
  • Server: Msg 8909, úroveň 16 stav 1, řádek 0Table poškozeno: objekt ID 1, index ID 0, stránka ID % S_PGID. PageId v záhlaví stránky = % S_PGID.
Ačkoli chyba 2501 nemusí znamenat korupce v databázi tempdb, tato chyba způsobí selhání operace zmenšení. Na druhé straně 8909 chyba může znamenat poškození v databázitempdb . Restartujte službu SQL Server znovu vytvořit databáze tempdb a vyčistit chyby konzistence. Upozorňujeme však, že mohou existovat další důvody chyby dat fyzické poškození jako chyba 8909 a ty zahrnují problémy podsystém vstupu a výstupu.

ODKAZY

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

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 307487 - Poslední kontrola: 10/10/2013 02:44:00 - Revize: 10.0

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

  • kbsqlsetup kbhowtomaster kbmt KB307487 KbMtcs
Váš názor
="> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" html>