Cum se micșorează baza acoperire de date tempdb în SQL Server

IMPORTANT: Acest articol este tradus cu ajutorul software-ului Microsoft de traducere automată și poate fi corectat prin intermediul tehnologiei Community Translation Framework (CTF). Microsoft oferă articole traduse automat, post-editate de comunitate și articole traduse de oameni, pentru a permite accesul la toate articolele din Baza noastră de cunoștințe în mai multe limbi. Articolele traduse automat și post-editate pot conține greșeli de vocabular, sintaxă și/sau gramatică. Microsoft nu este responsabil de inexactitățile, erorile sau daunele cauzate de traducerea greșită a conținutului sau de utilizarea acestuia de către clienți. Găsiți mai multe informații despre traducerea în colaborare la http://support.microsoft.com/gp/machine-translation-corrections/ro.

Faceți clic aici pentru a vizualiza versiunea în limba engleză a acestui articol: 307487
Rezumat
Acest articol discută diferite metode care se pot utiliza pentru a micșora bazei acoperire de date tempdb în Microsoft SQL Server. Înainte de a se micșorează baza acoperire de date tempdb utilizând metodele descrise în acest articol, vă rugăm să rețineți următoarele:
  • Dimensiunea tempdb se resetează la dimensiunea configurat ultima (adică, la dimensiunea implicită sau dimensiunea ultima care a fost creat utilizând alter bază acoperire de date) după fiecare repornire. De aceea, dacă trebuie să utilizați valori diferite sau pentru a obține imediat pauză, nu trebuie să utilizați oricare dintre procedurile descrise în acest articol. Puteţi să aşteptaţi pentru următoarea repornire a serviciului SQL Server pentru a reduce dimensiunea. Dimensiuni mai mari acoperire de date tempdb nu afectează negativ performanța SQL Server.
  • În SQL Server 2005 și versiunile ulterioare, micșorarea bazei acoperire de date tempdb nu este diferită micșorarea bazei acoperire de date de utilizator cu excepţia faptului că tempdb reinițializează dimensiunea sa configurate după repornire fiecare instanță de SQL Server.
  • Este sigur să executați micșorează în tempdb, în marcă de timp ce tempdb activitate de firmă este în curs de desfăşurare. Cu toate acestea, este posibil să întâmpinați alte erori, cum ar fi blocarea, blocaje fatale și așa mai departe, care pot împiedica să micșorați terminați. De aceea, pentru a se asigura că o reducere de tempdb va reuși, vă recomandăm că aceasta în marcă de timp ce serverul este în mod utilizator unic sau atunci când s-au oprit toate tempdb activitate.

Tempdb informații

Baza acoperire de date tempdb este un spațiu de lucru temporare. SQL Server utilizează tempdb să efectuați multe activități. Printre aceste activități sunt următoarele:
  • Tabele temporare explicit create de stocare
  • Worktables care continuu rezultatele intermediare care sunt create în timpul interogare de procesare și sortare
  • Materializat cursor statică
  • Stocare de versiune înregistrări atunci când se utilizează niveluri de izolare instantaneu sau citire angajat instantaneu izolarea niveluri
SQL Server înregistrează numai suficiente informații în Jurnalul de tranzacții tempdb pentru a derula înapoi o tranzacție, dar nu pentru a reface tranzacții în timpul de recuperare acoperire de date. Această caracteristică cresc performanțele de instrucțiuni de Inserare în tempdb. În plus, nu trebuie să faceți log informații pentru a reface orice tranzacţii pentru că tempdb este creat din nou de fiecare dată să reporniți SQL Server. De aceea, are nu există tranzacții roll forward sau derula înapoi. Când pornește SQL Server, tempdb este creat din nou utilizând o copie a bazei acoperire de date model și tempdb se reinițializează dimensiunea sa ultima configurat. Configurat dimensiunea este ultima explicit care a fost creat utilizând o dimensiune fișier modificarea operațiune, cum ar fi ALTER DATABASE care utilizează opțiunea Modificați fișierul sau declarații DBCC SHRINKFILE sau DBCC SHRINKDATABASE .

implicit, baza acoperire de date tempdb este configurat să autogrow după cum este necesar. De aceea, această bază acoperire de date poate în mod neașteptat crește în marcă de timp la o dimensiune mai mare decât dimensiunea dorită. O repornire simplu de SQL Server reinițializează dimensiunea tempdb dimensiunea sa ultima configurat.

În SQL Server 2005 și versiunile ulterioare, utilizați oricare dintre următoarele metode pentru a modifica dimensiunea tempdb.

MetodaNecesită repornire?Mai multe informații
ALTER BAZĂ acoperire de dateDaVă oferă controlul dimensiunea fișierele tempdb implicit (tempdev și templog) complet.
DBCC SHRINKDATABASENuFuncţionează la nivel de bază acoperire de date.
DBCC SHRINKFILENuVă permite să micșorați fișiere individuale.
SQL Server Management StudioNuAceasta este în principiu o modalitate se micșorează fișierele bazei acoperire de date prin intermediul GUI.

Notă SQL Server Management Studio în SQL Server 2005 nu afișează dimensiunea corectă a fișierele tempdb după o operațiune de shrink. Valoarea "Spațiului alocat în prezent" este întotdeauna sunt extrase din sys.master_files DMV și această valoare nu este actualizat după o operațiune de shrink apare pentru baza acoperire de date tempdb. Pentru a găsi fișierele tempdb dimensiunea corectă după o operațiune de shrink, executaţi următoarea declarație în SQL Server Management Studio:

use tempdbgoselect (size*8) as FileSizeKB from sys.database_files
Primele trei metode sunt discutate aici.

Notă Pentru instalările SQL Server 2000, trebuie să utilizați Query Analyzer în loc de SQL Server Management Studio. De asemenea, comenzile DBCC va cere să introduceți bazei acoperire de date în mod utilizator unic.

Utilizați următoarele trei metode pentru a micșora tempdb la o dimensiune care este mai mic decât dimensiunea configurat.

Metoda 1: Utilizarea Transact-SQL comenzi
Notă Această metodă necesită repornirea serverului SQL.
  1. Opriți SQL Server.
  2. La linia Către de comandă, porniți instanța în modul de configurare minime. Pentru a face acest lucru, urmați acești pași:
    1. La linia Către de comandă, modificați la următorul folder:
    2. Dacă instanța este o instanță denumită de SQL Server, executaţi următoarea comandă:
      sqlservr.exe -s InstanceName - c -f
      Dacă instanța instanță implicită de SQL Server, executaţi următoarea comandă:
      sqlservr - c -f
      Notă
      Parametrii - c și -f cauza SQL Server pentru a porni într-un mod de configurare minime care are o dimensiune tempdb 1 MB pentru fișierul acoperire de date și 0,5 MB pentru fișierul jurnal.
  3. Conectarea la SQL Server Query Analyzer utilizând și executați următoarele comenzi 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					
  4. Opriți SQL Server. Pentru aceasta, apăsați Ctrl + C în fereastra linia Către de comandă, reporniți SQL Server ca un serviciu, apoi verificați dacă dimensiunea fișierelor Tempdb.mdf și Templog.ldf.
O limitare a acestei metode este că funcţionează numai pe implicit tempdb logice fișierele tempdev și templog. Dacă mai multe fișiere se adaugă la tempdb, se poate micșora după ce reporniți SQL Server ca un serviciu. Toate fișierele tempdb sunt recreate în timpul pornirii. Cu toate acestea, ele sunt goale și pot fi eliminate. Pentru a elimina fișiere suplimentare în tempdb, utilizați comanda ALTER DATABASE utilizând opțiunea ELIMINAȚI fișierul .

Metoda 2: Utilizați comanda DBCC SHRINKDATABASE
Utilizați comanda DBCC SHRINKDATABASE se micșorează baza acoperire de date tempdb. DBCC SHRINKDATABASE primește parametru target_percent. Aceasta este procentajul dorit de spațiu liber rămase în fișierul bazei acoperire de date după ce baza acoperire de date este redus. Dacă utilizați DBCC SHRINKDATABASE, trebuie să reporniți SQL Server.
  1. Determina spațiul utilizat în prezent în tempdb utilizând procedura sp_spaceused stocate. Apoi, se calculează procent de spațiu liber care este lăsat pentru utilizarea ca un parametru DBCC SHRINKDATABASE. Acest calcul se bazează pe dimensiunea bazei acoperire de date dorit.

    Notă În unele cazuri, trebuie să execute sp_spaceused @updateusage = true pentru a recalcula spațiul utilizat și pentru a obține un raport actualizat. Consultați manualele Online SQL Server pentru mai multe informații despre procedura sp_spaceused stocate.

    Să luăm în considerare următorul exemplu:
    Să presupunem că tempdb are două fișiere: fișierul acoperire de date principală (Tempdb.mdf) care este 100 MO și fișierul jurnal (Tempdb.ldf) care este de 30 MB. Să presupunem că sp_spaceused raportează că fișierul acoperire de date primară conține 60 MO acoperire de date. De asemenea, să presupunem că doriți să micșorați fișierul acoperire de date primare la 80 MB. Calcula procentajul dorit de spațiu liber stânga după shrink: 80 MB-60 MB = 20 MB. Acum, împărțiți 20 Mo de 80 MB = 25%, şi care este detarget_percent. Fișierul jurnalului de tranzacții este micșorat în consecință, lăsând 25% sau 20 Mo de spațiu liber după ce baza acoperire de date este redus.
  2. Conectarea la SQL Server Query Analyzer utilizând și executați următoarele comenzi Transact-SQL:
       dbcc shrinkdatabase (tempdb, 'target percent')    -- This command shrinks the tempdb database					
