Увеличить количество tempdb файлов
В этой статье описывается системная база данных tempdb . Она является глобальным ресурсом, доступным всем пользователям, которые подключены к экземпляру SQL Server, Базе данных SQL Azure или Управляемому экземпляру SQL Azure.
Мониторинг использования tempdb
Нехватка места на диске для tempdb может привести к значительным сбоям рабочей среды SQL Server, а также помешать работающим приложениям завершить операции. Для отслеживания места на диске, используемого в файлах tempdb , можно применять динамическое административное представление sys.dm_db_file_space_usage:
Для мониторинга действий выделения и освобождения страниц в tempdb на уровне сеансов или задач можно использовать динамические административные представления sys.dm_db_session_space_usage и sys.dm_db_task_space_usage. Эти представления позволяют выявлять большие запросы, временные таблицы или табличные переменные, которые используют много места на диске для tempdb . Кроме того, вы можете использовать несколько счетчиков для мониторинга свободного места в базе данных tempdb и ресурсов, использующих tempdb .
В этой статье помогают устранить проблему, при которой при большой нагрузке на сервере наблюдается серьезная блокировка.
Оригинальная версия продукта: SQL Server
Исходный номер КБ: 2154845
Способ увеличения количества файлов данных tempdb уменьшает состязание
В следующем списке показано, как увеличение количества tempdb файлов данных tempdb с одинаковым изменением размера сокращает состязание.
Если у вас есть один файл данных для tempdb, у вас есть только одна страница GAM и одна страница SGAM для каждого 4 ГБ места.
Увеличение количества файлов данных с одинаковыми размерами для tempdb — это создание одной или нескольких страниц GAM и SGAM для каждого файла данных.
Алгоритм выделения для GAM выделяет по одному экстенту за один раз (восемь смежных страниц) от количества файлов при циклическом прохождении, при этом учитывается пропорциональная заливка. Таким образом, если у вас есть 10 файлов одинакового размера, первый из них — из файла file1, второй из file2, третий из file3 и т. д.
Состязание за ресурсы на странице PFS уменьшается, так как восемь страниц одновременно помечаются как ЗАПОЛНЕНные из-за того, что GAM выделяет страницы.
Планирование ресурсов для tempdb в SQL Server
Определение требуемого размера tempdb в рабочей среде SQL Server зависит от многих факторов. Как описано выше, эти факторы включают текущую рабочую нагрузку и используемые функции SQL Server. Рекомендуется проанализировать текущую рабочую нагрузку, выполнив следующие задачи в среде тестирования SQL Server:
- Включите автоувеличение для tempdb .
- Запускайте отдельные запросы или файлы трассировки рабочей нагрузки и следите за использованием диска базой данных tempdb .
- Выполняйте операции обслуживания индексов, например перестроение индексов, и следите за использованием диска базой данных tempdb .
- Используйте значения используемого пространства на диске из предыдущих шагов для прогнозирования общей рабочей нагрузки. Скорректируйте полученное значение с учетом предполагаемой параллельной обработки и задайте соответствующий размер tempdb .
Применение флага трассировки — T1118 уменьшает состязание
В следующем списке показано, как использовать флаг трассировки — T1118 уменьшает состязание.
-T1118 — параметр уровня сервера.
Включите флаг -T1118 трассировки в параметрах запуска SQL Server, чтобы флажок трассировки оставался на силе даже после повторного запуска SQL Server.
-T1118 удаляет практически все выделенные отдельные страницы на сервере.
Отключив большую часть отдельных выделений страниц, вы сокращаете их содержимое на странице SGAM.
Если включен режим -T1118 , почти все новые распределения выполняются на странице GAM (например, 2:1:2), которая выделяет восемь (8) страниц (1 экстента) на объект, в отличие от одной страницы из экстента для первых восьми (8) страниц объекта, без флага трассировки.
IAM-страницы продолжают использовать отдельные страницы из SGAM-страницы, даже если включена функция -T1118 . Однако при объединении с 8.00.0702 исправлениями и расширенными файлами данных tempdb эффект нетто является сокращением конфликтов на странице SGAM. Сведения о том, как ознакомиться с пространством, приведены в следующем разделе.
Недостаток использования параметра -T1118 — это то, что вы можете видеть увеличение размера базы данных, если выполняются следующие условия:
Новые объекты создаются в базе данных пользователей.
Каждый из новых объектов занимает менее 64 КБ хранилища.
Если эти условия истинны, вы можете выделить 64 КБ (8 страниц * 8 KB = 64 КБ) для объекта, в котором требуется 8 КБ свободного места, таким образом из56 лишнее хранение КБ. Тем не менее, если новый объект использует более 64 КБ (8 страниц) в течение жизненного цикла, нет недостатков для флага трассировки. Таким образом, в худшем случае SQL Server может выделять семь (7) дополнительных страниц во время первого выделения только для новых объектов, которые не увеличиваются за одну (1) странице.
Перемещение данных и файлов журналов базы данных tempdb в SQL Server
Сведения о перемещении файлов журналов и данных tempdb см. в статье Перемещение системных баз данных.
Симптомы
На сервере, который работает Microsoft SQL Server, вы заметите серьезные блокировки, когда сервер испытывает тяжелую нагрузку. Динамические представления управления [или] указывают на то, что эти запросы или задачи sys.dm_exec_request sys.dm_os_waiting_tasks ждут ресурсов tempdb. Кроме того, тип ожидания — и ресурс ожидания указывает на PAGELATCH_UP страницы в tempdb. Эти страницы могут иметь формат 2:1:1, 2:1:3 и т. д. (страницы PFS и SGAM в tempdb).
Если страница имеет 8088, она является страницей PFS. Например, страница 2:3:905856 является PFS в file_id=3 в tempdb.
В следующих операциях активно используется tempdb:
- Повторяемая операция создания и сброса временных таблиц (локальных или глобальных).
- Таблица переменных, которые используют tempdb для хранения.
- Таблицы, связанные с CURSORS.
- Таблицы, связанные с пунктом ORDER BY.
- Таблицы работы, связанные с предложением GROUP BY.
- Файлы работы, связанные с HASH PLANS.
Эти действия могут вызывать проблемы с раздором.
Как реализация флага трассировки -T1118 снижает раздор
Этот раздел применим только к SQL Server 2014 и более ранним версиям.
В следующем списке объясняется, как использование флага трассировки -T1118 снижает раздор:
- -T1118 — это параметр на всей сервере.
- Включайте флаг трассировки -T1118 в параметры Запуска для SQL Server, чтобы флаг трассировки остался в силе даже после SQL Server повторно.
- -T1118 удаляет почти все выделения одной страницы на сервере.
- Отключив большую часть выделений одной страницы, вы уменьшите раздор на странице SGAM.
- Если включено -T1118, почти все новые выделения сделаны со страницы GAM (например, 2:1:2), которая выделяет восемь (8) страниц (в одной степени) одновременно объекту, а не одной странице из области для первых восьми (8) страниц объекта без флага трассировки.
- На страницах IAM по-прежнему используются выделения одной страницы со страницы SGAM, даже если включено -T1118. Однако, когда он сочетается с hotfix 8.00.0702 и увеличенными файлами данных tempdb, чистым эффектом является уменьшение раздора на странице SGAM. Что касается пространства, см. в следующем разделе.
Оптимизация производительности базы данных tempdb в SQL Server
Размер и физическое размещение базы данных tempdb может влиять на производительность системы. Например, если для базы данных tempdb установлен слишком малый размер, часть системной нагрузки может приходиться на автоувеличение tempdb до размера, требуемого для поддержки рабочей нагрузки при каждом перезапуске экземпляра SQL Server.
По возможности используйте мгновенную инициализацию файлов, чтобы повысить производительность операций увеличения файлов данных.
Заранее выделите место для всех файлов tempdb , установив для файла размер, достаточный для обеспечения обычной рабочей нагрузки в среде. Предварительное выделение позволяет избежать слишком частого расширения tempdb , способного повлиять на производительность. Следует установить автоувеличение для базы данных tempdb , чтобы увеличить место на диске для незапланированных исключений.
Файлы данных в каждой файловой группе должны иметь одинаковый размер, так как SQL Server использует алгоритм пропорционального заполнения, который повышает вероятность выделения памяти в файлах с большим объемом свободного пространства. Разделение tempdb на множество файлов данных равного размера обеспечивает эффективное выполнение использующих tempdb операций с высокой степенью параллелизма.
Установите приемлемое значение шага увеличения размера файла, чтобы оно не было слишком низким для файлов базы данных tempdb . Если увеличение размера файлов будет слишком малым по сравнению с объемом записываемых в tempdb данных, tempdb может постоянно требовать расширения. Это скажется на производительности.
Чтобы проверить текущий размер и параметры увеличения для tempdb , используйте следующий запрос:
Поместите базу данных tempdb в быструю подсистему ввода-вывода. Если имеется много непосредственно присоединенных дисков, то используйте чередование дисков. Отдельные файлы данных tempdb или их группы не обязательно должны располагаться на разных дисках или шпинделях, если только у вы не наблюдаете узкие места в подсистеме ввода-вывода.
Расположите базу данных tempdb на дисках, отличающихся от используемых пользовательскими базами данных.
Обзор
Системная база данных tempdb — это глобальный ресурс, содержащий следующее:
Временные пользовательские объекты, созданные явно. К ним относятся глобальные или локальные временные таблицы и индексы, временные хранимые процедуры, табличные переменные, возвращаемые функциями с табличными значениями таблицы и курсоры.
Внутренние объекты, создаваемые ядром СУБД. К ним относятся следующие:
- Рабочие таблицы, хранящие промежуточные результаты буферов, курсоры, сортировки и временное хранилище больших объектов (LOB).
- рабочие файлы для операций хэш-соединения или статистических хэш-выражений;
- промежуточные результаты сортировки для таких операций, как создание или перестроение индексов (если указать SORT_IN_TEMPDB ), либо определенных запросов GROUP BY , ORDER BY или UNION .
Хранилища версий. Это коллекции страниц данных со строками данных, которые поддерживают функции управления версиями строк. Существует два типа хранилищ: общее хранилище версий и хранилище версий для построения индекса в подключенном режиме. Хранилища версий содержат следующее:
- версии строк, создаваемые транзакциями изменения данных в базе данных, которая использует READ COMMITTED через транзакции изоляции моментальных снимков и транзакции изоляции управления версиями строк;
- версии строк, создаваемые транзакциями изменения данных для таких функций, как операции с индексами в подключенном режиме, функции MARS (множественный активный результирующий набор) и триггеры AFTER .
Операции в tempdb в минимальном объеме записываются в журнал, что позволяет откатывать транзакции. tempdb создается заново при каждом запуске SQL Server, чтобы система всегда запускалась с чистой копией базы данных. Временные таблицы и хранимые процедуры удаляются автоматически при отключении, и при выключении системы нет активных соединений.
tempdb не требует сохранения каких-либо данных между сеансами SQL Server. Операции резервного копирования и восстановления для tempdb недопустимы.
Увеличение производительности базы данных tempdb в SQL Server
Начиная с версии SQL Server 2016 (13.x);, производительность tempdb дополнительно оптимизирована следующим образом:
- Временные таблицы и табличные переменные кэшируются. Кэширование позволяет операциям удаления и создания временных объектов выполняться очень быстро. Кэширование также снижает вероятность возникновения состязаний, связанных с метаданными и выделением страниц.
- Усовершенствован протокол кратковременных блокировок выделения страниц для снижения количества используемых кратковременных блокировок UP (обновление).
- Снижены затраты ресурсов на ведение журнала tempdb — уменьшено потребление пропускной способности подсистемы ввода-вывода файлом журнала tempdb .
- Программа установки добавляет множество файлов данных tempdb при установке нового экземпляра. Эту задачу можно выполнить с помощью нового элемента управления для ввода в пользовательском интерфейсе в разделе Настройка ядра СУБД и параметра командной строки /SQLTEMPDBFILECOUNT . По умолчанию программа установки добавляет столько файлов данных tempdb , сколько имеется логических процессоров, но их может быть не больше восьми.
- При наличии множества файлов данных tempdb автоматическое увеличение выполняется для всех файлов в одно время и в равном объеме согласно параметрам увеличения. Флаг трассировки 1117 больше не требуется.
- Для всех операций распределения в tempdb используются единообразные экстенты. Флаг трассировки 1118 больше не требуется.
- Для первичной файловой группы свойство AUTOGROW_ALL_FILES включено и не может быть изменено.
Дополнительные сведения об улучшениях производительности в tempdb см. в статье блога TEMPDB — Files and Trace Flags and Updates, Oh My! (TEMPDB — файлы, флаги трассировки и обновления).
tempdb в Базе данных SQL
Отдельные базы данных и базы данных в пуле в службе База данных SQL Azure поддерживают глобальные временные таблицы и глобальные временные хранимые процедуры, которые хранятся в tempdb и имеют область действия на уровне базы данных. Глобальные временные таблицы и глобальные временные хранимые процедуры являются общими для всех сеансов пользователей в рамках одной базы данных. Сеансы пользователей, связанные с другими базами данных, не имеют доступа к глобальным временным таблицам. Дополнительные сведения см. в разделе Глобальные временные таблицы (база данных SQL Azure) в области базы данных.
Для отдельной базы данных или баз данных в пуле в службе "База данных SQL Azure" из всех системных баз данных доступны только база данных master и tempdb . Дополнительные сведения см. в статье Что собой представляет логический сервер в Azure.
Дополнительные сведения о размерах tempdb в Базе данных SQL Azure см. в следующих статьях:
- модель приобретения на основе виртуальных ядер: отдельные базы данных, базы данных в пуле;
- модель приобретения на основе DTU: отдельные базы данных, базы данных в пуле.
Разрешения
Любой пользователь может создавать временные объекты в tempdb . Если не предоставлены дополнительные разрешения, пользователям доступны только принадлежащие им объекты. Можно отозвать разрешение на подключение к tempdb , чтобы запретить пользователю работать с tempdb . Но делать это не рекомендуется, так как tempdb требуется для выполнения некоторых стандартных операций.
Настройка и использование метаданных оптимизированной для памяти базы данных tempdb
Чтобы согласиться на применение этой новой функции, используйте следующий скрипт:
Чтобы это изменение конфигурации вступило в силу, нужно перезапустить службу.
Вы можете проверить, является ли tempdb оптимизированной для памяти, используя следующую команду T-SQL:
Если по какой-то причине не удается запустить сервер после включения оптимизированных для памяти метаданных tempdb , можно обойти эту функцию, запустив экземпляр SQL Server в минимальной конфигурации с помощью параметра запуска -f. После этого вы можете отключить функцию и перезапустить SQL Server в нормальном режиме.
Чтобы защитить сервер от потенциальных состояний нехватки памяти, можно привязать tempdb к пулу ресурсов. В этом случае вместо действий, которые обычно выполняются при привязке пула ресурсов к базе данных, следует использовать команду ALTER SERVER .
Кроме того, даже если метаданные оптимизированной для памяти базы данных tempdb уже включены, чтобы это изменение вступило в силу, требуется перезагрузка.
Оптимизированные для памяти метаданные tempdb
Состязание метаданных tempdb всегда было узким местом для масштабируемости многих рабочих нагрузок, выполняющихся в SQL Server. В SQL Server 2019 (15.x) появилась новая функция оптимизированных для памяти метаданных tempdb, входящая в семейство функций выполняющейся в памяти базы данных.
Она эффективно устраняет существующее узкое место и открывает новый уровень масштабируемости для рабочих нагрузок, активно использующих tempdb. В SQL Server 2019 (15.x) системные таблицы, связанные с управлением метаданными временных таблиц, можно переместить в неустойчивые таблицы без кратковременной блокировки, оптимизированные для памяти.
Сейчас функция оптимизированных для памяти метаданных tempdb недоступна для Базы данных SQL Azure и Управляемых экземпляров SQL Azure.
Просмотрите это 7-минутное видео, чтобы узнать, как и когда следует использовать метаданные tempdb, оптимизированные для памяти:
tempdb в Управляемом экземпляре SQL
Управляемый экземпляр SQL Azure поддерживает временные объекты так же, как и SQL Server, где все глобальные временные таблицы и глобальные временные хранимые процедуры доступны всем пользовательским сеансам в пределах одного управляемого экземпляра. Аналогично доступны все системные базы данных.
Дополнительные сведения о размерах tempdb в Управляемом экземпляре SQL Azure см. в статье Ограничения ресурсов.
Дополнительная информация
Оптимизированные для памяти метаданные tempdb
Состязание метаданных tempdb всегда было узким местом для масштабируемости многих рабочих нагрузок, выполняющихся в SQL Server. В SQL Server 2019 (15.x) появилась новая функция оптимизированных для памяти метаданных tempdb, входящая в семейство функций выполняющейся в памяти базы данных.
Она эффективно устраняет существующее узкое место и открывает новый уровень масштабируемости для рабочих нагрузок, активно использующих tempdb. В SQL Server 2019 (15.x) системные таблицы, связанные с управлением метаданными временных таблиц, можно переместить в неустойчивые таблицы без кратковременной блокировки, оптимизированные для памяти.
Сейчас функция оптимизированных для памяти метаданных tempdb недоступна для Базы данных SQL Azure и Управляемых экземпляров SQL Azure.
Просмотрите это 7-минутное видео, чтобы узнать, как и когда следует использовать метаданные tempdb, оптимизированные для памяти:
Увеличение количества файлов данных tempdb с равным размером
Например, если размер одного файла данных tempdb составляет 8 ГБ, а размер файла журнала — 2 ГБ, необходимо увеличить количество файлов данных до восьми (каждый из 1 ГБ для поддержания равного размера) и оставить файл журнала таким, как есть. Наличие различных файлов данных на отдельных дисках будет предоставлять дополнительные преимущества производительности. Однако это не требуется. Файлы могут сосуществовать на одном томе диска.
Оптимальное количество файлов данных tempdb зависит от степени раздора в tempdb. В качестве отправной точки можно настроить tempdb как минимум на количество логических процессоров, которые назначены для SQL Server. Для более высокой системы начальный номер может быть восемь (8). Если раздор не уменьшается, может потребоваться увеличить количество файлов данных.
Рекомендуется использовать равное размер файлов данных. SQL Server 2000 Пакет обновления 4 (SP4) ввел исправление, использующее алгоритм кругового робина для смешанных выделений страниц. В связи с этим начальный файл отличается для каждого последовательного смешанного распределения страниц (если существует несколько файлов). Новый алгоритм распределения для SGAM — это чистый круглая малиновка и не использует пропорциональный заполняемость для поддержания скорости. Рекомендуется создавать все файлы данных tempdb с одинаковым размером.
Решение
SQL Server 2016 и более поздних версиях:
Оптимизация производительности базы данных tempdb в SQL Server.
Применяйте соответствующий ТС для SQL Server 2016 и 2017 годов, чтобы воспользоваться следующим обновлением. В 2016 и SQL Server 2017 года было сделано дополнительное снижение SQL Server. В дополнение к распределению круговой развязки во всех файлах данных tempdb исправление улучшает распределение страниц PFS путем выполнения распределений кругового робина на нескольких страницах PFS в одном файле данных. Дополнительные сведения см. в странице KB4099472 - усовершенствование алгоритма кругового робина страницы PFS в 2014, 2016 и 2017 годах SQL Server 2014, 2016 и 2017гг.
Дополнительные сведения об этих рекомендациях и других изменениях, внесенных в SQL 2016 г.
SQL Server 2014 и более ранних версиях:
Чтобы улучшить concurrency tempdb, попробуйте следующие методы:
Увеличение количества файлов данных в tempdb, чтобы увеличить пропускную способность диска и уменьшить раздор в структурах распределения. Как правило, если число логических процессоров меньше или равно восьми (8), используйте такое же количество файлов данных, как и логические процессоры. Если число логических процессоров больше восьми (8), используйте восемь файлов данных. Если раздор продолжается, увеличите количество файлов данных на несколько 4 (4) до количества логических процессоров до тех пор, пока содержание не будет уменьшено до допустимых уровней. Кроме того, внести изменения в рабочей нагрузке или коде.
Рассмотрите возможность реализации рекомендаций по наилучшей практике в работе с tempdb в SQL Server 2005 г.
Если предыдущие действия не уменьшают существенное количество раздора выделения, а раздор находится на страницах SGAM, реализуйте флаг трассировки -T1118. Под этим флагом трассировки SQL Server в полном объеме каждому объекту базы данных, тем самым устраняя раздор на страницах SGAM.
Этот флаг трассировки влияет на каждую базу данных в экземпляре SQL Server. Сведения о том, как определить, находится ли раздор выделения на страницах SGAM, см. в странице Мониторинговый контент, вызванный операциями DML.
В SQL Server 2014 г. убедитесь, что вы применяйте Пакет обновления 3, чтобы воспользоваться исправлением, задокументированным в следующей статье KB. Дальнейшее улучшение снижает уровень содержимого в SQL Server 2014 г. В дополнение к распределению круговой развязки во всех файлах данных tempdb исправление улучшает распределение страниц PFS путем выполнения распределений кругового робина на нескольких страницах PFS в одном файле данных.
Блог команды тигра MSSQL: файлы и флаги трассировки и обновления в SQL Server tempdb
Перемещение данных и файлов журналов базы данных tempdb в SQL Server
Сведения о перемещении файлов журналов и данных tempdb см. в статье Перемещение системных баз данных.
Увеличивать количество файлов данных tempdb с одинаковым изменением размера
Например, если размер файла базы данных tempdb равен 8 ГБ, а размер файла журнала равен 2 ГБ, рекомендуется увеличивать число файлов данных до восьми (8) (каждый из 1 ГБ для сохранения одинакового размера) и оставить файл журнала как есть. Наличие различных файлов данных на разных дисках обеспечит дополнительную производительность. Однако это не является обязательным. Файлы могут содержаться на одном томе диска. Оптимальное количество tempdb файлов данных tempdb зависит от степени конкуренции, видимой в базе данных tempdb. В качестве отправной точки можно настроить базу данных tempdb .не менее числа логических процессоров, назначенных для SQL Server. Для более производительных систем начальный номер может быть равен восьми (8). Если конфликт не уменьшился, возможно, придется увеличивать количество файлов данных. Мы рекомендуем использовать одинаковый размер файлов данных. Сервер SQL server 2000 с пакетом обновления 4 (SP4) представил исправление, в котором используется алгоритм циклического обслуживания для выделения смешанных страниц. Из-за этого улучшения начальный файл отличается для каждого последующего выделения смешанной страницы (если существует несколько файлов). Новый алгоритм выделения для SGAM является чистым циклом по кругу и не учитывает пропорциональную заливку для обеспечения скорости. Рекомендуется создать все tempdbфайлы данных tempdb одинакового размера.
Оптимизация производительности базы данных tempdb в SQL Server
Размер и физическое размещение базы данных tempdb может влиять на производительность системы. Например, если для базы данных tempdb установлен слишком малый размер, часть системной нагрузки может приходиться на автоувеличение tempdb до размера, требуемого для поддержки рабочей нагрузки при каждом перезапуске экземпляра SQL Server.
По возможности используйте мгновенную инициализацию файлов, чтобы повысить производительность операций увеличения файлов данных.
Заранее выделите место для всех файлов tempdb , установив для файла размер, достаточный для обеспечения обычной рабочей нагрузки в среде. Предварительное выделение позволяет избежать слишком частого расширения tempdb , способного повлиять на производительность. Следует установить автоувеличение для базы данных tempdb , чтобы увеличить место на диске для незапланированных исключений.
Файлы данных в каждой файловой группе должны иметь одинаковый размер, так как SQL Server использует алгоритм пропорционального заполнения, который повышает вероятность выделения памяти в файлах с большим объемом свободного пространства. Разделение tempdb на множество файлов данных равного размера обеспечивает эффективное выполнение использующих tempdb операций с высокой степенью параллелизма.
Установите приемлемое значение шага увеличения размера файла, чтобы оно не было слишком низким для файлов базы данных tempdb . Если увеличение размера файлов будет слишком малым по сравнению с объемом записываемых в tempdb данных, tempdb может постоянно требовать расширения. Это скажется на производительности.
Чтобы проверить текущий размер и параметры увеличения для tempdb , используйте следующий запрос:
Поместите базу данных tempdb в быструю подсистему ввода-вывода. Если имеется много непосредственно присоединенных дисков, то используйте чередование дисков. Отдельные файлы данных tempdb или их группы не обязательно должны располагаться на разных дисках или шпинделях, если только у вы не наблюдаете узкие места в подсистеме ввода-вывода.
Расположите базу данных tempdb на дисках, отличающихся от используемых пользовательскими базами данных.
Настройка и использование метаданных оптимизированной для памяти базы данных tempdb
Чтобы согласиться на применение этой новой функции, используйте следующий скрипт:
Чтобы это изменение конфигурации вступило в силу, нужно перезапустить службу.
Вы можете проверить, является ли tempdb оптимизированной для памяти, используя следующую команду T-SQL:
Если по какой-то причине не удается запустить сервер после включения оптимизированных для памяти метаданных tempdb , можно обойти эту функцию, запустив экземпляр SQL Server в минимальной конфигурации с помощью параметра запуска -f. После этого вы можете отключить функцию и перезапустить SQL Server в нормальном режиме.
Чтобы защитить сервер от потенциальных состояний нехватки памяти, можно привязать tempdb к пулу ресурсов. В этом случае вместо действий, которые обычно выполняются при привязке пула ресурсов к базе данных, следует использовать команду ALTER SERVER .
Кроме того, даже если метаданные оптимизированной для памяти базы данных tempdb уже включены, чтобы это изменение вступило в силу, требуется перезагрузка.
Разрешения
Любой пользователь может создавать временные объекты в tempdb . Если не предоставлены дополнительные разрешения, пользователям доступны только принадлежащие им объекты. Можно отозвать разрешение на подключение к tempdb , чтобы запретить пользователю работать с tempdb . Но делать это не рекомендуется, так как tempdb требуется для выполнения некоторых стандартных операций.
Ограничения оптимизированной для памяти базы данных tempdb
Включение и отключение функции не является динамическим. Из-за внутренних изменений, которые необходимо внести в структуру tempdb , для включения или отключения этой функции требуется перезапуск.
Отдельная транзакция не может обратиться к таблицам, оптимизированным для памяти, в более чем одной базе данных. Все транзакции, связанные с таблицей, оптимизированной для памяти, в пользовательской базе данных, не смогут обратиться к системным представлениям tempdb в той же транзакции. Если вы попытаетесь обратиться к системным представлениям tempdb в транзакции с участием таблицы, оптимизированной для памяти, в пользовательской базе данных, возникнет следующая ошибка:
Запросы к таблицам, оптимизированным для памяти, не поддерживают указания блокировки и изоляции, поэтому запросы к представлениям каталога оптимизированной для памяти tempdb не будут учитывать указания блокировки и изоляции. Как и в случае с другими системными представлениями каталога в SQL Server, все транзакции для системных представлений будут находиться в изоляции READ COMMITTED (или READ COMMITTED SNAPSHOT в нашем случае).
Если оптимизированные для памяти метаданные tempdb включены, индексы columnstore нельзя создавать во временных таблицах.
В связи с ограничением на индексы columnstore использование системной хранимой процедуры sp_estimate_data_compression_savings с параметром сжатия данных COLUMNSTORE или COLUMNSTORE_ARCHIVE не поддерживается, если включены оптимизированные для памяти метаданные tempdb .
Эти ограничения применяются только при создании ссылок на системные представления tempdb . При необходимости вы сможете создать временную таблицу в той же транзакции, где обращаетесь к таблице, оптимизированной для памяти, в пользовательской базе данных.
Ограничения
С базой данных tempdb нельзя выполнять следующие операции:
- Добавление файловых групп.
- Резервное копирование и восстановление из копии.
- Изменение параметров сортировки. Параметрами сортировки по умолчанию являются параметры сортировки сервера.
- Изменение владельца базы данных. Владельцем tempdb является sa
- Создание моментального снимка базы данных.
- Удаление базы данных.
- Удаление пользователя guest из базы данных.
- Включение отслеживания измененных данных.
- Участие в зеркальном отображении базы данных.
- Удаление первичной файловой группы, первичного файла данных или файла журнала.
- Переименование базы данных или первичной файловой группы.
- Выполнение DBCC CHECKALLOC .
- Выполнение DBCC CHECKCATALOG .
- Перевод базы данных в режим OFFLINE .
- Перевод базы данных или первичной файловой группы в режим READ_ONLY .
Решение
Чтобы улучшить параллелизм для tempdb, попробуйте выполнить указанные ниже действия.
Увеличьте количество файлов данных в tempdb для максимального увеличения пропускной способности диска и снижения количества конфликтов в структурах распределения. Как правило, если число логических процессоров меньше или равно восьми (8), используйте одинаковое количество файлов данных в качестве логических процессоров. Если число логических процессоров больше восьми (8), используйте восемь файлов данных. Если конфликт продолжается, увеличивать количество файлов данных по кратным четырем (4) до количества логических процессоров до тех пор, пока их содержимое не уменьшится до приемлемых уровней. Кроме того, можно вносить изменения в рабочую нагрузку или код.
Рекомендации по рекомендациям можно реализовать в следующей статье TechNet:
Если описанные выше действия не снижают объем выделения, а состязание — на страницах SGAM, реализуйте флаг трассировки — T1118. В соответствии с этим флагом трассировки SQL Server выделяет полные экстенты каждому объекту базы данных, тем самым устраняя конфликты на страницах SGAM. Примечания.
Этот флаг трассировки влияет на все базы данных в экземпляре SQL Server. Сведения о том, как определить, находится ли конфликт выделения на страницах SGAM, можно найти в разделе "мониторинг конфликтов, вызванных DML-операциями" в разделе Работа с tempdb на странице SQL server 2005 на сайте TechNet.
Начиная с SQL Server 2016, некоторые из этих изменений конфигурации выполняются автоматически, и вам не нужно вмешательство пользователя. Дополнительные сведения можно найти в следующих статьях блогов по инженерам SQL Server для КАСКАДов:
Примените необходимые SP1 для SQL Server 2016 и 2017, чтобы воспользоваться всеми преимуществами последнего обновления. Была сделана усовершенствованная Улучшенная подсостязание в SQL Server 2016 и SQL Server 2017. В дополнение к циклу распределения между всеми файлами данных tempdb это исправление улучшает выделение страниц PFS, выполняя циклическое распределение на нескольких страницах PFS в одном файле данных. Дополнительные сведения можно найти в следующих материалах:
Microsoft Knowledge Base: 4099472 PFS на странице в SQL Server 2014, 2016 и 2017 — улучшение алгоритма циклического цикла
Параметры базы данных для tempdb в SQL Server
В следующей таблице приводится список значений по умолчанию для каждого параметра базы данных tempdb , а также возможность его изменения. Чтобы просмотреть текущие настройки этих параметров, используйте представление каталога sys.databases .
Причина
Если база данных tempdb используется слишком часто, при попытке выделения страниц может возникнуть конфликт SQL Server. В зависимости от степени конкуренции это может ненадолго перестать отвечать на запросы и запросы, которые включают базу данных tempdb .
Во время создания объекта две (2) страницы должны выделяться из смешанного экстента и назначаться новому объекту. Одна страница предназначена для карты распределения индекса (IAM), а вторая — для первой страницы объекта. SQL Server отслеживает Смешанные экстенты с помощью общей страницы карты глобальных ресурсов (SGAM). Каждая страница SGAM отслеживает объем данных 4 ГБ. Чтобы выделить страницу из смешанного экстента, SQL Server должен проверить страницу "свободный доступ к странице" (PFS), чтобы определить, какая смешанная страница свободна для выделения. На странице PFS отслеживается свободное место, доступное на каждой странице, и каждая страница PFS отслеживает сведения о 8000 страницах. Для внесения изменений в страницы PFS и SGAM можно настроить соответствующую синхронизацию. и это может заожидание других модификаторов для коротких периодов. Когда SQL Server осуществляет поиск смешанной страницы для выделения, она всегда начнет сканировать на том же файле и на странице SGAM. Это вызывает сильное состязание на странице SGAM при выполнении нескольких смешанных распределений страниц. Это может вызвать проблемы, описанные в разделе "проблема". Примечание Действия при освобождении должны также изменить страницы. Это может повлиять на возросшее состязание. Чтобы узнать больше о разных механизмах выделения, используемых SQL Server (SGAM, GAM, PFS, IAM), обратитесь к разделу "ссылки".
Обзор
Системная база данных tempdb — это глобальный ресурс, содержащий следующее:
Временные пользовательские объекты, созданные явно. К ним относятся глобальные или локальные временные таблицы и индексы, временные хранимые процедуры, табличные переменные, возвращаемые функциями с табличными значениями таблицы и курсоры.
Внутренние объекты, создаваемые ядром СУБД. К ним относятся следующие:
- Рабочие таблицы, хранящие промежуточные результаты буферов, курсоры, сортировки и временное хранилище больших объектов (LOB).
- рабочие файлы для операций хэш-соединения или статистических хэш-выражений;
- промежуточные результаты сортировки для таких операций, как создание или перестроение индексов (если указать SORT_IN_TEMPDB ), либо определенных запросов GROUP BY , ORDER BY или UNION .
Хранилища версий. Это коллекции страниц данных со строками данных, которые поддерживают функции управления версиями строк. Существует два типа хранилищ: общее хранилище версий и хранилище версий для построения индекса в подключенном режиме. Хранилища версий содержат следующее:
- версии строк, создаваемые транзакциями изменения данных в базе данных, которая использует READ COMMITTED через транзакции изоляции моментальных снимков и транзакции изоляции управления версиями строк;
- версии строк, создаваемые транзакциями изменения данных для таких функций, как операции с индексами в подключенном режиме, функции MARS (множественный активный результирующий набор) и триггеры AFTER .
Операции в tempdb в минимальном объеме записываются в журнал, что позволяет откатывать транзакции. tempdb создается заново при каждом запуске SQL Server, чтобы система всегда запускалась с чистой копией базы данных. Временные таблицы и хранимые процедуры удаляются автоматически при отключении, и при выключении системы нет активных соединений.
tempdb не требует сохранения каких-либо данных между сеансами SQL Server. Операции резервного копирования и восстановления для tempdb недопустимы.
Ограничения оптимизированной для памяти базы данных tempdb
Включение и отключение функции не является динамическим. Из-за внутренних изменений, которые необходимо внести в структуру tempdb , для включения или отключения этой функции требуется перезапуск.
Отдельная транзакция не может обратиться к таблицам, оптимизированным для памяти, в более чем одной базе данных. Все транзакции, связанные с таблицей, оптимизированной для памяти, в пользовательской базе данных, не смогут обратиться к системным представлениям tempdb в той же транзакции. Если вы попытаетесь обратиться к системным представлениям tempdb в транзакции с участием таблицы, оптимизированной для памяти, в пользовательской базе данных, возникнет следующая ошибка:
Запросы к таблицам, оптимизированным для памяти, не поддерживают указания блокировки и изоляции, поэтому запросы к представлениям каталога оптимизированной для памяти tempdb не будут учитывать указания блокировки и изоляции. Как и в случае с другими системными представлениями каталога в SQL Server, все транзакции для системных представлений будут находиться в изоляции READ COMMITTED (или READ COMMITTED SNAPSHOT в нашем случае).
Если оптимизированные для памяти метаданные tempdb включены, индексы columnstore нельзя создавать во временных таблицах.
В связи с ограничением на индексы columnstore использование системной хранимой процедуры sp_estimate_data_compression_savings с параметром сжатия данных COLUMNSTORE или COLUMNSTORE_ARCHIVE не поддерживается, если включены оптимизированные для памяти метаданные tempdb .
Эти ограничения применяются только при создании ссылок на системные представления tempdb . При необходимости вы сможете создать временную таблицу в той же транзакции, где обращаетесь к таблице, оптимизированной для памяти, в пользовательской базе данных.
Физические свойства tempdb в SQL Server
В следующей таблице приводятся исходные значения конфигурации для файлов данных и журналов tempdb в SQL Server. Значения основаны на значениях по умолчанию для базы данных model . Размеры этих файлов могут немного отличаться в зависимости от выпуска SQL Server.
Количество вторичных файлов данных зависит от числа логических процессоров на компьютере. Как правило, если число логических процессоров меньше или равно восьми, используйте равное ему число файлов данных. Если число логических процессоров больше восьми, используйте восемь файлов данных. Если состязание сохраняется, увеличьте число файлов данных на значение, кратное четырем, пока состязание не снизится до приемлемого уровня, или внесите изменения в рабочую нагрузку или код.
Количество файлов данных по умолчанию основано на общих рекомендациях, приведенных в статье KB 2154845.
Чтобы проверить текущий размер и параметры увеличения для tempdb , выполнить запрос к представлению tempdb.sys.database_files .
Физические свойства tempdb в SQL Server
В следующей таблице приводятся исходные значения конфигурации для файлов данных и журналов tempdb в SQL Server. Значения основаны на значениях по умолчанию для базы данных model . Размеры этих файлов могут немного отличаться в зависимости от выпуска SQL Server.
Количество вторичных файлов данных зависит от числа логических процессоров на компьютере. Как правило, если число логических процессоров меньше или равно восьми, используйте равное ему число файлов данных. Если число логических процессоров больше восьми, используйте восемь файлов данных. Если состязание сохраняется, увеличьте число файлов данных на значение, кратное четырем, пока состязание не снизится до приемлемого уровня, или внесите изменения в рабочую нагрузку или код.
Количество файлов данных по умолчанию основано на общих рекомендациях, приведенных в статье KB 2154845.
Чтобы проверить текущий размер и параметры увеличения для tempdb , выполнить запрос к представлению tempdb.sys.database_files .
Параметры базы данных для tempdb в SQL Server
В следующей таблице приводится список значений по умолчанию для каждого параметра базы данных tempdb , а также возможность его изменения. Чтобы просмотреть текущие настройки этих параметров, используйте представление каталога sys.databases .
tempdb в Azure SQL
Поведение tempdb в Базе данных SQL Azure отличается от ее поведения в SQL Server, Управляемом экземпляре SQL Azure и в SQL Server на виртуальных машинах Azure.
Мониторинг использования tempdb
Нехватка места на диске для tempdb может привести к значительным сбоям рабочей среды SQL Server, а также помешать работающим приложениям завершить операции. Для отслеживания места на диске, используемого в файлах tempdb , можно применять динамическое административное представление sys.dm_db_file_space_usage:
Для мониторинга действий выделения и освобождения страниц в tempdb на уровне сеансов или задач можно использовать динамические административные представления sys.dm_db_session_space_usage и sys.dm_db_task_space_usage. Эти представления позволяют выявлять большие запросы, временные таблицы или табличные переменные, которые используют много места на диске для tempdb . Кроме того, вы можете использовать несколько счетчиков для мониторинга свободного места в базе данных tempdb и ресурсов, использующих tempdb .
tempdb в Azure SQL
Поведение tempdb в Базе данных SQL Azure отличается от ее поведения в SQL Server, Управляемом экземпляре SQL Azure и в SQL Server на виртуальных машинах Azure.
Как увеличение количества файлов данных tempdb уменьшает раздор
В следующем списке объясняется, как увеличение числа файлов данных tempdb с равным размером уменьшает раздор:
Если у вас есть один файл данных для tempdb, у вас есть только одна страница GAM и одна страница SGAM для каждого 4 ГБ пространства.
Увеличение количества файлов данных с одинаковыми размерами для tempdb эффективно создает одну или несколько страниц GAM и SGAM для каждого файла данных.
Алгоритм распределения для GAM выделяет по одной степени (восемь соразмерных страниц) из числа файлов в круговой моды, в то время как в честь пропорционального заполнения. Таким образом, если у вас 10 файлов одинакового размера, первое выделение из File1, второе из File2, третье из File3 и так далее.
Раздор ресурсов страницы PFS уменьшается, так как восемь страниц одновременно помечены как FULL, так как GAM раздает страницы.
tempdb в Управляемом экземпляре SQL
Управляемый экземпляр SQL Azure поддерживает временные объекты так же, как и SQL Server, где все глобальные временные таблицы и глобальные временные хранимые процедуры доступны всем пользовательским сеансам в пределах одного управляемого экземпляра. Аналогично доступны все системные базы данных.
Дополнительные сведения о размерах tempdb в Управляемом экземпляре SQL Azure см. в статье Ограничения ресурсов.
Причина
Когда база данных tempdb активно используется, SQL Server может возникнуть раздор при выделении страниц. В зависимости от степени раздора это может привести к тому, что запросы и запросы, в которых задействован tempdb, будут ненадолго безответными.
Во время создания объекта необходимо выделить две (2) страницы из смешанной степени и приурочить к новому объекту. Одна страница для карты распределения индексов (IAM), а вторая — для первой страницы объекта. SQL Server отслеживает смешанные масштабы с помощью страницы Общая глобальная карта распределения (SGAM). Каждая страница SGAM отслеживает около 4 гигабайт данных.
Чтобы выделить страницу из смешанной степени, SQL Server необходимо просмотреть страницу Page Free Space (PFS), чтобы определить, какая смешанная страница может быть выделена бесплатно. На странице PFS отслеживается свободное пространство, доступное на каждой странице, и каждая страница PFS отслеживает около 8000 страниц. Для внесения изменений на страницы PFS и SGAM поддерживается соответствующая синхронизация; и это может привести к срыву других модификаторов в течение коротких периодов времени.
Когда SQL Server для выделения смешанной страницы, она всегда запускает сканирование на одной и той же странице файла и SGAM. Это приводит к интенсивному раздору на странице SGAM, когда происходит несколько распределений на смешанных страницах. Это может привести к проблемам, которые описаны в разделе Симптомы.
Кроме того, необходимо изменить страницы. Это может способствовать увеличению содержимого.
Дополнительные данные о различных механизмах распределения, используемых SQL Server (SGAM, GAM, PFS, IAM), см. в разделе Ссылки.
Проблемы
На сервере, на котором работает Microsoft SQL Server, вы увидите серьезную блокировку, когда сервер испытывает значительную нагрузку. Динамические административные представления [sys. dm_exec_request и sys. dm_os_waiting_tasks] указывает на то, что эти запросы или задачи ожидают ресурсов tempdb . Кроме того, тип ожидания — PAGELATCH_UP, а ресурс ожидания указывает на страницы в tempdb. Эти страницы могут иметь формат 2:1:1, 2:1:3 и т. д. (страницы PFS и SGAM в базе данных tempdb).
Примечание. Если страница делится на 8088, она является страницей PFS. Например, страница 2:3:905856 является PFS в file_id = 3 в базе данных tempdb.
Следующие операции используют базу данных tempdb значительно обширным образом.
Repetative операции создания и удаления временных таблиц (локальных и глобальных).
Табличные переменные, использующие базу данных tempdb для хранения.
Рабочие таблицы, связанные с КУРСОРами.
Работа с таблицами, связанными с предложением ORDER BY.
Работа с таблицами, связанными с предложением GROUP BY.
Рабочие файлы, связанные с ПЛАНами ХЕШИРОВАНия.
Эти действия могут привести к проблемам с конфликтом.
Планирование ресурсов для tempdb в SQL Server
Определение требуемого размера tempdb в рабочей среде SQL Server зависит от многих факторов. Как описано выше, эти факторы включают текущую рабочую нагрузку и используемые функции SQL Server. Рекомендуется проанализировать текущую рабочую нагрузку, выполнив следующие задачи в среде тестирования SQL Server:
- Включите автоувеличение для tempdb .
- Запускайте отдельные запросы или файлы трассировки рабочей нагрузки и следите за использованием диска базой данных tempdb .
- Выполняйте операции обслуживания индексов, например перестроение индексов, и следите за использованием диска базой данных tempdb .
- Используйте значения используемого пространства на диске из предыдущих шагов для прогнозирования общей рабочей нагрузки. Скорректируйте полученное значение с учетом предполагаемой параллельной обработки и задайте соответствующий размер tempdb .
Ограничения
С базой данных tempdb нельзя выполнять следующие операции:
- Добавление файловых групп.
- Резервное копирование и восстановление из копии.
- Изменение параметров сортировки. Параметрами сортировки по умолчанию являются параметры сортировки сервера.
- Изменение владельца базы данных. Владельцем tempdb является sa
- Создание моментального снимка базы данных.
- Удаление базы данных.
- Удаление пользователя guest из базы данных.
- Включение отслеживания измененных данных.
- Участие в зеркальном отображении базы данных.
- Удаление первичной файловой группы, первичного файла данных или файла журнала.
- Переименование базы данных или первичной файловой группы.
- Выполнение DBCC CHECKALLOC .
- Выполнение DBCC CHECKCATALOG .
- Перевод базы данных в режим OFFLINE .
- Перевод базы данных или первичной файловой группы в режим READ_ONLY .
tempdb в Базе данных SQL
Отдельные базы данных и базы данных в пуле в службе База данных SQL Azure поддерживают глобальные временные таблицы и глобальные временные хранимые процедуры, которые хранятся в tempdb и имеют область действия на уровне базы данных. Глобальные временные таблицы и глобальные временные хранимые процедуры являются общими для всех сеансов пользователей в рамках одной базы данных. Сеансы пользователей, связанные с другими базами данных, не имеют доступа к глобальным временным таблицам. Дополнительные сведения см. в разделе Глобальные временные таблицы (база данных SQL Azure) в области базы данных.
Для отдельной базы данных или баз данных в пуле в службе "База данных SQL Azure" из всех системных баз данных доступны только база данных master и tempdb . Дополнительные сведения см. в статье Что собой представляет логический сервер в Azure.
Дополнительные сведения о размерах tempdb в Базе данных SQL Azure см. в следующих статьях:
- модель приобретения на основе виртуальных ядер: отдельные базы данных, базы данных в пуле;
- модель приобретения на основе DTU: отдельные базы данных, базы данных в пуле.
Ссылки
328551 Усовершенствования параллелизма для базы данных tempdb
Для получения дополнительных сведений о продуктах и средствах, которые автоматически проверяют это условие на вашем экземпляре SQL Server и в версиях продукта SQL Server, ознакомьтесь с приведенной ниже таблицей.
Программное обеспечение для правил
Название правила
Описание правила
Версии продуктов, для которых вычисляется правило
Системный центр Advisor
Конфигурация базы данных SQL Server: количество файлов данных tempdb может вызвать блокирование
Советник по System Center проверяет количество файлов данных, настроенных для базы данных tempdb. Если у сервера, на котором работает SQL Server, используется более одного процессора, это оповещение при создании. Ознакомьтесь со сведениями, приведенными в этой статье, и добавьте файлы данных в базу данных tempdb.
В этой статье описывается системная база данных tempdb . Она является глобальным ресурсом, доступным всем пользователям, которые подключены к экземпляру SQL Server, Базе данных SQL Azure или Управляемому экземпляру SQL Azure.
Увеличение производительности базы данных tempdb в SQL Server
Начиная с версии SQL Server 2016 (13.x);, производительность tempdb дополнительно оптимизирована следующим образом:
- Временные таблицы и табличные переменные кэшируются. Кэширование позволяет операциям удаления и создания временных объектов выполняться очень быстро. Кэширование также снижает вероятность возникновения состязаний, связанных с метаданными и выделением страниц.
- Усовершенствован протокол кратковременных блокировок выделения страниц для снижения количества используемых кратковременных блокировок UP (обновление).
- Снижены затраты ресурсов на ведение журнала tempdb — уменьшено потребление пропускной способности подсистемы ввода-вывода файлом журнала tempdb .
- Программа установки добавляет множество файлов данных tempdb при установке нового экземпляра. Эту задачу можно выполнить с помощью нового элемента управления для ввода в пользовательском интерфейсе в разделе Настройка ядра СУБД и параметра командной строки /SQLTEMPDBFILECOUNT . По умолчанию программа установки добавляет столько файлов данных tempdb , сколько имеется логических процессоров, но их может быть не больше восьми.
- При наличии множества файлов данных tempdb автоматическое увеличение выполняется для всех файлов в одно время и в равном объеме согласно параметрам увеличения. Флаг трассировки 1117 больше не требуется.
- Для всех операций распределения в tempdb используются единообразные экстенты. Флаг трассировки 1118 больше не требуется.
- Для первичной файловой группы свойство AUTOGROW_ALL_FILES включено и не может быть изменено.
Дополнительные сведения об улучшениях производительности в tempdb см. в статье блога TEMPDB — Files and Trace Flags and Updates, Oh My! (TEMPDB — файлы, флаги трассировки и обновления).
Недостатки
Недостатком использования -T1118 является то, что размер базы данных может увеличиться, если верны следующие условия:
- Новые объекты создаются в базе данных пользователей.
- Каждый из новых объектов занимает менее 64 КБ хранилища.
Если эти условия верны, можно выделить 64 КБ (восемь страниц * 8 КБ = 64 КБ) для объекта, для чего требуется только 8 КБ пространства, в результате чего объем хранилища составляет 56 КБ. Однако если новый объект использует более 64 КБ (восемь страниц) в своей жизни, нет недостатка в флаге трассировки. Поэтому в худшем случае SQL Server при первом выделении можно выделить семь (7) дополнительных страниц только для новых объектов, которые никогда не выходят за рамки одной (1) страницы.
SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Express with Advanced Services SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Express with Advanced Services SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2008 Standard SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Web SQL Server 2008 Workgroup SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Enterprise Core SQL Server 2014 Business Intelligence SQL Server 2014 Developer SQL Server 2014 Enterprise SQL Server 2014 Enterprise Core SQL Server 2014 Express SQL Server 2014 Web Еще. Меньше
Читайте также: