Стискання бази даних 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, скинути до останнього настроєний розміру (тобто, розмір за промовчанням, або останній розмір, який був встановлений за допомогою, змінює базу даних) після кожного перезавантаження. Таким чином, якщо не потрібно використовувати різні значення або отримати безпосередній перепочинку, вам не потрібно скористайтесь одним із наведених способів, які описані в цій статті. Можна почекати до наступного перезавантаження служби 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 або DBCC SHRINKDATABASE заяви.

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

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

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

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

use tempdbgoselect (size*8) as FileSizeKB from sys.database_files
Три способи обговорюються тут.

Примітка. SQL Server 2000 установки ви повинні використовувати Query Analyzer, замість SQL Server Management Studio. Крім того, команди 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 Server на запуск у режимі мінімальних конфігурації, який має розмір бази даних 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 обчислення простору, який використовується і отримати оновлений звіту про. Додаткові відомості про sp_spaceused , Збережена процедура, зверніться до SQL Server Books Online.

    Розгляньмо наведений нижче приклад.
    Припустимо, що бази даних 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					
Існує обмеження сценарій виконання команди DBCC SHRINKDATABASE на бази даних tempdb. Цільова розмір для файлів даних та журналів, не може бути меншим, ніж розмір, який указано, коли, бази даних був створений або менше, ніж останні розмір якого було явно за допомогою змінення розміру файлу операції, наприклад, яка використовує параметр Змінити файл або команду ALTER DATABASE . Інший обмеження 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, дозволених ідентифікаційний 0 (тип невідомо), код на сторінки (6:8040), містить код неправильний сторінки в заголовку сторінки, її. 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 і, що ці причини вводу-виводу підсистема проблем. Таким чином, якщо протокол IMAP про помилку за межами стискання операцій, слід робити додаткові дослідження.
  • У SQL Server 2005 і пізніших версій незважаючи на те, надходить протокол IMAP про 8909 програмі або користувачу, який виконує операції стискання, стискання операції не не вдасться.
  • У SQL Server 2000 і попередніх версій ці помилки призведе до стискання операції не. Тому для стискання бази даних tempdb, потрібно перезапустити SQL Server повторно, створення бази даних tempdb. Щоб отримати додаткові відомості клацніть номер статті в базі знань Microsoft Knowledge Base:
    277848 Відображається протокол IMAP про помилку "Таблиці пошкоджений об'єкт ID 0, індекс ID 0, сторінки ID", виникає під Вільний час запуску DBCC DBREINDEX, на серверах SQL Server


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

Thuộc tính

ID Bài viết: 307487 - Xem lại Lần cuối: 04/26/2016 03:26:00 - Bản sửa đổi: 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 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 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 KbMtuk
Phản hồi