Există limitări pentru utilizarea comenzii DBCC SHRINKDATABASE pe baza acoperire de date tempdb. Dimensiunea țintă pentru fișierele acoperire de date și de jurnal nu poate fi mai mic decât dimensiunea pe care este specificat când baza acoperire de date a fost creat sau mai mic decât dimensiunea ultima care a fost setat explicit utilizând o operațiune de schimbare de dimensiune fișier, cum ar fi ALTER DATABASE care utilizează opțiunea Modificați fișierul sau comanda. O altă limitare a Cci SHRINKDATABASE este calculul parametrul target_percentage și dependență de pe spațiul curente care este utilizat.

Metoda 3: Utilizați comanda DBCC SHRINKFILE
Utilizați comanda DBCC SHRINKFILE se micșorează fișierele tempdb individuale. DBCC SHRINKFILE oferă mai multă flexibilitate decât DBCC SHRINKDATABASE , deoarece aveți posibilitatea să utilizați un fișier bază acoperire de date unică fără a afecta alte fișiere care aparține bazei acoperire de date aceeași. DBCC SHRINKFILE primește parametrul dimensiunea țintă . Aceasta este dimensiunea finală dorită pentru fișierul bazei acoperire de date.
  1. Determina dimensiunea dorită pentru fișierul acoperire de date principală (tempdb.mdf), fişierul jurnal (templog.ldf) și fișiere suplimentare care se adaugă la tempdb. Asigurați-vă că spațiul utilizat în fișierele este mai mică sau egală cu dimensiunea dorită țintă.
  2. Conectarea la SQL Server Query Analyzer utilizând și executați următoarele comenzi pentru fișierele de specifice bazei acoperire de date pe care doriți să micșorați Transact-SQL:
       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.						
Un avantaj al DBCC SHRINKFILE este că se poate reduce dimensiunea de fișier la o dimensiune care este mai mic decât dimensiunea originală. Se poate elibera DBCC SHRINKFILE pe oricare dintre fișierele acoperire de date sau de jurnal. O limitare a DBCC SHRINKFILE este că nu se poate face baza acoperire de date mai mic decât dimensiunea bazei acoperire de date model.

Utilizați comanda DBCC SHRINKFILE se micșorează fișierele tempdb individuale. DBCC SHRINKFILE oferă mai multă flexibilitate decât DBCC SHRINKDATABASE , deoarece aveți posibilitatea să utilizați un fișier bază acoperire de date unică fără a afecta alte fișiere care aparține bazei acoperire de date aceeași. DBCC SHRINKFILE primește parametrul dimensiunea țintă . Aceasta este dimensiunea finală dorită pentru fișierul bazei acoperire de date.


2501 și 8909 erori atunci când executați shrink operațiuni

Dacă se utilizează tempdb și dacă încercați să micșorați-l utilizând comanda DBCC SHRINKDATABASE sau DBCC SHRINKFILE , este posibil să primiți mesaje care seamănă cu următoarele, în funcţie de versiunea de SQL Server pe care îl utilizați:

SQL Server 2005 și versiunile ulterioare

Server: Msg 8909, Level 16, State 1, Line 1 tabelul de eroare: obiect ID 0, index ID -1, partition ID 0, ID-ul este unitatea 0 (tip necunoscut), pagina ID (6:8040) conține un ID de pagină incorectă în antetul sale. PageId în antetul de pagină = (0:0).

SQL Server 2000

Server: Msg 2501, Level 16, State 1, Line 1 ar putea găsi nu tabel denumit '1525580473'. Verificați sysobjects.
Server: Msg 8909, Level 16, State 1, Line 0 tabel corupt: Object ID 1, index ID 0, pagina ID % S_PGID. PageId în antetul de pagină = % S_PGID.
Note
  • Aceste erori indică orice deteriorarea real în tempdb. Cu toate acestea, se știe că pot exista alte motive pentru erori de deteriorare fizică date ca eroare 8909 și că aceste motive includ probleme de subsistem I/O. De aceea, dacă eroarea se întâmplă în afara shrink operațiuni, trebuie să faceţi mai multe investigație.
  • În SQL Server 2005 și versiunile ulterioare, deși se returnează un mesaj de 8909 aplicația sau utilizatorul care se execută operațiunea shrink, operațiunile de shrink nu va eşua.
  • În SQL Server 2000 şi versiunile anterioare, aceste erori va provoca shrink operațiuni să nu reușească. De aceea, pentru a micșora bazei acoperire de date tempdb, va trebui să reporniți SQL Server pentru a recrea tempdb. Pentru mai multe informaţii, faceţi clic pe următorul număr de articol pentru a vedea articolul în bază de cunoştinţe Microsoft:
    277848 Mesaj de eroare "Tabel Corrupt obiect ID 0, index ID 0, pagina ID" apare atunci când executați DBCC DBREINDEX în SQL Server


Avertisment: acest articol a fost tradus automat

Propriedades

ID do Artigo: 307487 - Última Revisão: 04/26/2016 03:23:00 - Revisão: 4.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, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Parallel Data Warehouse, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2016 Developer, Microsoft SQL Server 2016 Enterprise, Microsoft SQL Server 2016 Enterprise Core, Microsoft SQL Server 2016 Standard

  • kbsqlsetup kbhowtomaster kbmt KB307487 KbMtro
Comentários