Зараз ви перебуваєте в автономному режимі; очікується повторне підключення до Інтернету

Як для стискання бази даних tempdb у SQL Server

ВАЖЛИВО! Ця стаття перекладена засобами машинного перекладу Microsoft. Статтю можна редагувати в середовищі Community Translation Framework (CTF). Щоб якомога швидше перекласти всі статті у своїй базі знань різними мовами, компанія Microsoft не лише звертається до професійних перекладачів, але й вдається до машинного перекладу, який потім редагується спільнотою. Такі статті можуть містити лексичні, синтаксичні та граматичні помилки. Microsoft не несе відповідальності за будь-які неточності, помилки або збитки, до яких може призвести неправильний переклад статей або їх використання. Докладніше про CTF див. на веб-сторінці http://support.microsoft.com/gp/machine-translation-corrections/uk-ua.

307487
Підсумки
У цій статті розглядаються різні методи, які можна використовувати для стискання бази даних tempdb у Microsoft SQL Server. Перш ніж ви стискання бази даних tempdb за допомогою методів, які описано в цій статті, будь ласка Майте на увазі такі дії:
  • Розмір бази даних tempdb скинути до останнього настроєний розміру (тобто, розмір за промовчанням, або минулого розмір, який був встановлений за допомогою alter бази даних) після кожної перезавантаження. Таким чином, якщо у вас немає для сценарій виконання різних значень або отримувати негайні перепочинку, вам не потрібно сценарій виконання будь-яких процедур, які описані в цій статті. Можна почекати наступного перезапуску служби SQL Server для зменшення розміру. Великих розмірів бази даних tempdb не буде негативно впливати на продуктивність SQL Server.
  • В SQL Server 2005 і пізніших версій, стискання бази даних tempdb нічим не відрізняється, ніж скорочення базу даних користувача, за винятком того, що бази даних tempdb скидає його налаштувати розмір після кожної перезавантаження екземпляра SQL Server.
  • Це безпечно запустити стиснути в бази даних tempdb, хоча поточної бази даних tempdb діяльності. Однак можуть виникнути інших помилок, таких як блокування, глухі кути і так далі, які можуть перешкоджають скорочуватися . Тому для того, щоб переконатися, що стискання бази даних tempdb будуть успішними, ми рекомендуємо, що ви зробити це, поки сервер перебуває в одного користувача режимі, або коли ви перестали всі бази даних tempdb діяльності.

Бази даних tempdb інформації

Бази даних tempdb є тимчасової робочої області. SQL Server використовує бази даних tempdb виконання багатьох завдань. Серед цих завдань є:
  • онлайнове пул носіїв пул носіїв явно створений тимчасових таблиць
  • Робочі столи, які тримають проміжні результати, які створюються під Вільний час запит на змінення, обробки та сортування
  • Матеріалізувалася статичні курсори
  • онлайнове пул носіїв версії записів при використанні знімок ізоляції рівнів або Скоєно читання знімок ізоляції рівнів
SQL Server записує тільки достатньо інформації в бази даних tempdb журнал транзакцій відкотити транзакцію, але не для того, щоб повторити операції під Вільний час Відновити базу даних. Ця функція збільшує продуктивність Вставлення заяви в tempdb. Крім того, вам не доведеться увійти інформації, щоб повторити будь-яких операцій, оскільки tempdb автоматично наново кожного разу, що після перезапуску SQL Server. Таким чином, вона має не угод вперед, або відкотити. Під Вільний Вільний час запуску SQL Server, tempdb автоматично наново, використовуючи копію модель бази даних і бази даних tempdb скинути до останнього настроєний розміру. Налаштувати розмір є останній явні розмір, який був встановлений за допомогою розмір файлу змінюється операції, як Змінити базу даних , яка використовує параметр Змінити файл або DBCC SHRINKFILE заявою.

За промовчанням бази даних tempdb налаштовані на автоматичне Збільшення належним чином за потреби. Таким чином, ця база даних може несподівано рости в часі до розміру, більше, ніж потрібний розмір. Просто перезавантаження сервера SQL скидає розмір бази даних tempdb свій останній налаштований розмір.

У SQL Server 2005 і пізніших версій можна будь-який з наступних методів можна змінити розмір бази даних tempdb.

МетодПотрібен перезапуск?Додаткові відомості
ЗМІНИТИ БАЗУ ДАНИХТакДає повний контроль за розміром файли бази даних tempdb за промовчанням (tempdev і templog).
DBCC SHRINKDATABASEНіПрацює на рівні баз даних.
DBCC SHRINKFILEНіДозволяє зменшити окремі файли.
SQL Server управління студіїНіЦе в основному спосіб зменшити файли бази даних через графічний інтерфейс.

Примітка. SQL Server управління студії в SQL Server 2005 не показувати правильний розмір файли бази даних tempdb після операції стискання. Значення "Наразі розподілені простору" завжди простягається від sys. master_files DMV, і це значення не оновлюється після операції стискання виникнення для бази даних tempdb. Знайти правильний розмір файли бази даних tempdb після операції стискання, виконати наступну заяву в SQL Server управління студії:

use tempdbselect (size*8) as FileSizeKB from sys.database_files
Перші три методи обговорюються тут.

Примітка. Для установки SQL Server 2000 вам доведеться використовувати Query Analyzer замість SQL Server управління студії. Крім того, DBCC команд зажадає від вас поставити бази даних в одного користувача режимі.

Наступні три методи можна використовувати для стискання бази даних tempdb до розміру, що менше, ніж його налаштувати розмір.

Метод 1: Використовувати оператори Transact-SQL команд
Примітка. Цей спосіб вимагає від вас, щоб перезапустити SQL Server.
  1. Зупиніть SQL Server.
  2. У командному рядку запуску екземпляра у режимі мінімальних конфігурації. Для цього виконайте такі інтерактивні елементи.
    1. У командному рядку змінити таку папку:
    2. Якщо цей зразок іменованого екземпляра SQL Server, виконайте таку команду:
      Sqlservr.exe -s InstanceName - c -f
      Якщо екземпляр за промовчанням екземпляра SQL Server, виконайте таку команду:
      Sqlservr - c -f
      Примітка.
      -C та -f Параметри викликати SQL сервера запуск у режимі мінімальних конфігурації, який має розмір бази даних tempdb 1 МБ для файлів даних і 0,5 МБ для файлу журналу.
  3. Підключення до SQL Server Query Analyzer а потім запустіть такі команди оператори 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. Зупиніть SQL Server. Щоб зробити це, натисніть клавіші Ctrl + C на вікно командний рядок, перезапустити SQL Server якості застосунок-служба і потім перевірте, чи розмір файли tempdb. MDF і templog. ldf.
Обмежень цього методу є в тому, що він працює тільки на за промовчанням бази даних tempdb логічні файли tempdev і templog. Якщо додано більше файли бази даних tempdb, їх можна стиснути після перезапуску SQL Server якості застосунок-служба. Всі файли бази даних tempdb відновлюються під Вільний час запуску. Однак, вони порожні і можуть бути видалені. Щоб видалити додаткові файли бази даних tempdb, використовуйте команду ALTER DATABASE за допомогою параметра Видаляти файл .

Метод 2: Використовуйте команду DBCC SHRINKDATABASE
Команда DBCC SHRINKDATABASE для стискання бази даних tempdb. DBCC SHRINKDATABASE отримує параметр target_percent. Це бажаний відсоток вільний простір ліворуч у файлі бази даних після зменшили бази даних. Якщо ви використовуєте DBCC SHRINKDATABASE, ви, можливо, доведеться перезапустити SQL Server.
  1. Визначити простір, що використовується зараз в tempdb за допомогою sp_spaceused Збережена процедура. Потім обчислити відсоток від вільного місця, що залишилося для сценарій виконання як параметр DBCC SHRINKDATABASE. Обчислення на основі розмір бази даних.

    Примітка. У деяких випадках, можливо, доведеться виконати sp_spaceused @updateusage = true переобчислити простір, що використовується і для отримання оновленого звіту. Зверніться до SQL Server Books Online для отримання додаткової інформації про sp_spaceused Збережена процедура.

    Розглянемо нижче прикладі:
    Припустимо, що бази даних tempdb має два файли: основний маркер маркер файл даних (tempdb. MDF) що є 100 МБ і файл журналу (tempdb. ldf), що становить 30 МБ. Припустимо, що sp_spaceused повідомляє, що основний маркер маркер файл даних містить 60 МБ даних. Також, припустити, що ви хочете, щоб стиснути основний маркер маркер файл даних до 80 МБ. Розрахувати бажаний відсоток вільного місця після Автодобір ширини: 80 МБ-60 МБ = 20 МБ. Тепер, розділіть 20 МБ на 80 МБ = 25 відсотків і це вашtarget_percent. файл журналу транзакцій зменшили відповідно, залишивши 25 відсотків або 20 Мб місця безкоштовно після зменшили бази даних.
  2. Підключення до SQL Server Query Analyzer а потім запустіть такі команди оператори Transact-SQL:
       dbcc shrinkdatabase (tempdb, 'target percent')    -- This command shrinks the tempdb database					
Існують обмеження для сценарій виконання на бази даних tempdb, команду DBCC SHRINKDATABASE . Цільова розмір для файлів даних та журналів не може бути меншим, ніж розмір, який вказано, коли база даних був створений або менше, ніж минулого розмір, який задав за допомогою зміни розміру файлу операції, як Змінити базу даних , яка використовує Файл, змініть параметр або команда. Ще одним обмеженням BCC SHRINKDATABASE є розрахунок target_percentage параметра та його залежність від поточного простору, який використовується.

Спосіб 3: Використовувати DBCC SHRINKFILE команди
За допомогою команди DBCC SHRINKFILE стиснути файли окремих бази даних tempdb. DBCC SHRINKFILE забезпечує більшу гнучкість, ніж DBCC SHRINKDATABASE , тому що ви можете використовувати його на базі даних без впливу на інші файли, що належать одній базі даних. DBCC SHRINKFILE отримує цільової розмір параметра. Це остаточний розміру файлу бази даних.
  1. Визначення розміру для основний маркер маркер файл даних (tempdb. MDF), файл журналу (templog. ldf) і файли, додані до бази даних tempdb. Переконайтеся, що простір, що використовується у файлах менше або дорівнює розміру бажаної мети.
  2. Підключення до SQL Server Query Analyzer а потім запустіть такі команди оператори 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.						
Перевагу DBCC SHRINKFILE є, що це може зменшити розмір файлу до розміру, що менше, ніж його вихідного розміру. Ви можете оформити DBCC SHRINKFILE на будь-яких файлів даних або журналу. Обмеження DBCC SHRINKFILE є, що ви не можете зробити бази даних менший за розмір модель бази даних.

За допомогою команди DBCC SHRINKFILE стиснути файли окремих бази даних tempdb. DBCC SHRINKFILE забезпечує більшу гнучкість, ніж DBCC SHRINKDATABASE , тому що ви можете використовувати його на базі даних без впливу на інші файли, що належать одній базі даних. DBCC SHRINKFILE отримує цільової розмір параметра. Це остаточний розміру файлу бази даних.


2501 та 8909 помилки під Вільний час виконання операції стискання

Якщо використовується бази даних tempdb, та при спробі зменшити його за допомогою DBCC SHRINKDATABASE або DBCC SHRINKFILE команди, може з'явитися протокол IMAP, які нагадують такі інтерактивні елементи, залежно від версії SQL Server, який використовується:

SQL Server 2005 і пізніших версій

Сервер: Msg 8909, рівень 16, держава 1, рядок 1 помилка таблиці: код об'єкта 0, індекс ID -1, розділ ID 0, дозволених unit ID 0 (або невідомо), код сторінки (6:8040) містить ID неправильна сторінка в його заголовку сторінки. PageId в заголовку сторінки = (0:0).

SQL Server 2000
Сервер: Msg 2501, рівні 16, держава 1, рядок 1 може не знайти таблицю, названий '1525580473'. Перевірити sysobjects.

Сервер: Msg 8909, рівень 16, держава 1, лінії 0 пошкоджений таблиці: код об'єкта 1, індекс ID 0, сторінки ID % S_PGID. PageId в заголовку сторінки = % S_PGID.



Примітки
  • Ці помилки не вказують будь-які реальні корупції в бази даних tempdb. Тим не менш, бути в курсі, що там можуть бути інші причини помилки корупції фізичний даних як помилка 8909 і що ці причини включають вводу-виводу підсистема проблем. Таким чином, якщо помилка відбувається за межами операції стискання, ви повинні робити більше розслідування.
  • В SQL Server 2005 і пізніших версій хоча 8909 протокол IMAP повертається до заяви або користувачу, який виконує операції стискання, стискання операцій не підведе.
  • У SQL Server 2000 і раніших версій ці помилки призведе до Автодобір ширини операцій на провал. Тому для стискання бази даних tempdb, вам доведеться перезапустити SQL Server для повторного створення бази даних tempdb. Щоб отримати додаткові відомості клацніть, номер статті в базі знань Майкрософт:
    277848 протокол IMAP про помилку "Таблиці пошкоджений об'єкт ID 0, індекс ID 0, сторінки ID" відбувається, коли ви запустити DBCC DBREINDEX в SQL Server


Попередження. Цю статтю переведено автоматично

Властивості

Ідентифікатор статті: 307487 – останній перегляд: 04/30/2014 17:28:00 – виправлення: 3.1

  • 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 Express Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL 2005 Server Workgroup
  • 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 Parallel Data Warehouse
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • kbsqlsetup kbhowtomaster kbmt KB307487 KbMtuk
Зворотний зв’язок