Пособие к курсу Администрирование Microsoft...
Transcript of Пособие к курсу Администрирование Microsoft...
1
И.В. Ананченко, И.В. Козлов
http://mctrewards.ru
Пособие к курсу
Администрирование Microsoft SQL Server 2012R2 Часть 1
Санкт-Петербург
2014
2
Оглавление
1. Планирование и установка SQL Server 2012.................................................................................................... 7
1.1 Планирование установки SQL Server 2012 ................................................................................................. 7 1.2 Установка SQL-Server 2012 ........................................................................................................................... 11 1.3 Конфигурирование SQL Server для сетевого доступа ................................................................................. 19
2. Средства администрирования SQL Server 2012 ............................................................................................ 24 2.1 Окна инструментальных средств в среде SQL Server Management Studio ................................................ 26 2.3 Диспетчер конфигурации SQL Server ........................................................................................................... 31 2.4 Технологии SQL Server 2012 ......................................................................................................................... 32
3. Утилиты и средства обслуживания SQL Server 2012 ................................................................................... 34 3.1 Специальный режим подключения Dedicated Administrator Connection (DAC) .................................... 34 3.2 SQL Server Profiler .......................................................................................................................................... 38 3.3 Запуск и использование помощника по настройке ядра СУБД (Database Engine Tuning Advisor) ......... 39 3.4 Программа (утилита) sqlcmd.......................................................................................................................... 44
4. Базы данных — системные и прикладных пользователей ......................................................................... 48 4.1 Служебные базы данных, базы данных пользователей и учебные базы данных SQL Server 2012 ......... 48 4.2 Физическая структура базы данных.............................................................................................................. 52 4.3 Создание пользовательских баз данных ....................................................................................................... 54 4.4 Перенос базы данных ..................................................................................................................................... 60
5. Обслуживание баз данных администратором SQL Server 2012 .................................................................. 62 5.1 Режим восстановления базы данных ............................................................................................................ 62 5.2 Режимы работы базы данных ........................................................................................................................ 64 5.3 Увеличение размера базы данных ................................................................................................................. 66 5.4 Уменьшение размера базы данных ............................................................................................................... 67 5.5 Операция переноса файлов базы данных ..................................................................................................... 69 5.6 Переименование базы данных ....................................................................................................................... 69 5.7 Изменение владельца базы данных .............................................................................................................. 70 5.8 Удаление базы данных ................................................................................................................................... 70
Литература ............................................................................................................................................................... 70
3
В пособии рассматриваются вопросы, связанные с установкой и
администрированием Microsoft SQL Server 2012. Microsoft SQL Server 2012
— система управления реляционными базами данных. Программный продукт
предлагает разработчикам и пользователям широкий набор возможностей по
созданию решений с высоким уровнем производительности, надежности и
безопасности, является комплексной платформой управления данными и
бизнес-анализа.
Материал пособия может быть полезен людям, изучающим курсы по
основам работы с СУБД Microsoft SQL Server, системному
администрированию. В качестве дополнительного материала, материал
пособия может быть полезен студентам, изучающим курс ―Прикладные
программные продукты и системы‖. Это связано с тем, что СУБД Microsoft
SQL Server (в том числе Microsoft® SQL Server® 2012 Express — мощная и
надежная бесплатная система управления данными, обеспечивающая
функциональное и надежное хранилище данных для веб-сайтов и настольных
приложений) используются многими прикладным программными
продуктами для хранения информации в базах данных. В пособии
рассматриваются наиболее общие вопросы, связанные с установкой и
администрированием Microsoft SQL Server 2012
Материалы пособия могут быть использованы в процессе
самоподготовки к сдаче сертификационного экзамена Microsoft 070-462
Administering Microsoft SQL Server 2012 Databases.
Пособие (часть 1) может использоваться при проведении курса по
администрирования SQL Server. Ниже приведен примерный план курса,
рассчитанного на 40 акад. часов
План курса
Тема 1. Планирование и установка SQL Server 2012
Планирование установки SQL Server 2012
Оценка архитектуры приложения на основе SQL Server 2012
Выбор оборудования
Выбор редакции SQL Server 2012
Установка SQL Server
Начало установки. Выбор набора компонентов
Работа с именованными экземплярами, экземпляр по умолчанию
Выбор учетной записи для служб SQL Server
Выбор режима аутентификации SQL Server 2012
Выбор кодировки и порядка сортировки
Другие параметры установки
Автоматизация процесса установки
Проверка выполненной установки SQL Server 2012, выполнение
послеустановочных задач.
Тема 2. Средства администрирования SQL Server 2012
Рабочие окна интерфейса SQL Server Management Studio
4
Способы создания скриптов в Management Studio
SQL Server Configuration Manager - назначение и настройка
Тема 3. Утилиты и средства обслуживания SQL Server 2012
Специальный режим подключения Dedicated Administrator Connection (DAC)
SQL Server Profiler
Database Engine Tuning Advisor
Программа (утилита) sqlcmd
Тема 4. Базы данных - системные и прикладных пользователей
Служебные и учебные базы данных SQL Server 2012
Физическая структура базы данных
Файлы баз данных и журналов транзакций
Определение размера файлов данных
Определение размера файлов журналов транзакций
Экстенты и страницы
Применение файловых групп
Логическая структура базы данных
Создание пользовательских баз данных
Создание базы данных из SQL Server Management Studio
Создание скрипта, создающего базу данных
Перенос базы данных
Тема 5. Обслуживание баз данных администратором SQL Server 2012
Режим восстановления базы данных (Recovery Model)
Режимы работы базы данных
Сопровождение баз данных
Увеличение размера базы данных
Уменьшение размера базы данных
Перенос файлов базы данных
Переименование базы данных
Изменение владельца базы данных
Удаление базы данных
Тема 6. Обеспечение администратором безопасности SQL Server 2012
Основы системы безопасности SQL Server 2012
Учетные записи SQL Server 2012
Выбор типа учетной записи
Создание учетной записи, настройка ее параметров
Режимы аутентификации SQL Server 2012
Учетные записи SQL Server 2012, создаваемые по умолчанию
Серверные роли. Разрешения на уровне сервера
Схемы базы данных, пользователи базы данных
Операции создания, изменения и удаления пользователей базы данных
5
Встроенные пользователи базы данных
Встроенные роли базы данных
Создание пользовательской роли
Предоставление прав на объекты в базе данных
Шифрование информации в таблицах баз данных
Тема 7. Резервное копирование и восстановление баз данных SQL Server
2012
Планирование резервного копирования
Типы резервного копирования
Выполнение резервного копирования по расписанию
Основы восстановления баз данных
Восстановление базы данных из резервной копии
Подготовка и проведение восстановления
Восстановление системных баз данных
Тема 8. Автоматизация администрирования SQL Server 2008,
возможности SQL Server 2012 для работы с электронной почтой
Автоматизация административных операций средствами SQL Server Agent
Работа с заданиями SQL Server Agent
Параметры заданий
Параметры этапов заданий, запуск заданий, настройка расписания заданий
Обзор возможностей SQL Server 2012 для работы с электронной почтой
Тема 9. Выполнение административных операций с использованием
программных средств, которые может разработать и использовать
системный администратор. SQL Server Integration Services.
Пример программы на Visual Basic по созданию базы данных.
Программа-клиент для чтения информации из таблицы созданной базы
данных (вариант программы на Delphi).
Применение SQL Server Integration Services
Средства для работы с SSIS
Тема 10. Мониторинг производительности SQL Server, оптимизация работы
SQL Server
Счетчики для анализа загрузки процессора
Счетчики для анализа загрузки оперативной памяти
Оптимизация работы SQL Server
Работа с блокировками, проблема оптимизация запросов
Тема 11 Репликация, средства обеспечения отказоустойчивости SQL
Server 2012
Репликация, терминология системы репликации
Типы репликации. Настройка репликации.
6
Работа SQL Server 2012 в кластере
Терминология и варианты конфигурации кластера
Установка SQL Server 2012 в кластер
Тема 12 Перспективы развития SQL Server 2012
Важные отличия Windows Server 2012 от предыдущих версий
От версии Windows Server 2012 к Windows Server 2012 R2 – что нового
Windows Server 2012 R2 и облачная инфраструктура
Итоги курса
7
1. Планирование и установка SQL Server 2012
1.1 Планирование установки SQL Server 2012
Microsoft SQL Server 2012 — система управления реляционными
базами данных (СУРБД), разработанная корпорацией Microsoft. Основной
используемый язык запросов — Transact-SQL (T-SQL), создан совместно
Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO
по структурированному языку запросов (SQL) с расширениями.
Используется для работы с базами данных размером от персональных до
крупных баз данных масштаба предприятия, успешно конкурирует с другими
СУБД в этом сегменте рынка [1]. Решение о том, какой выпуск SQL Server
следует использовать, достаточно сильно зависит от того, какие приложения
планируется использовать. Выбор выпуска зависит от количества и размера
обслуживаемых баз данных, а так же от того, какие клиентские приложения
планируется использовать для работы. На окончательный выбор,
естественно, влияет и стоимость выбираемого решения, которое оценивается,
как с учетом имеющихся у покупателей средств, так и возможность
последующего масштабирования, например, путем добавления
дополнительных компонентов.
Таблица 1. Выпуски Microsoft SQL Server 2012
Характе-
ристика
выпуска
Выпуск SQL
Server
Определение
Основной Enterprise Edition
(64-разрядная и
32-разрядная
версия)
Предложение высшего класса,
обеспечивающее полный набор возможностей
центра обработки данных (ЦОД) с
высочайшей производительностью,
неограниченными возможностями
виртуализации и развитыми средствами
бизнес-аналитики, позволяющими добиться
высокого уровня обслуживания важнейших
рабочих нагрузок, предоставлять конечным
пользователям доступ к анализу данных.
Основной Business
Intelligence (64-
разрядная
версия и 32-
разрядная
версия)
Комплексная платформа, дающая
организациям возможность строить и
развертывать надежные, масштабируемые и
управляемые решения бизнес-аналитики. В
выпуск включены функции просмотра и
представления данных в браузере, мощные
возможности комбинирования данных и
8
расширенное управление интеграцией.
Основной Standard Edition
(64-разрядная и
32-разрядная
версия)
Обеспечивает основные функции управления
данными, предоставляет базу данных бизнес-
аналитики для приложений, работающих в
отделах и небольших организациях.
Поддерживаются распространенные средства
разработки в локальных системах и
вычислительных облаках, что делает
возможным эффективное управление базами
данных с минимальными затратами ИТ-
ресурсов.
Специаль-
ный
Web Edition (64-
разрядная и 32-
разрядная
версия)
Решение с низкой совокупной стоимостью
владения, предназначенное для размещения
веб-сайтов и дополнительных веб-услуг, в
котором по доступной цене обеспечивает
масштабируемость и функции управления для
небольших и крупномасштабных веб-
проектов.
Допол-
нительный
Developer
Edition (64-
разрядная и 32-
разрядная
версия)
Позволяет разработчикам создавать
приложения любого типа на базе SQL Server.
Включает все функциональные возможности
выпуска Enterprise Edition, однако
лицензируется по более дешевому варианту,
как система для разработки и тестирования, а
не для применения в качестве рабочего
сервера. Выпуск SQL Server Developer Edition
хорошее решение для тех, кто создает и
тестирует приложения.
Допол-
нительный
SQL Server 2012
Express
Бесплатная СУБД для баз данных начального
уровня. Выпуск хорошо подходит для
обучения, для создания управляемых
данными приложений, работающих на
рабочих станциях и небольших серверах. SQL
Server 2012 Express бесплатный
инструментарий для независимых
поставщиков программного обеспечения,
непрофессиональных разработчиков
создающих клиентские приложения. Если
потребуется дополнительный функционал для
баз данных, то выпуск SQL Server Express
можно легко обновить до версий SQL Server
более высокого класса. Новой возможностью
версии SQL Server 2012 является SQL Server
Express LocalDB - облегченная версия
9
Express, имеет все программные функции,
запускается в пользовательском режиме,
быстро устанавливается, не требует
настройки и имеет низкие системные
требования.
Таблица 2. Компоненты SQL Server 2012
Компоненты
сервера
Описание
SQL Server
Database
Engine
В состав компонента Компонент SQL Server Database Engine
входит компонент Компонент Database Engine, основная
служба для хранения, обработки и обеспечения безопасности
данных, репликации, полнотекстового поиска, средств
управления реляционными и XML-данными и сервера служб
Data Quality Services (DQS).
Analysis
Services
содержат средства создания и управления приложениями
оперативной аналитической обработки (OLAP) и
приложениями интеллектуального анализа данных
Службы
Reporting
Services
включают в себя серверные и клиентские компоненты для
создания, управления и развертывания табличных,
матричных и графических отчетов, а также отчетов в
свободной форме. Службы Reporting Services являются
расширяемой платформой, которую можно использовать для
разработки приложений отчетов.
Службы
Integration
Services
представляют собой набор графических средств и
программируемых объектов для перемещения, копирования
и преобразования данных. Они также включают компонент
DQS для служб Службы Integration Services.
Master Data
Services
(MDS)
решение SQL Server по управлению основными данными.
MDS можно настроить для управления любой структурой
(товары, заказчики, счета). Поддерживаются иерархии,
детальная настройка безопасности, транзакции, управление
версиями данных и бизнес-правила, а также использование
надстройка для Excel для управления данными
Таблица 3. Средства управления SQL Server 2012
Средства управления Описание
SQL Server
Management Studio
интегрированная среда для доступа, настройки,
управления, администрирования и разработки всех
компонентов SQL Server. Среда Management Studio
позволяет разработчикам и администраторам,
обладающим различными уровнями навыков,
использовать SQL Server. Обозреватель Internet
10
Explorer 6 с пакетом обновления 1 или более поздней
версии необходим для любой установки среды Среда
Management Studio.
Диспетчер
конфигурации SQL
Server
обеспечивает базовые возможности управления
конфигурациями для служб, серверных протоколов,
клиентских протоколов и псевдонимов клиентов SQL
Server.
Приложение SQL
Server Profiler
Приложение Приложение SQL Server Profiler
предоставляет графический пользовательский
интерфейс для наблюдения за экземпляром
компонента Компонент Database Engine или служб
Analysis Services.
Помощник по
настройке ядра
СУБД (Компонент
Database Engine)
помогает создавать оптимальные наборы индексов,
индексированных представлений и секций.
Клиент Data Quality
простой и понятный графический пользовательский
интерфейс для подключения к серверу DQS и
выполнения операций очистки данных. Он также
позволяет централизованно отслеживать различные
действия, выполняемые во время операции очистки
данных. Для установки клиента Data Quality
необходим обозреватель Internet Explorer 6 с пакетом
обновления 1 (SP1) или более поздней версии.
SQL Server Data
Tools
содержат интегрированную среду разработки,
предназначенную для создания решений для
следующих компонентов бизнес-аналитики. Analysis
Services, Службы Reporting Services и Службы
Integration Services. (Ранее — среда Business
Intelligence Development Studio.) SSDT также
содержит компонент «проекты баз данных», который
предоставляет интегрированную среду для
разработчиков, предназначенную для выполнения
всех работ по разработке баз данных для любой
платформы SQL Server (как в основном помещении,
так и вне его) в пределах Visual Studio. Разработчикам
баз данных предлагается расширенный обозреватель
серверов, который является компонентом Visual
Studio, предназначенным для облегчения процессов
создания и изменения объектов баз данных и данных
в них, а также для выполнения запросов. Для
установки SQL Server Data Tools необходим браузер
Internet Explorer 6 с пакетом обновления 1 (SP1) или
более поздней версии.
11
Компоненты связи
Устанавливает компоненты для связи между
клиентами и серверами и сетевые библиотеки для DB-
библиотеки, ODBC и OLE DB.
1.2 Установка SQL-Server 2012
1. Запускаем установку SQL. Центр установки SQL Server. Выбираем в
левом меню пункт «Установка». Переходим в пункт «Новая установка
или добавление компонентов к существующей установке». Кликаем.
Запускается «Установка SQL Server 2012». Ключ продукта – вводим
ключ продукта, если он не вшит. Далее.
Рисунок 1 — Роль установки
2. Соглашаемся с лицензией. Далее.
3. Файлы поддержки установки программы. Видим в имени компонента
«Файлы поддержки программы» и кликаем «Установить».
12
4. Правила поддержки установки. Если всѐ сделали правильно,
единственное, на что можем получиться предупреждение, так это на
брандмауэр Windows, в котором не открыли соответствующие порты.
Далее.
Рисунок 2 — Результат проверки правил
5. На шаге Выбор компонентов (Feature Selection) выбираем Службы
компонентов Database Engine (сам SQL Server), Службы Reporting
Service в собственном режиме (для создания отчетов), Средства
управления основные (Management Tools- Basic) и Средства
управления полный набор, которые необходимы для работы с базой.
Каталоги общих компонентов оставляем по дефолту.
6. Правила установки. Смотрим сводку проверки (для этого достаточно
нажать «Показать подробности). Далее.
7. На шаге Настройка экземпляра (Instance Configuration), если устраивает
тип экземпляра и путь, можно оставить все по умолчанию. Вводим
идентификатор (можно оставить дефолт – по умолчанию), указываем
место для хранения корневого каталога экземпляра. В идеале место
хранения экземпляра должно быть на другом диске.
8. Требования к свободному месту на диске. Смотрим сводку на данные
по месту на диске для нашего компонента. Если всѐ в порядке, жмѐм
«Далее».
13
Рисунок 3 — Выбор устанавливаемых компонентов
Рисунок 4 — Настройка экземпляра
14
9. Конфигурация сервера. Вкладка «Учетные записи служб».
Можно поэкспериментировать с различными учетными записями для
служб SQL, но удобнее и целесообразнее создать специальную
учетную запись SQL-администратора c правами администратора
контроллера домена, нажать кнопку «Использовать одну и ту же
учетную запись для всех служб SQL Server» и выбрать еѐ. Помимо
этого требуется выставить тип запуска для Агента SQL Server с
«Вручную» на «Автоматически».
Рисунок 5 — Конфигурация сервера
Вкладка «Параметры сортировки». Пункт «Компонент Database
Engine», по умолчанию там стоит сортировка Cyrillic_General_CI_AS.
Нажимаем кнопку Настройка. Ставим галку на пункт «Параметры
сортировки SQL, используемые для обратной совместимости».
Выбираем сортировку SQL_Latin1_General_CP1_CI_AS, жмѐм OK.
Выполняем определение для служб Analysys Services. Жмѐм
«Настройка», выбираем сортировку Latin1_General_100, нажимаем ok,
получаем сортировку Latin1_General_100_CI_AS. Далее
10.Настройка компонента Database Engine. Вкладка «Планирование
учетных записей». Для простоты задаѐм только «Режим проверки
подлинности Windows» и оставляем ранее выбранного пользователя
(можем также добавить текущего).
15
Рисунок 5 — Настройка параметров сортировки служб SQL Server
Рисунок 5 — Настройка компонента Database Engine
16
Вкладка «Каталоги данных». Все каталоги будут записаны там, куда
указали на момент настройки экземпляра. Если есть насущная
необходимость, местоположение можно изменить.
Рисунок 6 — Настройка компонента Database Engine
Вкладка Filestream. Ставим галку на «Разрешить FILESTREAM при
доступе через Transact-SQL» и, когда станет активной, галку на
«Разрешить FILESTREAM при потоковом доступе файлового ввода-
вывода. Имя общего ресурса Windows можно оставить по умолчанию.
Далее.
11.Настройка служб Reporting Services. Так как это дефолтный экземпляр
и не планируем связывать его с Sharepoint, то оставляем пункт по
умолчанию, а именно «Установить конфигурацию по умолчанию для
работы в собственном режиме». Далее.
12.Отчет об ошибках. Выбираем, нужно ли нам отправлять отчет в
корпорацию Microsoft или нет. Далее.
13.Правила конфигурации установки. Смотрим сводку, пункт «Показать
подробности». Если всѐ в порядке, жмѐм «Далее».
14.Всѐ готово для установки. Проверяем все компоненты для установки.
Нажимаем «Установить».
15.Завершено. Установка прошла успешно. Нажимаем «Закрыть».
17
Рисунок 7 — Настройка компонента Database Engine (FILESTREAM)
Рисунок 8 — Основной режим служб Reporting Services
18
Рисунок 9 — Проверка компонентов установки
Рисунок 10 — Завершение процесса установки SQL Server 2012
19
Рисунок 10 — Завершение процесса установки. Документация и
ссылки
1.3 Конфигурирование SQL Server для сетевого доступа
1. Следует проверить и убедиться, что сервис MSSQLSERVER работает
не под Local Service / System, а под учетной записью администратора домена
в том случае, если планируется использовать SQL Server для работы с
доменными службами.
2. Брандмауэр на машинах SCCM и SQL пока выключен.
3. Включена поддержка сетевых библиотек (сетевые настройки – должна
быть выбрана доменная сеть), позволяющих подключиться к SQL Server
извне пределов данной конкретной машины.
Запускаем Диспечер конфигурации SQL Server. Слева становимся на Сетевая
конфигурация SQL Server \ Протокол для <имя экземпляра>. Для удаленного
доступа с других компов включаем поддержку протоколов Именованные
каналы и TCP/IP. Службы после этого должны быть перезапущены.
4. Настройка фиксированного порта.
В диспетчере конфигурации SQL Server раскрываем узел Сетевая
конфигурация SQL Server и щелкаем на экземпляре сервера, который надо
настроить. В правой области дважды щелкаем TCP/IP. В диалоговом окне
20
Свойства TCP/IP щелкаем закладку IP-адреса. Вводим доступный номер
порта в поле TCP-порт раздела IP All. Очищаем строку динамический порт.
Например, вводим стандартный 49172. Нажимаем кнопку ОК, чтобы закрыть
диалоговое окно, и кнопку ОК в предупреждении о необходимости
перезагрузки службы. Службы после этого действия будут перезапущены.
5. Добавляем учетную запись компьютера SCCM в группу
Администраторы на SQL сервере. Панель управления\ Администрирование\
Управление компьютером. В окне управление компьютером
6. Добавление в брандмауэр исключения для программы при помощи
элемента «Брандмауэр Windows» на панели управления Дополнительные
параметры Правила для входящих подключений правой кнопкой мыши
создать правило На вкладке Исключения элемента Брандмауэр Windows на
панели управления нажмите кнопку Добавить программу.
Перейдите к экземпляру SQL Server, которому необходимо открыть доступ
через брандмауэр, например к C:\Program Files\Microsoft SQL
Server\MSSQL11.<instance_name>\MSSQL\Binn, выберите sqlservr.exe, а
затем нажмите Открыть. Нажмите кнопку ОК.
Рисунок 11 — Sql Server Configuration Manager
21
Рисунок 12 — Управление компьютером
Рисунок 13 — Определение группы
22
Рисунок 14 — Мастер создания правила для нового подключения
Рисунок 15 — Создание входящего правила для программы
23
Рисунок 16 — Правило разрешает подключение
Рисунок 17 — Правило применено ко всем профилям
24
2. Средства администрирования SQL Server 2012
SQL Server Management Studio — утилита из Microsoft SQL Server
(начиная с версии 2005 и в более поздних версиях) для конфигурирования,
управления и администрирования всех компонентов Microsoft SQL Server.
Утилита включает скриптовый редактор и графическую программу, которая
работает с объектами и настройками сервера [1]. SQL Server Management
Studio — интегрированная среда для доступа, управления, настройки,
администрирования и разработки всех компонентов SQL Server. В SQL
Server Management Studio графические средства управления сочетаются с
набором полнофункциональных редакторов скриптов для доступа
разработчиков и администраторов к SQL Server. Среда SQL Server
Management Studio объединяет в едином интерфейсе возможности программ
Enterprise Manager, Query Analyzer и Analysis Manager, входивших в состав
более ранних выпусков SQL Server. Кроме того, среда SQL Server
Management Studio работает со всеми компонентами SQL Server, например,
со службами Reporting Services и Integration Services. Разработчики получают
знакомую среду, а администраторы баз данных — единую
полнофункциональную программу, объединяющую простые в использовании
графические средства и богатые возможности для создания сценариев.
Среда SQL Server Management Studio 2012 реализует следующие
основные возможности:
поддерживает большинство административных задач для SQL Server;
предоставляет единую интегрированную среду для управления SQL Server
Database Engine;
диалоговые окна для управления объектами в компоненте SQL Server
Database Engine, службах Analysis Services и службах Службы Reporting
Services, позволяют выполнять действия немедленно, используя редактор
кода или включать эти действия в скрипт для последующего выполнения;
немодальные диалоговые окна с настройкой размеров позволяют при
открытом диалоговом окне получать доступ к нескольким средствам;
общее диалоговое окно планирования позволяет выполнять действия с
управляемыми диалоговыми окнами в заданное время;
поддерживается экспорт и импорт регистрации сервера среды Среда SQL
Server Management Studio из одной среды Среда Management Studio в
другую;
доступно сохранение и печать XML-файлов плана выполнения и
взаимоблокировок, созданных приложением SQL Server Profiler, просмотр
их в любое время и отправка для анализа администратору;
доступны новые окна сообщений об ошибках и информационных
сообщений, предоставляющие гораздо больше сведений и позволяющие
отправлять в Microsoft комментарии о сообщениях, копировать сообщения
25
в буфер обмена и отправлять их по электронной почте в службу
поддержки;
в среде SQL Server Management Studio 2012 реализован встроенный веб-
браузер для быстрого обращения к библиотеке MSDN и/или получения
справки в сети Интернет;
встроенная справка от сообществ в Интернете;
доступен учебник по среде Среда SQL Server Management Studio,
облегчающий освоение новых возможностей, помогающий правильно и
продуктивно использовать эти возможности;
новый монитор активности с фильтрацией и автоматическим
обновлением;
встроенные интерфейсы компонента Database Mail.
добавлены новые возможности создания скриптов.
Компонент среды Среда SQL Server Management Studio «Редактор
кода» содержит встроенные редакторы скриптов для пользовательской
разработки скриптов Transact-SQL, многомерных выражений, расширений
интеллектуального анализа данных и XML для аналитики. Поддерживаются
возможности:
динамическая справка для немедленного доступа к данным во время
работы;
набор шаблонов с возможностью создания пользовательских шаблонов;
поддержка написания и изменения запросов и скриптов без подключения
к серверу;
поддержка запросов и скриптов SQLCMD;
новый интерфейс для просмотра результатов XML;
встроенная система управления версиями для проектов решений и
скриптов, поддерживающая хранение и обслуживание копий скриптов по
мере их разработки;
поддержка технологии Microsoft IntelliSense для инструкций многомерных
выражений.
Возможности обозревателя объектов. Компонент «Обозреватель
объектов» среды Среда SQL Server Management Studio — встроенное
средство просмотра и управления объектами на всех типах серверов.
Поддерживаются возможности:
фильтрация по полному имени, его части, по схеме или дате;
асинхронное заполнение объектов с возможностью фильтровать объекты
по их метаданным;
доступ к агентам SQL Server на серверах репликации в целях
администрирования.
26
2.1 Окна инструментальных средств в среде SQL Server Management
Studio
Для запуска SQL Server Management Studio следует нажать кнопку ПУСК
перейти к пункту SQL Server 2012 SQL Server Management Studio.
Рассмотрим рабочие окна интерфейса SQL Server Management Studio часто
используемые на практике (рисунок 18).
Рисунок 18 — Пункт меню ―Вид‖
Окно Обозреватель объектов («F8»)
Окно Обозреватель объектов – предназначено для выполнения
административных операций с серверами, БД и объектами баз данных: обзор
серверов, создание и размещение объектов, управление источниками данных,
просмотр журналов. Поддерживается фильтрация и сортировка объектов.
Доступ к этому средству осуществляется из меню Вид или с помощью
горячей клавиши («F8»).
27
Окно Подробности обозревателя объектов («F7»)
Окно Подробности обозревателя объектов – предназначено для
просмотра различной сводной информации по объектам, с которыми ведется
работа и т.д. Доступ к этому средству осуществляется из меню Вид или с
помощью горячей клавиши («F7»).
Окно Обозреватель решений («Ctrl»+«Alt»+«G»)
Окно Обозреватель решений — позволяет получать информацию о
хранении и организации скриптов и соответствующие сведенья о соединении
в проектах, называемых скриптами SQL Server. Несколько скриптов SQL
Server можно хранить в виде решений и по мере развития скриптов для
управления ими использовать систему управления версиями. Доступ к этому
средству осуществляется из меню Вид или с помощью комбинаций горячих
клавиш «Ctrl»+«Alt»+«G».
Окно Браузер (Обозреватель) шаблонов
Обозреватель шаблонов — позволяет создавать запросы на основе
существующих шаблонов. Можно создавать пользовательские запросы или
изменять существующие шаблоны в соответствии с текущими задачами.
Доступ к этому средству осуществляется из меню Вид. На рисунке 18
приведен пример шаблона ―Create database template‖.
Рисунок 19 — Шаблон ―Create database template‖
28
2.2 Способы создания скриптов в Management Studio
Как правило, скрипты создают, воспользовавшись одним из трех
вариантов.
Вариант 1. Автоматическая генерация скриптов из Обозревателя
объектов (рисунок 20). Например, для таблицы можно сгенерировать
скрипты для создания таблицы, удаления таблицы, выборки данных из
таблицы, скрипты для добавления новых данных в таблицу, а также для
изменения и удаления существующих записей.
Рисунок 20 — автоматическая генерация скрипта для таблицы
Вариант 2. Использование графического построителя запросов в SQL
Server Management Studio.
Обычно этот вариант используется для создания сложных запросов с
множеством соединений, условий и сортировок. Последовательность
действий:
29
Рисунок 21 — Выбираем пункт Создать запрос в редакторе
Рисунок 22 — Окно конструктора запросов
30
Рисунок 22 — Автоматическая генерация скриптов
1. Создаем пустой скрипт — нажимаем кнопка Новый запрос на панели
инструментов Стандартная
2. Из контекстного меню окна запроса выбрать пункт Создать запрос в
редакторе (рисунок 21).
3. В окне конструктора запросов выбираем нужные объекты и работаем с
ними (рисунок 22).
Следует отметить совершенно очевидный для опытных пользователей
момент, который может вызывать недоумение у неопытных пользователей.
В обозревателе объектов можно выбрать или выделить, например, базу
данных (БД) test и таблицу в этой базе данных Table (так как показано на
рисунке 21), однако, выделение не означает, что работаем с БД test. Если
запустили SQL Server Management Studio и подключились к SQL серверу, то
по умолчанию была выполнена команда Use Master; т.е. работа идет с
31
системной БД Master. Для выбора БД test следует выполнить команду Use
test;. Если этого не сделать, то окно конструктора запросов (рисунок 22) не
будет содержать таблиц для выбора.
Вариант 3. Создание скриптов для административных операций.
Для создания административного скрипта (например, резервное
копирование базы данных, создание учетной записи и т.д.) можно
воспользоваться кнопкой Скрипт, позволяющей автоматически создать
скрипт, в который будут подставлены введенные в полях формы на экране
значения (рисунок 23).
2.3 Диспетчер конфигурации SQL Server
Для запуска Диспетчера конфигурации SQL Server следует нажать
кнопку ПУСК перейти к пункту SQL Server 2012 Средства Настройки
Диспетчер конфигурации SQL Server. Database Engine и агент SQL
Server работают в операционной системе Microsoft Windows как службы.
Можно запускать, останавливать, приостанавливать, перезапускать и
настраивать конфигурацию служб с помощью диспетчера конфигурации SQL
Server, среды SQL Server Management Studio или из командной строки.
Диспетчер конфигурации SQL Server заменяет диспетчер служб SQL Server.
Используют диспетчер конфигурации SQL Server, чтобы настроить службы
SQL Server и сетевые соединения. Для создания и управления объектами
базы данных, настройки безопасности и создания запросов Transact-SQL
используют среду SQL Server Management Studio. С помощью диспетчера
конфигурации SQL Server нельзя настроить SQL Server, имеющий версию,
предшествующую Microsoft SQL Server 2005. Диспетчер конфигурации SQL
Server управляет службами, относящимися к SQL Server. Большинство этих
задач могут быть выполнены при помощи диалогового окна «Службы
Microsoft Windows», но следует отметить, что диспетчер конфигурации SQL
Server выполняет дополнительные операции с управляемыми им службами.
Например, такие как применение правильных разрешений при изменении
учетной записи службы. Использование обычного диалогового окна служб
Windows для настройки любых служб SQL Server может привести к
неправильной работе службы.
Используют диспетчер конфигурации SQL Server для выполнения
следующих задач со службами:
запуск, прекращение и временная остановка служб;
настройка служб на автоматический или ручной запуск, отключение
служб или изменение других настроек служб;
32
изменение паролей для учетных записей, используемых службами SQL
Server;
запуск SQL Server при помощи флагов трассировки (параметры
командной строки);
просмотр свойств служб.
Используют диспетчер конфигурации SQL Server для выполнения
следующих задач, относящихся к службам SQL Server на этом компьютере:
включение или отключение сетевого протокола SQL Server;
настройка сетевого протокола SQL Server.
На рисунке 23 показан фрагмент интерфейса графической панели Sql
Server Configuration Manager.
Рисунок 23 — Sql Server Configuration Manager
Первый контейнер ответственен за службы SQL Server 2012, второй —
за серверные сетевые библиотеки SQL Server, третий — за параметры работы
SQL Native Client.
2.4 Технологии SQL Server 2012
SQL Server включает несколько технологий управления данными и
анализа данных. В таблице 4 приведены ссылки на компоненты, задачи и
справочную документацию по каждой технологии.
Таблица 4. Основные технологии управления данными и анализа
данных SQL Server 2012
Изобра-
жение
Характеристика технологии
Компонент Database Engine представляет собой основную службу
для хранения, обработки и обеспечения безопасности данных;
обеспечивает управляемый доступ к ресурсам и быструю
33
обработку транзакций, что позволяет использовать его даже в
самых требовательных корпоративных приложениях обработки
данных. Кроме того, компонент Database Engine предоставляет
разносторонние средства поддержания высокого уровня
доступности.
Службы Data Quality Services (DQS) являются решением для
очистки данных на основе знаний. Службы DQS позволяют
создать базу знаний, а затем выполнить в ней исправление данных
и удаление дубликатов с помощью как автоматизированных, так и
интерактивных средств. Можно использовать службы справочных
данных на основе облачных вычислений, а также создавать
решения по управлению данными, где службы DQS будут
интегрированы со службами SQL Server Integration Services и
Master Data Services.
Службы Analysis Services — это платформа аналитических данных
и набор средств для бизнес-аналитики на личном уровне, уровне
рабочей группы и организации. Серверный и клиентский
конструкторы поддерживают стандартные решения OLAP, новые
решения для создания табличных моделей, а также
самостоятельную аналитику и совместную работу с помощью
PowerPivot, Excel и среды SharePoint Server. Службы Analysis
Services также включают интеллектуальный анализ данных,
который позволяет выявлять закономерности и связи на основе
больших объемов данных.
Службы Integration Services представляют собой платформу для
создания высокопроизводительных решений по интеграции
данных, в том числе пакетов для хранения данных,
обеспечивающих извлечение, преобразование и загрузку данных.
Master Data Services — это решение SQL Server для управления
основными данными. Решение, построенное на основе Master Data
Services, позволяет обеспечить правильность информации,
используемой для построения отчетов и выполнения анализа. С
помощью Master Data Services можно создать центральный
репозиторий основных данных и поддерживать запись этих
данных по мере их изменения, защищенную и доступную для
аудита.
Репликация представляет собой набор технологий копирования и
распространения данных и объектов баз данных между базами
данных, а также синхронизации баз данных для поддержания
согласованности. Благодаря репликации данные можно размещать
в различных местах, обеспечивая возможность доступа к ним
удаленных и мобильных пользователей по локальным или
глобальным сетям, посредством коммутируемых и беспроводных
34
соединений, а также через Интернет.
Службы Reporting Services предлагают средства создания
корпоративных отчетов с поддержкой веб-интерфейса, которые
позволяют включать в отчеты данные из различных источников,
публиковать отчеты в разнообразных форматах, а также
централизованно управлять безопасностью и подписками.
3. Утилиты и средства обслуживания SQL Server 2012
3.1 Специальный режим подключения Dedicated Administrator
Connection (DAC)
При запуске SQL Server 2012 резервирует ресурсы на одно подключение
пользователя. Если некорректно составленный запрос забрал все ресурсы,
администратор сможет подключиться к серверу, используя данный резерв
для выполнения необходимых административных операций, т.е. SQL Server
предоставляет специальное диагностическое соединение для
администраторов, когда стандартное соединение с сервером невозможно.
Данная возможность подключения к SQL Server 2012 называется DAC
(Dedicated Administrator Connection). Это диагностическое соединение
позволяет администратору получить доступ к SQL Server для выполнения
диагностических запросов и устранения проблем, даже когда SQL Server не
отвечает на стандартные запросы на соединение. Выделенное
административное соединение (DAC) поддерживает шифрование и другие
средства безопасности SQL Server. Выделенное административное
соединение позволяет только изменять контекст пользователя на другого
пользователя с правами администратора. SQL Server поддерживает
эффективную работу для соединения выделенного административного
соединения, но в критических ситуациях работа с использованием данного
соединения может оказаться невозможной и не принести желаемого
результата.
По умолчанию, соединение разрешено только из клиента, запущенного на
сервере. Сетевые подключения не разрешаются, пока они не настроены с
помощью хранимой процедуры sp_configure с параметром remote admin
connections.
Только члены роли SQL Server sysadmin могут подключаться с
использованием выделенного административного соединения. Выделенное
административное подключение доступно и поддерживается через
программу командной строки sqlcmd со специальным административным
ключом (-A).
Можно также подключиться, подставив префикс admin: к имени
экземпляра в формате sqlcmd -Sadmin: имя_экземпляра. Выделенное
административное соединение можно также запустить через редактор
35
запросов среды Среда SQL Server Management Studio, подключившись к
admin: имя_экземпляра.
Выделенное административное соединение, по рекомендуемым правилам
работы, должно использоваться системными администраторами только для
диагностики проблем на SQL сервере. Предполагается, что такое соединение
будет использоваться достаточно редко и только при особых
обстоятельствах, когда обычное подключение установить не удается. С
учетом сказанного на выделенное административное соединение
накладываются некоторые ограничения по сравнению с обычным. Чтобы
гарантировать, что для подключения есть доступные ресурсы, на один
экземпляр SQL Server разрешено только одно выделенное административное
соединение. Если выделенное административное соединение уже активно,
любой новый запрос на соединение через DAC отклоняется с ошибкой 17810.
Для экономии ресурсов SQL Server Express прослушивает порт выделенного
административного соединения только при запуске с флагом трассировки
7806.
Сначала выделенное административное соединение подключается к базе
данных по умолчанию, связанной с именем входа. После успешного
соединения можно подключиться к базе данных master. Если база данных по
умолчанию находится в режиме вне сети или недоступна по другой причине,
соединение вернет ошибку 4060. При этом соединение будет успешным, если
вместо базы данных по умолчанию подключиться к базе данных master с
помощью следующей команды: sqlcmd –A –d master .
Рекомендуется подключаться к базе данных master через выделенное
административное соединение, так как база данных master будет в любом
случае доступна, если запущен экземпляр компонента Компонент Database
Engine.
SQL Server запрещает выполнение параллельных запросов или команд
через выделенное административное соединение. Например, ошибка 3637
возникает при выполнении через выделенное административное соединение
следующих инструкций: RESTORE и BACKUP. Через выделенное
административное соединение гарантированно доступны только
ограниченные ресурсы. Не следует использовать выделенное
административное соединение для запуска ресурсоемких запросов или
запросов, которые могут блокироваться. Это позволяет обезопасить
выделенное административное соединение от осложнения любыми
существующими проблемами на сервере. Чтобы избежать сценариев,
которые могут приводить к блокировке, следует при возможности запускать
запросы, которые могут вызвать блокировку, на уровне изоляции
моментального снимка. В противном случае следует установить уровень
изоляции транзакций READ UNCOMMITTED и малое значение
LOCK_TIMEOUT, например 2000 миллисекунд. Можно использовать оба
способа одновременно для предотвращения блокировки сеанса выделенного
административного соединения. В зависимости от состояния SQL Server
36
сеанс выделенного административного соединения может быть заблокирован
с помощью кратковременной блокировки.
При необходимости можно попробовать завершить сеанс выделенного
административного соединения с помощью комбинации клавиш CTRL-C, но
успешное завершение не гарантируется. В таком случае единственным
возможным вариантом остается перезапуск SQL Server.
Чтобы гарантировать соединение и устранение неполадок через
выделенное административное соединение, SQL Server резервирует
ограниченные ресурсы для обработки команд, запущенных через него,
которых обычно хватает только для простых диагностических функций и
устранения некоторых неполадок. Теоретически для подключения с
использованием выделенного соединения можно запустить любую
инструкцию Transact-SQL, которая не должна исполняться параллельно через
выделенное административное соединение. Но корпорация Microsoft
рекомендует использовать ограниченный набор команд диагностики и
устранения неполадок: запрос динамических административных
представлений (DMV) для базовой диагностики, sys.dm_tran_locks для
состояния блокировки, sys.dm_os_memory_cache_counters для проверки
исправности кэша, sys.dm_exec_requests и sys.dm_exec_sessions для активных
сеансов и запросов. Рекомендуется не использовать динамические
административные представления DMV, потребляющие много ресурсов
(например, представление sys.dm_tran_version_store полностью
просматривает хранилище версий, что обычно приводит к резкому
увеличению объема ввода-вывода), то же самое относится к использованию
сложных соединений.
Для запроса представлений каталога можно использовать основные
команды DBCC, например DBCC FREEPROCCACHE, DBCC
FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS, а также DBCC
SQLPERF. Не следует выполнять такие ресурсоемкие команды, как DBCC
CHECKDB, DBCC DBREINDEX или DBCC SHRINKDATABASE.
Для снятия процесса можно использовать команду Transact-SQL KILL
номер_процесса. В зависимости от состояния SQL Server команда KILL не
всегда выполняется успешно. В этом случае единственным выходом остается
перезапуск SQL Server.
Рассмотрим несколько общих правил. С помощью запроса SELECT *
FROM sys.dm_exec_sessions WHERE session_id = номер следует убедиться,
что SPID был действительно отключен. Если строки не возвращаются,
значит, сеанс был остановлен. Если сеанс продолжается, проверяем с
помощью запроса SELECT * FROM sys.dm_os_tasks WHERE session_id =
номер наличие задач, назначенных для этого сеанса. Если задача
присутствует, то, скорее всего, сеанс закрывается в настоящий момент.
Закрытие сеанса может занять немало времени и завершиться неудачей. Если
в представлении sys.dm_os_tasks нет задач, связанных с данным сеансом, но
сеанс остается в sys.dm_exec_sessions после выполнения команды KILL, это
37
означает, что отсутствует доступный рабочий процессор. Чтобы освободить
рабочий поток, выбираем одну из текущих задач (задача в представлении
sys.dm_os_tasks со значением sessions_id <> NULL) и останавливаем
связанный с ней сеанс. Остановки одного сеанса может оказаться
недостаточно: возможно, потребуется остановить несколько сеансов.
Порт выделенного административного соединения. Для выделенных
административных соединений SQL Server прослушивает TCP-порт 1434,
если он доступен, или TCP-порт, динамически назначаемый при запуске
компонента Компонент Database Engine. Журнал ошибок содержит номер
порта, на котором ожидается выделенное административное соединение. По
умолчанию, выделенное административное соединение ожидается только на
местном порте. После настройки административного соединения средство
прослушивания выделенных административных соединений включается без
необходимости перезапуска SQL Server, и клиент может удаленно
подключиться к DAC. Средству прослушивания соединений DAC можно
разрешить прием удаленных соединений, даже если SQL Server не отвечает.
Для этого можно сначала подключиться к SQL Server локально посредством
выделенного административного соединения, а затем выполнить хранимую
процедуру sp_configure для приема удаленных соединений.
В кластерных конфигурациях выделенное административное соединение
по умолчанию выключено. Обеспечить доступ к удаленным соединениям
средству прослушивания DAC пользователи могут с помощью хранимой
процедуры sp_configure с параметром remote admin connection. Если SQL
Server не отвечает, а средство прослушивания выделенных
административных соединений отключено, то для подключения к DAC,
возможно, потребуется перезапустить SQL Server. Поэтому корпорация
Microsoft рекомендует включать параметр конфигурации remote admin
connections в кластеризованных системах.
Порт для выделенных административных соединений присваивается SQL
Server динамически во время запуска. При соединении с экземпляром по
умолчанию DAC стремится не использовать запрос протокола разрешения
SQL Server (SSRP) к службе браузера SQL Server. Сначала выполняется
попытка подключиться через TCP-порт 1434. В случае ошибки следует вызов
SSRP на получение порта. Если браузер SQL Server не ожидает запросов
SSRP, запрос на подключение возвращает ошибку. Обратившись к журналу
ошибок, можно найти номер порта, на котором ожидается выделенное
административное соединение. Если SQL Server настроен для приема
удаленных административных подключений, выделенное административное
соединение должно быть инициировано с явно указанным номером порта
командой: sqlcmd –S tcp: сервер,порт.
Журнал ошибок SQL Server приводит номер порта (по умолчанию равен
1434) для выделенного административного соединения. Если SQL Server
настроен для приема только локальных выделенных административных
соединений, можно подключаться через адаптер замыкания на себя с
38
использованием команды: sqlcmd –S 127.0.0.1,1434. Например, системный
администратор видит, что сервер SERVER не отвечает, и пытается
определить причину. Для этого активирует утилиту командной строки sqlcmd
и подключается к серверу SERVER с помощью ключа -A, чтобы обозначить
выделенное административное соединение: sqlcmd -S SERVER -U sa -P
Pa$$w0rd –A, подключившись, администратор может выполнять запросы для
определения проблемы и, возможно, завершения не отвечающих сеансов.
3.2 SQL Server Profiler
Приложение SQL Server Profiler предназначено для создания трассировок
и управления ими, а также для анализа и воспроизведения результатов
трассировок. События сохраняются в файле трассировки, который затем
может быть проанализирован или использован для воспроизведения
определенных последовательностей шагов для выявления возникших
проблем.
SQL Server Profiler — графический пользовательский интерфейс для
трассировки SQL, с помощью которого можно наблюдать за экземпляром
компонента Database Engine или службами Analysis Services. Приложение
позволяет собирать и сохранять данные о каждом событии в файле или в
таблице для последующего анализа. Например, с помощью приложения
можно следить за производственной средой, чтобы определить, какие
хранимые процедуры снижают производительность из-за того, что
выполняются слишком медленно. Приложение SQL Server Profiler
используется для следующих действий:
пошаговое выполнение проблемных запросов для поиска источника
проблемы;
выявление и диагностика медленно работающих запросов;
перехват серии инструкций Transact-SQL, ведущих к проблеме
(сохраненную трассировку затем можно использовать для моделирования
и диагностики проблемы на тестовом сервере);
контроль производительности SQL Server для настройки рабочих
нагрузок.
анализ счетчиков производительности для диагностики проблем
(Приложение SQL Server Profiler поддерживает также аудит действий,
выполняемых в экземплярах SQL Server. В ходе аудита ведется запись
действий, связанных с безопасностью, для дальнейшего просмотра
администратором безопасности).
Рассмотрим пример, как создать скрипт Transact-SQL для выполнения
трассировки (приложение SQL Server Profiler). Для создания скрипта
Transact-SQL для запуска трассировки открываем таблицу или файл
трассировки. В меню Файл выбираем команду Экспорт, затем Создать
определение трассировки и щелкаем позицию, соответствующую серверу,
39
который необходимо трассировать. В диалоговом окне Сохранить как
вводим имя файла скрипта и нажимаем кнопку Сохранить.
Рассмотрим еще один пример — создание трассировки. В меню Файл
выбираем пункт Создать трассировку, затем подключаемся к экземпляру
SQL Server. Появится диалоговое окно Свойства трассировки. Если выбран
параметр Начать трассировку немедленно после установления соединения,
диалоговое окно Свойства трассировки не появляется, сразу начинается
трассировка. Чтобы отключить этот параметр, выбираем в меню Сервис
пункт Параметры и снимаем флажок Начать трассировку немедленно
после установления соединения. В поле Имя трассировки вводим имя
трассировки. В списке Использовать шаблон выбираем шаблон, на котором
должна быть основана трассировка, или выбираем Пустой, если
использование шаблона не требуется. Для сохранения результатов
трассировки выбираем Сохранить в файл для сохранения результатов
трассировки в файл. Указываем значение для Установить максимальный
размер файла. Значение по умолчанию — 5 мегабайт. При необходимости
выбираем Включить операцию переключения на файл продолжения для
автоматического создания новых файлов при достижении максимального
размера файла. Можно дополнительно выбрать Сервер обрабатывает
данные трассировки, чтобы вместо приложения клиента данные
трассировки обрабатывала служба, выполняющая трассировку. При
обработке данных трассировки сервером исключена возможность пропуска
события даже в тяжелых условиях, но это приводит к снижению
производительности сервера. Выбираем Сохранить в таблицу для
сохранения результатов трассировки в таблицу базы данных. При
необходимости выбираем пункт Максимальное число строк и задаем
значение. Если результаты трассировки не сохраняются в файлы или
таблицы, их можно просмотреть, пока открыто приложение Приложение
SQL Server Profiler. Однако результаты трассировки будут потеряны после
того, как будет остановлена трассировка и закрыто приложение Приложение
SQL Server Profiler. Чтобы избежать потерю данных трассировки, выбираем
Сохранить в меню Файл для сохранения результатов перед закрытием SQL
Server Profiler. При необходимости устанавливаем флажок Включить время
остановки трассировки, укажите дату и время остановки трассировки.
Чтобы добавить или удалить события, столбцы данных или фильтры,
переходим на вкладку Выбор событий. Для запуска трассировку нажимаем
кнопку Выполнить.
3.3 Запуск и использование помощника по настройке ядра СУБД
(Database Engine Tuning Advisor)
Помощник по настройке ядра СУБД Microsoft (Database Engine Tuning
Advisor) анализирует базы данных и составляет рекомендации по
40
оптимизации производительности запросов. Помощник по настройке ядра
СУБД можно использовать для выбора и создания оптимальных наборов
индексов, индексированных представлений и секций таблицы. Позволяет
выполнять следующие задачи:
• устранение неполадок производительности конкретного проблемного
запроса;
• настройка большого набора запросов в одной или нескольких базах данных;
• выполнение исследовательского гипотетического анализа потенциальных
изменений физической структуры;
• управление местом в хранилище;
Для выполнения оптимизации производительности запросов следует
понимать структуру базы данных и запросов. Помощник по настройке ядра
СУБД помогает облегчить эту задачу. Например, с его помощью можно
выполнить анализ текущего кэша планов запросов или анализ рабочей
нагрузки запросов Transact-SQL, создаваемых пользователем. Более
опытным администраторам баз данных помощник предлагает мощный
механизм для анализа различных вариантов физической структуры.
Помощник по настройке ядра СУБД позволяет получать следующие
сведения и рекомендации:
• наилучшее сочетание индексов для баз данных, используя оптимизатор
запросов для анализа очередей рабочей нагрузки;
• выровненные либо не выровненные секции для баз данных, затрагиваемых
рабочей нагрузкой;
• индексированные представления для баз данных, затрагиваемых рабочей
нагрузкой;
• анализировать эффект от предложенных изменений, включая
использование индекса, распределение запросов между таблицами и
производительность запросов рабочей нагрузки;
• способы настройки базы данных для небольшого набора проблемных
запросов;
• обеспечивает возможность настройки рекомендаций путем указания
дополнительных параметров, например ограничений на место на диске;
• формирует отчеты о результатах применения рекомендаций для заданной
рабочей нагрузки.
Помощник по настройке ядра СУБД позволяет обработать типы
рабочих нагрузок запросов:
• запросы оперативной обработки транзакций (OLTP);
• запросы оперативной аналитической обработки (OLAP);
• смешанные запросы OLTP и OLAP;
• рабочие нагрузки с большим количеством запросов (запросов больше, чем
изменений данных);
• рабочие нагрузки с большим количеством обновлений (изменений данных
больше, чем запросов).
41
Графический интерфейс пользователя помощника по настройке ядра
СУБД имеет простой в использовании интерфейс, в котором можно указать
рабочую нагрузку и выбрать различные параметры настройки. Программа dta
— версия помощника по настройке ядра СУБД для командной строки. Dta
предназначена для использования функций помощника по настройке ядра
СУБД в приложениях и скриптах. Для работы с рабочей нагрузкой можно
использовать файл скрипта Transact-SQL, файл трассировки или таблицу
трассировки, которая содержит показательную рабочую нагрузку для
настраиваемых баз данных. Начиная с версии SQL Server 2012, можно
указать кэш планов в качестве рабочей нагрузки. Файл в формате XML
помощник по настройке ядра СУБД может использовать для настройки
рабочей нагрузки. Входной XML-файл поддерживает расширенные
параметры настройки, недоступные в графическом интерфейсе пользователя
или в программе dta.
Рисунок 24 — Помощник по настройке ядра СУБД
Помощник по настройке ядра СУБД высокоэффективный инструмент
обеспечения производительности SQL Server, но есть ряд ограничений,
которые следует учитывать при работе с ним:
42
• не может создавать или удалять уникальные индексы или индексы,
обеспечивающие ограничения PRIMARY KEY или UNIQUE;
• не позволяет проанализировать базу данных, которая работает в
однопользовательском режиме;
• если заданный размер места на диске превышает доступный, при
составлении рекомендаций помощник по настройке ядра СУБД использует
указанное значение. Однако, если попытаться применить рекомендации,
выполнив рекомендованный скрипт, не увеличив предварительно доступное
место на диске, может произойти ошибка. Максимальный объем места на
диске можно задать при помощи параметра -B программы dta или значения в
диалоговом окне Дополнительные параметры настройки;
• по соображениям безопасности помощник по настройке ядра СУБД не
может настраивать рабочую нагрузку в таблице трассировки, находящуюся
на удаленном сервере. Чтобы снять это ограничение, вместо таблицы
трассировки следует использовать файл трассировки или скопировать
таблицу трассировки на удаленный сервер.
• если при составлении рекомендаций указать ограничения, например на
максимальный размер места на диске (при помощи параметра -B или
диалогового окна Расширенные параметры настройки), помощнику по
настройке ядра СУБД, возможно, придется удалить некоторые
существующие индексы. В этом случае полученные рекомендации могут
привести к нежелательным последствиям, так как не будет корректными;
• Если задать ограничение на максимальное время настройки (при помощи
параметра -A программы dta или поля Предел времени настройки на
вкладке Параметры настройки), помощник настройки ядра СУБД может не
уложиться в отведенное время, если оно потребуется для предоставления
точных рекомендаций или анализ отчетов для какой-либо части рабочей
нагрузки займет дольше времени;
• помощник по настройке ядра СУБД может не предоставить рекомендации в
следующих ситуациях:
1) Таблица, которую необходимо настроить, содержит меньше 10 страниц
данных.
2) Рекомендованные индексы не обеспечивают достаточный прирост
производительности по сравнению с текущей физической структурой базы
данных.
3) Пользователь, который запускает помощника по настройке ядра СУБД, не
входит в состав роли базы данных db_owner или предопределенной роли
сервера sysadmin. Запросы в рабочей нагрузке анализируются в контексте
безопасности пользователя, который запустил помощника по настройке ядра
СУБД. Пользователь должен быть членом роли базы данных db_owner.
Помощник по настройке ядра СУБД сохраняет данные о сеансе
настройки и другие сведения в базе данных msdb. При изменении базы
данных msdb существует вероятность потерять данные сеанса настройки.
43
Чтобы этого избежать следует разработать и выполнять стратегию
резервного копирования для базы данных msdb.
Помощник по настройке ядра СУБД потребляет значительное
количество ресурсов процессора и памяти во время анализа. Рекомендуется
придерживаться следующих рекомендаций для предотвращения снижения
производительности сервера:
• заниматься настройкой баз данных, когда сервер не занят, так как
помощник по настройке ядра СУБД может повлиять на производительность
задач обслуживания;
• следует использовать функцию тестовый сервер или сервер приложений;
• указывать только те физические структуры базы данных, которые
необходимо проанализировать. Помощник по настройке ядра СУБД
предоставляет большое количество параметров, но используем только те из
них, которые необходимы.
Помощник по настройке ядра СУБД зависит от расширенной хранимой
процедуры xp_msver в части предоставления функциональных
возможностей. Расширенная хранимая процедура xp_msver включается по
умолчанию. Помощник по настройке ядра СУБД использует эту хранимую
процедуру, для определения количества процессоров и объема доступной
памяти на компьютере, на котором находится настраиваемая база данных.
Если процедура xp_msver недоступна, помощник по настройке ядра СУБД
предполагает использование характеристик оборудования того компьютера,
на котором он выполняется. Если характеристики оборудования
компьютера, на котором выполняется помощник по настройке ядра СУБД,
тоже недоступны, то предполагается, что на компьютере один процессор и
1024 МБ оперативной памяти. Эта зависимость влияет на рекомендации
секционирования, поскольку количество секций зависит от этих двух
значений (числа процессоров и объема доступной памяти). Зависимость
влияет на результаты, если для настройки производственного сервера
используется тестовый сервер. В этом случае помощник по настройке ядра
СУБД использует xp_msver для выборки свойств оборудования с
производственного сервера. После настройки рабочей нагрузки на тестовом
сервере помощник по настройке ядра СУБД использует свойства
оборудования для формирования рекомендации.
Основные задачи, за которые отвечает помощник по настройке ядра
СУБД, следующие:
• создание рабочей нагрузки путем задания кэша плана, путем создания
скрипта или путем формирования файла или таблицы трассировки;
• настройка базы данных с помощью графического пользовательского
интерфейса по настройке ядра СУБД;
• создание входных файлов XML-данных для настройки рабочих нагрузок;
• просмотр описания параметров пользовательского интерфейса помощника
по настройке ядра СУБД;
44
• просмотр результатов операции по настройке базы данных;
• выбор и применение рекомендаций по настройке;
• выполнение исследовательского анализа гипотез относительно рабочей
нагрузки;
• просмотр существующих сеансов настройки, клонирование сеансов на
основе уже существующих или изменение существующих рекомендаций по
настройке для дальнейшей оценки или применения;
• просмотр описания параметров пользовательского интерфейса помощника
по настройке ядра СУБД.
3.4 Программа (утилита) sqlcmd
sqlcmd — предназначена для выполнения скриптов Transact-SQL из
командной строки, может использоваться для выполнения команд TSQL,
скриптов или наборов скриптов из командной строки. sqlcmd может
выполняться в двух режимах: интерактивном или пакетном. При работе в
интерактивном режиме запускается sqlcmd, после чего в ответ на
приглашения sqlcmd вводятся команды. В пакетном режиме sqlcmd сразу
выполняет переданный ей запрос или файл скрипта. Программа sqlcmd
позволяет вводить инструкции Transact-SQL, системные процедуры и файлы
скриптов из командной строки в редактор запросов в режиме SQLCMD, в
файл скрипта Windows или шаг задания операционной системы (Cmd.exe)
задания агента SQL Server. Эта программа использует технологию ODBC для
выполнения пакетов Transact-SQL. Среда Среда SQL Server Management
Studio использует компонент Microsoft .NET Framework SqlClient для
выполнения в обычном режиме и в Редакторе запросов в режиме SQLCMD.
При вызове программы sqlcmd из командной строки sqlcmd использует
драйвер ODBC. Так как могут применяться различные параметры по
умолчанию, выполнение одного и того же запроса в среде Среда SQL Server
Management Studio в режиме SQLCMD и в программе sqlcmd может
проходить по-разному. В настоящее время в программе sqlcmd не требуется
указывать пробел между параметром командной строки и значением, но в
будущих выпусках пробел между параметром командной строки и значением
может потребоваться.
Синтаксис используемый sqlcmd:
-a packet_size
-A (dedicated administrator connection)
-b (terminate batch job if there is an error)
-c batch_terminator
-C (trust the server certificate)
-d db_name
-e (echo input)
45
-E (use trusted connection)
-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
-h rows_per_header
-H workstation_name
-i input_file
-I (enable quoted identifiers)
-k[1 | 2] (remove or replace control characters)
-K application_intent
-l login_timeout
-L[c] (list servers, optional clean output)
-m error_level
-M multisubnet_failover
-N (encrypt connection)
-o output_file
-p[1] (print statistics, optional colon format)
-P password
-q "cmdline query"
-Q "cmdline query" (and exit)
-r[0 | 1] (msgs to stderr)
-R (use client regional settings)
-s col_separator
-S [protocol:]server[\instance_name][,port]
-t query_timeout
-u (unicode output file)
-U login_id
-v var = "value"
-V error_severity_level
-w column_width
-W (remove trailing spaces)
-x (disable variable substitution)
-X[1] (disable commands, startup script, environment variables and optional exit)
-y variable_length_type_display_width
-Y fixed_length_type_display_width
-z new_password
-Z new_password (and exit)
46
-? (usage)
Более подробная информация о некоторых параметрах командной
строки:
-A — вход на SQL Server посредством выделенного административного
соединения, соединение предназначено для устранения неполадок на
сервере. Параметр работает только с теми серверами, которые поддерживают
выделенные административные соединения. Если соединение DAC
недоступно, программа sqlcmd выдает сообщение об ошибке и завершает
свою работу.
-C — с помощью этого переключателя клиент настраивает неявное доверие к
сертификату сервера без проверки. Этот параметр аналогичен параметру
ADO.NET TRUSTSERVERCERTIFICATE = true.
-d db_name — выдает инструкцию USE db_name при запуске программы
sqlcmd. Параметр устанавливает значение переменной скрипта
SQLCMDDBNAME программы sqlcmd, которая задает начальную базу
данных. По умолчанию свойство default-database соответствует имени входа.
Если база данных не существует, выдается сообщение об ошибке и
программа sqlcmd завершает свою работу.
-l login_timeout — задает время ожидания (в секундах) при подключении
программы sqlcmd через драйвер ODBC при попытке соединения с сервером.
Параметр устанавливает переменную скрипта SQLCMDLOGINTIMEOUT
программы sqlcmd. По умолчанию время ожидания входа для программы
sqlcmd составляет 8 секунд. Время ожидания входа должно быть числом в
диапазоне от 0 до 65 534. Если указанное значение не является числом или
выходит за пределы указанного диапазона, программа sqlcmd выдает
сообщение об ошибке. Значение 0 задает неограниченное время ожидания.
-E — использует для соединения с SQL Server вместо имени пользователя и
пароля доверительное соединение. По умолчанию, если параметр -E не
указан, программа sqlcmd использует доверительное соединение. Параметр -
E не использует имя пользователя и пароль, указанные в переменных среды
SQLCMDPASSWORD и др. Если параметр -E используется в сочетании с
параметром -U или -P, то выдается сообщение об ошибке.
-H workstation_name — определяет имя рабочей станции. Параметр
устанавливает переменную скрипта SQLCMDWORKSTATION программы
sqlcmd. Имя рабочей станции заносится в столбец hostname представления
каталога sys.processes, и может быть возвращено с помощью хранимой
процедуры sp_who. Если этот параметр не указан, используется текущее имя
компьютера. Имя может использоваться для идентификации сеансов работы
программы sqlcmd.
-K application_intent — объявляет тип рабочей нагрузки приложения при
соединении с сервером. Единственным поддерживаемым в данное время
47
значением является ReadOnly. Если параметр -K не указан, то программа
sqlcmd не будет поддерживать возможность подключения к вторичной
реплике в группе доступности AlwaysOn.
-M multisubnet_failover — следует всегда указывать параметр -M при
соединении с прослушивателем группы доступности SQL Server 2012 или
экземпляром отказоустойчивого кластера SQL Server 2012. -M обеспечивает
более быстрое обнаружение активного (в данный момент) сервера и
соединение с ним. Если параметр –M не указан, то режим -M отключен.
-N — с помощью этого переключателя клиент запрашивает шифрованное
соединение.
-P password — пароль, задаваемый пользователем. Пароли учитывают
регистр. Если указан параметр -U, а параметр -P отсутствует, и не задана
переменная среды SQLCMDPASSWORD, программа sqlcmd запрашивает
пароль у пользователя. Если параметр -P указывается в конце командной
строки без указания пароля, программа sqlcmd использует пароль по
умолчанию (NULL). Запрос на ввод пароля выводится на консоль
следующим образом: Password: . Вводимые пользователем данные на экране
не отображаются, то есть символы не выводятся и курсор остается на месте.
Переменная среды SQLCMDPASSWORD позволяет задать значение пароля
по умолчанию для текущего сеанса. Таким образом, нет необходимости
указывать пароль в пакетных файлах. В примере сначала из командной
строки устанавливается переменная SQLCMDPASSWORD, а затем
производится вызов программы sqlcmd. В командной строке вводим: SET
SQLCMDPASSWORD= Pa$$w0rd. Пароль будет отображаться на мониторе
компьютера. В командной строке введим: sqlcmd. Если обнаружено неверное
сочетание имени пользователя и пароля, выдается сообщение об ошибке.
Переменная среды OSQLPASSWORD для версии SQL Server 2012 была
сохранена в целях обратной совместимости. Переменная среды
SQLCMDPASSWORD имеет больший приоритет, чем переменная среды
OSQLPASSWORD. Это означает, что программы sqlcmd и osql могут
использоваться одновременно, не мешая друг другу, f скрипты прежних
версий не перестанут работать. Если параметр -P указан одновременно с
параметром -E, то выдается сообщение об ошибке. Если после параметра -P
указано более одного аргумента, то выдается сообщение об ошибке и
программа завершает свою работу.
-S [protocol:]server[\instance_name][,port] — указывает экземпляр SQL Server,
к которому выполняется подключение. Устанавливает переменную скрипта
SQLCMDSERVER программы sqlcmd. Указываем server_name для
подключения к экземпляру SQL Server по умолчанию на этом сервере.
Указываем server_name [ \instance_name ], чтобы соединиться с именованным
экземпляром SQL Server на этом сервере. Если сервер не указан, программа
sqlcmd выполняет подключение к экземпляру SQL Server по умолчанию на
локальном компьютере. Параметр обязателен при запуске программы sqlcmd
48
с удаленного компьютера в сети. Параметр protocol может иметь значение
tcp (TCP/IP), lpc (общая память) или np (именованные каналы). Если
значение server_name [ \instance_name ] при запуске программы sqlcmd не
указано, SQL Server проверяет наличие переменной среды SQLCMDSERVER
и, если она задана, использует ее значение. Переменная среды OSQLSERVER
была сохранена в целях обратной совместимости. Переменная среды
SQLCMDSERVER имеет больший приоритет, чем переменная среды
OSQLSERVER: программы sqlcmd и osql могут применяться одновременно,
не мешая друг другу, и скрипты прежних версий не перестанут работать.
-U login_id — идентификатор входа пользователя. В целях обратной
совместимости доступна переменная среды OSQLUSER. Переменная среды
SQLCMDUSER имеет больший приоритет, чем OSQLUSER Если не указаны
ни параметр -U, ни параметр -P, программа sqlcmd пытается подключиться с
помощью режима проверки подлинности Microsoft Windows. При этом
используется учетная запись пользователя Windows, который запустил
программу sqlcmd. Если параметры -U и -E указаны одновременно, выдается
сообщение об ошибке. Если после параметра –U указано более одного
аргумента, то выдается сообщение об ошибке и программа завершает свою
работу.
4. Базы данных — системные и прикладных пользователей
4.1 Служебные базы данных, базы данных пользователей и учебные
базы данных SQL Server 2012
Базы данных, с которыми работает SQL Server 2012, точно так же, как и
в предыдущих версиях SQL Server, можно разделить на две группы. В
первую группу входят служебные базы данных необходимые для
обеспечения функционирования самого SQL Server, вторая группа – базы
данных пользователей, к которой можно отнести и учебные базы данных,
подготовленные фирмой Microsoft для того, чтобы люди могли быстрее
освоить SQL Server 2012, получить практические навыки работы с ним.
Создать небольшую базу данных из нескольких таблиц и заполнить их
можно за относительно небольшое время. Однако некоторые возможности по
выбору информации из базы данных, возможности связанные с
обслуживанием базы данных и т.д. – можно в полной мере изучить, только
работая с базой данных сложной структуры, состоящей из десятков таблиц,
относящихся к разным схемам и физически реализованной группой из
нескольких файлов. С сайта CodePlex (http://www.codeplex.com) можно
бесплатно загрузить различные примеры для обучения работе с разными
программными средствами, в том числе базы данных AdventureWorks,
49
предлагаемые для разных версий SQL Server. Например, по ссылке
http://advworks2012sssrs.codeplex.com/ можно загрузить AdventureWorks 2012
SSRS Samples.
Рассмотрим основные служебные базы данных (таблица __).
Таблица __ Служебные БД SQL Server 2012
Системная база
данных
Назначение БД
master
база данных отвечает за хранение всех данных системного
уровня для экземпляра SQL Server
msdb
используется агентом SQL Server для планирования
предупреждений и задач
model используется в качестве шаблона для всех баз данных,
создаваемых в экземпляре SQL Server. Изменение размера,
параметров сортировки, модели восстановления и других
параметров базы данных model приводит к изменению
соответствующих параметров всех баз данных, создаваемых
после изменения
resource содержит системные объекты, которые входят в состав SQL
Server; системные объекты физически хранятся в базе
данных resource, но логически отображаются в схеме sys
любой базы данных
tempdb рабочее пространство для временных объектов или
взаимодействия результирующих наборов
Следует обратить внимание на то, как осуществляются изменения
данных в системных базах данных, в отличие от баз данных пользователей.
SQL Server не поддерживает прямое обновление пользователями данных в
таких системных объектах, как таблицы, системные хранимые процедуры,
представления каталогов. Вместо этого SQL Server предоставляет
административные средства, позволяющие пользователям управлять всей
системой, пользователями и объектами базы данных. Отметим некоторые из
них:
• Административные программы, например SQL Server Management Studio;
• SQL-SMO API — программный интерфейс позволяет программистам
включать любые административные возможности SQL Server в
разрабатываемые приложения;
• Хранимые процедуры и скрипты Transact-SQL — можно использовать
системные хранимые процедуры и DDL-инструкции Transact-SQL.
Названные средства защищают приложения от изменений системных
объектов. Например, для поддержки новых возможностей, добавленных в
новые версии SQL Server, следует изменить системные таблицы этих версий
SQL Server. Приложения, выполняющие инструкции SELECT, которые
50
ссылаются непосредственно на системные таблицы, часто зависят от старого
формата таблиц, поэтому обновление сайтов до новой версии SQL Server
невозможно, пока для них не будут переписаны приложения, выполняющие
выборку из системных таблиц. SQL Server учитывает существующие
системные хранимые процедуры, DDL и опубликованные интерфейсы SQL
— SMO и работает, поддерживая обратную совместимость интерфейсов. В
SQL Server не поддерживаются триггеры, заданные для системных таблиц,
поскольку они могут влиять на работу системы.
База данных master — основная системная база данных, следует
помнить, что при работе с ней не поддерживаются операции:
• добавление файлов или файловых групп;
• изменение параметров сортировки; параметрами сортировки по умолчанию
являются параметры сортировки сервера;
• изменение владельца базы данных — владельцем master является dbo.
• создание полнотекстового каталога или полнотекстового индекса;
• создание триггеров для системных таблиц базы данных;
• удаление базы данных;
• удаление пользователя guest из базы данных;
• включение системы отслеживания измененных данных;
• участие в зеркальном отображении базы данных;
•удаление первичной файловой группы, первичного файла данных или файла
журнала;
• переименование базы данных или первичной файловой группы;
• перевод базы данных в режим OFFLINE;
•перевод базы данных или первичной файловой группы в режим
READ_ONLY.
В документации, опубликованной Microsoft по работе с SQL Server
2012, для работы с базой данных master приведены следующие
рекомендации:
• всегда иметь в наличии актуальную резервную копию базы данных master;
• после выполнения следующих операций, следует по возможности
максимально быстро создать резервную копию базы данных master:
◦ создание, изменение или удаление базы данных;
◦ изменение значений параметров конфигурации сервера или базы
данных;
◦ изменение или удаление учетных записей входа;
• не следует создавать в базе данных master пользовательские объекты, так
как это приводит к тому, что придется чаще создавать резервные копии базы
данных master.
• не следует устанавливать в базе данных master параметр TRUSTWORTHY в
значение ON.
51
Если структура база данных master и/или хранящиеся в ней данные
были повреждены и непригодны к использованию, то восстановить
работоспособность базы данных master можно следующими способами:
• Восстановить базу данных master на основе актуальной резервной копии —
если экземпляр сервера удалось запустить, базу данных master можно
восстановить из полной резервной копии;
• Создать базу данных master с нуля — если серьезное повреждение базы
данных master не позволяет запустить экземпляр SQL Server, базу данных
master нужно перестроить.
Следует помнить, что при создании базы данных master заново все
системные базы данных также создаются заново. База данных master
содержит всю системную информацию СУБД SQL Server, в том числе общие
для всего экземпляра метаданные, такие как сведения об учетных записях
входа, конечных точках и связанных серверах, а также параметры
конфигурации системы. В SQL Server 2012 системные объекты не хранятся в
базе данных master; они хранятся в базе данных ресурсов. В базе данных
master регистрируются все остальные базы данных и хранится информация о
расположении их файлов. В базе данных master SQL Server хранит сведения
об инициализации, поэтому если база данных master недоступна, запустить
SQL Server невозможно.
Физические свойства базы данных master — исходные
конфигурационные значения файлов данных и журнала базы данных master
приведены в таблице ____. Размеры файлов могут изменяться в зависимости
от выпуска SQL Server, расположение базы данных Resource зависит от
расположения базы данных master. При перемещении базы данных master
базу данных Resource необходимо переместить в то же место. Чтобы
просмотреть текущие настройки параметров базы данных master, можно
использовать представление каталога sys.databases.
Таблица __. Характеристики базы данных master
Файл Логическое имя Физическое имя Увеличение размера
файлов
Первичные
данные
master master.mdf
Автоувеличение на 10 %
до заполнения диска.
Журнал mastlog mastlog.ldf
Автоувеличение на 10 %
до максимального
размера в 2 ТБ.
52
4.2 Физическая структура базы данных
Каждая БД SQL Server 2312, позволяющая проводить операции чтения
и записи, содержит минимум два файла – это файл данных и файл журнала
транзакций. Файлы данных отвечают за хранение данных пользователей базы
данных. В файлы журналов транзакций (в частном случае используется один
файл) выполняется последовательная запись изменений, которые вносятся в
базу данных. Следует заметить, что если БД используется только для чтения,
то файл журнала транзакций не требуется. Если известно, что база данных,
которая ранее использовалась для чтения и записи будет в будущем
использоваться только для чтения, то следует перевести базу данных в режим
только для чтения. Это повысит быстродействие при выполнении операций с
этой БД, т.к. если база данных находится в режиме доступном для чтения и
записи, то выполняются при обращении к БД дополнительные проверки для
обеспечения корректной записи информации в БД, даже если запись
непосредственно в БД не производится. Главный (основной, первый) файл
базы данных имеет расширение mdf, дополнительные (второй и далее) файлы
данных имеют расширение ndf. БД может работать с одним или более
файлом журнала транзакций, все эти файлы имеют расширение .ldf. С целью
повышения производительности и реализации отказоустойчивости
рекомендуется размещать файлы журналов транзакций и файлы данных на
разных физических дисках.
Для файлов БД, в которые выполняется запись, можно настроить
режим авторасширения (рисунок __).
Рисунок 25 — Задание свойств авторасширения для файлов БД
53
При определении размеров файлов для журналов транзакций следует
учитывать следующие режим работы БД и то, насколько часто выполняется
резервное копирование, какой режим восстановления настроен для БД –
модель восстановления: Полная, С неполным восстановлением, Простая.
Для баз данных работающих в режиме OLTP для журналов транзакций
рекомендуется выделять размер от 10% до 25% от общего размера файлов
БД, для БД работающих в режиме OLAP можно использовать журнал
транзакций минимального размера.
SQL Server 2012 резервирует для использования дисковое пространство
в экстентах. Экстент – блок, размером 64 КБ, для физического размещения
данных и индексов, состоящий из 8 последовательно расположенных
страниц, размер каждой страницы 8 КБ. Экстенты классифицируется по двум
типам: однородные, которые принадлежат одному объекту и смешанные,
которые могут принадлежать не более чем восьми различным объектам, так
как экстент состоит из 8 страниц — объекту можно выделить не менее одной
страницы. Страница — минимальный объем дискового пространства,
выделяемого SQL Server 2012 для хранения данных. Страница занимает 8 КБ,
каждая строка может содержать данные объемом не более 8060 байт.
Порядок размещения данных зависит от того, определен ли для таблицы
кластерный индекс. В начале каждой страницы размешается заголовок,
занимающий 96 байт, для хранения системной информация.
Файловая группа — применяется для организации файлов данных в
SQL Server 2012. По умолчанию для любой базы данных, используемой SQL
Server 2012, создается файловая группа PRIMARY, и все создаваемые
файлы данных относятся к ней. В случае необходимости можно создать
дополнительные файловые группы, которые могут создаваться по
следующим причинам:
• для реализации отдельного хранения системных и пользовательских
данных, оперативных и архивных данных;
• для обеспечения ручного распределения нагрузки в дисковой подсистеме;
• для выполнения ручного распараллеливания запросов в дисковой
подсистеме;
• для оптимизации работы в многопроцессорных системах, так как при
обращении к каждой файловой группе открывается новый поток
операционной системы.
Создать новые файловые группы можно:
• при помощи графического интерфейса SQL Server Management Studio;
• используя команды CREATE DATABASE или ALTER DATABASE.
Файловую группу можно сделать файловой группой по умолчанию,
тогда все новые таблицы и индексы в базе данных будут при создании по
умолчанию помещаться в эту файловую группу.
В документации к SQL Server 2012 приведены подробные примеры
создания файлов БД и файловых групп. Например, к базе данных
54
AdventureWorks2012 можно добавить файл данных размером 5 МБ выполнив
следующие команды Transact-SQL.
USE master;
GO
ALTER DATABASE AdventureWorks2012
ADD FILE
(
NAME = Test1dat2,
FILENAME = 'C:\Program Files\Microsoft SQL
Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\t1dat2.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
);
GO
Пример добавления файловой группы с двумя файлами к базе данных
AdventureWorks2012: создается файловая группа Test1FG1, добавляется два
файла по 5 МБ в эту файловую группу:
USE master;
GO
ALTER DATABASE AdventureWorks2012
ADD FILEGROUP Test1FG1;
GO
ALTER DATABASE AdventureWorks2012
ADD FILE
( NAME = test1dat3,
FILENAME = 'C:\Program Files\Microsoft SQL
Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\t1dat3.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
), (
NAME = test1dat4,
FILENAME = 'C:\Program Files\Microsoft SQL
Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\t1dat4.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
TO FILEGROUP Test1FG1;
GO
4.3 Создание пользовательских баз данных
55
Базы данных, используемые для хранения и обработки информации
пользователей, можно создать несколькими способами. Для создания базы
данных можно использовать SQL Server Management Studio или написать
скрипт, который создаст базу данных.
Наиболее простой способ создания БД следующий. В SQL Server
Management выбираем пункт меню Создать запрос (или используем
комбинацию горячих клавиш Ctrl + N). Для создания БД test1 набираем
следующий текст запроса T-SQL:
use Master;
create database test1;
GO
После выполнения запроса (нажимаем Выполнить или клавишу F5)
будет создана БД test1.
Рисунок 26 — Создана БД test1
БД test1 будет успешно создана в результате выполнения команды
create database test1; , если у пользователя есть необходимый уровень
полномочий для создания БД (возможны и некоторые другие не часто
встречающиеся причины, по которым создание базы данных может
завершиться неудачей). Если посмотреть структуру вновь созданной БД test1,
то можно увидеть, что в БД находится достаточно большое число объектов,
например, были созданы пользователи БД, роли БД, схемы, системные
представления и т.д. База данных создается на основе БД model, которая
используется в качестве шаблона создаваемой БД. Если часто создаются базы
данных, в которых используются одни и те же объекты пользователей, то
можно внести их в БД model и будут присутствовать во всех вновь
создаваемых базах данных.
База данных model используется в качестве шаблона для всех баз
данных, созданных для экземпляра SQL Server, в том числе и для служебной
БД tempdb. Поскольку база данных tempdb создается каждый раз при запуске
SQL Server, то БД model должна всегда существовать в системе SQL Server.
56
Все содержимое базы данных model, включая параметры базы данных,
копируется в новую базу данных. Некоторые параметры базы данных model
используются также при создании новой базы данных tempdb во время
загрузки, поэтому наличие базы данных model в системе SQL Server
обязательно. Вновь созданные пользовательские базы данных используют ту
же модель восстановления, что и база данных model.
При выполнении инструкции CREATE DATABASE первая часть базы
данных создается путем копирования в нее содержимого базы данных model.
Оставшаяся часть новой базы данных заполняется пустыми страницами. При
изменении базы данных model все созданные после этого базы данных
унаследуют эти изменения. Например, можно установить разрешения или
параметры базы данных или добавить такие объекты, как таблицы, функции
или хранимые процедуры.
Операции, которые не могут быть выполнены для базы данных model:
• Добавление файлов или файловых групп.
• Изменение параметров сортировки. Параметрами сортировки по
умолчанию являются параметры сортировки сервера.
• Изменение владельца базы данных. Владельцем базы данных model
является dbo.
• Удаление базы данных.
• Удаление пользователя guest из базы данных.
• Включение системы отслеживания измененных данных.
• Участие в зеркальном отображении базы данных.
• Удаление первичной файловой группы, первичного файла данных или
файла журнала.
• Переименование базы данных или первичной файловой группы.
• Перевод базы данных в режим OFFLINE.
• Перевод первичной файловой группы в режим READ_ONLY.
• Создание процедур, представлений или триггеров с помощью параметра
WITH ENCRYPTION. Ключ шифрования привязывается к базе данных, в
которой был создан объект. Зашифрованные объекты, созданные в базе
данных model, могут быть использованы только в базе данных model.
Второй способ создания БД – воспользоваться графическим
интерфейсом SQL Server Management Studio (рисунок 27). Выбираем
позицию Создать базу данных, после чего указываем имя базы данных
(рисунок 28, позиция 1) и, при желании, характеристики создаваемой БД,
нажимаем кнопку ОК (рисунок 28, позиция 1). Следует заметить, что
графический интерфейс облегчает операцию создания БД, но использование
запроса T-SQL может быть удобнее, если требуется сразу не только создать
БД, но и выполнить некоторые действия с ней. Последовательность действий
может быть реализована с помощью набора выполняемых инструкций на T-
SQL.
57
Рисунок 27 — В обозревателе объектов выбрали пункт ―Создать базу
данных…‖
Рисунок 28 — Создание базы данных
58
Третий широко используемый способ создания БД – с использованием
графического интерфейса (рисунок 28, позиция 3) SQL Server Management
Studio формируется скрипт на T-SQL, который затем редактируется вручную.
Этот более быстрое решение, чем писать инструкции T-SQL вручную.
Пример сформированного скрипта SQL Server Management Studio для
вновь создаваемой БД test123:
CREATE DATABASE [test123]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'test123', FILENAME = N'C:\Program Files\Microsoft SQL
Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test123.mdf' , SIZE =
5120KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'test123_log', FILENAME = N'C:\Program Files\Microsoft
SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test123_log.ldf' , SIZE
= 1024KB , FILEGROWTH = 10%)
GO
ALTER DATABASE [test123] SET COMPATIBILITY_LEVEL = 110
GO
ALTER DATABASE [test123] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [test123] SET ANSI_NULLS OFF
GO
ALTER DATABASE [test123] SET ANSI_PADDING OFF
GO
ALTER DATABASE [test123] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [test123] SET ARITHABORT OFF
GO
ALTER DATABASE [test123] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [test123] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [test123] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [test123] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [test123] SET CURSOR_CLOSE_ON_COMMIT
OFF
GO
ALTER DATABASE [test123] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [test123] SET CONCAT_NULL_YIELDS_NULL
OFF
59
GO
ALTER DATABASE [test123] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [test123] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [test123] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [test123] SET DISABLE_BROKER
GO
ALTER DATABASE [test123] SET
AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [test123] SET
DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [test123] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [test123] SET READ_COMMITTED_SNAPSHOT
OFF
GO
ALTER DATABASE [test123] SET READ_WRITE
GO
ALTER DATABASE [test123] SET RECOVERY FULL
GO
ALTER DATABASE [test123] SET MULTI_USER
GO
ALTER DATABASE [test123] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [test123] SET TARGET_RECOVERY_TIME = 0
SECONDS
GO
USE [test123]
GO
IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE
is_default=1 AND name = N'PRIMARY') ALTER DATABASE [test123]
MODIFY FILEGROUP [PRIMARY] DEFAULT
GO
Следует отметить, что альтернативное решение полностью ручному
набору команд с нуля – воспользоваться шаблоном, используя ―Браузер
шаблонов‖ (шаблон – Create Database):
-- =============================================
-- Create database template
-- =============================================
60
USE master
GO
-- Drop the database if it already exists
IF EXISTS (
SELECT name
FROM sys.databases
WHERE name = N'<Database_Name, sysname,
Database_Name>'
)
DROP DATABASE <Database_Name, sysname, Database_Name>
GO
CREATE DATABASE <Database_Name, sysname, Database_Name>
GO
Пример заготовки скрипта для создания базы данных, состоящей из
нескольких файлов, с помощью Transact-SQL:
CREATE DATABASE Логическое_имя_БД
( NAME = Логическое_имя_файла_данных ,
FILENAME = физическое_имя_файла_данных ,
SIZE = минимальный_размер ,
MAXSIZE = максимальный_размер ,
FILEGROWTH = величина_прироста ) ,
LOG ON
( NAME = Логическое_имя_файла_журнала ,
FILENAME = физическое_имя_файла_журнала,
SIZE = минимальный_размер ,
MAXSIZE = максимальный_размер ,
FILEGROWTH = величина_прироста );
4.4 Перенос базы данных
Выполнить перенос БД с одного места в другое можно разными
способами, например, выполнив восстановление БД из резервной копии;
осуществив подключение файлов существующей базы данных; используя
мастера копирования баз данных и т.д.
Рассмотрим процесс копирования файлов БД на другой сервер. Следует
заметить, что если SQL Server работает с БД (база данных находится в
оперативном режиме), то скопировать файлы, используя средства
операционной системы Windows невозможно, так как по соображениям
обеспечения целостности БД, SQL Server работает с файлами БД в
монопольном режиме. Для того, чтобы копирование было возможно следует
61
или выполнить отключение БД или перевести ее в автономный режим
работы. По сути автономный режим работы – это тоже самое отключение БД,
но SQL Server помнит, где расположены файлы БД и отображает БД в списке
БД – такая БД помечена при просмотре в обозревателе объектов кругом с
красной стрелкой. Рядом с именем БД стоит (Вне сети).
Рисунок 29 — БД test1 в автономном режиме работы
Подключение файлов существующей базы данных
1. Отключить БД от сервера можно одним из трех способов:
• в контекстном меню для БД в Обозревателе объектов выбираем пункт
Задачи и в нем команду Отсоединить;
• выполняем команду ALTER DATABASE. Например, ALTER DATABASE
test SET OFFLINE для БД test;
• перевести базу данных в автономный режим, воспользовавшись пунктом
Задачи командой Перевести в автономный режим в Management Studio. БД
будет помечена в окне Обозревателя объектов специальной меткой в виде
красного круга со стрелкой.
2. Копируем файлы БД (файлы данных и журнала транзакций) в нужное
место. Если журнал транзакций был утрачен, то журнал транзакций можно
сгенерировать заново, используя команду CREATE DATABASE ...
FOR_ATTACH_REBUILD_LOG.
3. Возвращаем исходную БД в рабочее состояние:
• если БД была отсоединена — воспользуемся командой
Присоединить из контекстного меню для контейнера Базы данных;
• если БД была переведена в автономный режим — используем
ALTER DATABASE test SET ONLINE — для базы данных test.
4. Выполняем операции присоединения БД к новому серверу:
• В контекстном меню контейнера Базы данных в Обозревателе
объектов выбрать команду Присоединить… . В окне Присоединение баз
данных… при помощи кнопки Добавить… выбрать файл базы данных,
которую необходимо подсоединить, и нажимаем OK. БД можно
присоединить под новым именем, указав новое имя БД в соответствующей
позиции.
62
5. Обслуживание баз данных администратором SQL Server 2012
5.1 Режим восстановления базы данных
Параметр Модели восстановления определяет, в каком режиме
восстановления будет работать база. Операции резервного копирования и
восстановления SQL Server выполняются в контексте модели восстановления
базы данных. Модели восстановления предназначены для управления
обслуживанием журналов транзакций. Модель восстановления — свойство
базы данных, которое управляет процессом регистрации транзакций,
определяет, требуется ли для журнала транзакций резервное копирование, а
также определяет, какие типы операций восстановления доступны. Обычно в
базе данных используется модель полного восстановления или простая
модель восстановления. База данных в любой момент может быть
переключена на другую модель восстановления.
Можно установить один из трех режимов восстановления базы данных:
• Полная — максимальное число операций записывается в журнал
транзакций. Журнал транзакций автоматически не обрезается. Только в этом
режиме мы можем использовать зеркальное отображение баз данных и
автоматическую доставку журналов;
• С неполным протоколированием — запись в журнал практически
отключается для операций массового характера и операций по созданию,
перестроению и удалению индексов.
• Простая — минимально протоколируются те же операции, что и в
режиме восстановления С неполным протоколированием, дополнительно к
этим операциям журнал транзакций очищается автоматически (блоками,
размер которых изначально равен 256 Кбайт, но может автоматически
увеличиваться SQL Server).
Таблица __ Основные сведения о трех моделях восстановления
Модель
восстанов-
ления
Описание Риск потери
результатов работы
Возможность
восстановления до
заданного момента
времени
Простая Нет резервных копий
журналов.
Автоматически
освобождает место на
диске, занятое
журналами, устраняя
таким образом
необходимость в
управлении размером
журналов транзакций.
Дополнительные
Изменения с момента
создания последней
резервной копии не
защищены. В случае
аварийной ситуации
эти изменения придется
вносить повторно
Возможно
восстановление только
до конца резервной
копии.
63
сведения о резервном
копировании базы
данных в простой
модели
восстановления см. в
разделе Полные
резервные копии баз
данных (SQL Server).
Операции, требующие
наличия резервных
копий журналов
транзакций, в простой
модели
восстановления не
поддерживаются.
Следующие функции
не могут
использоваться в
простой модели
восстановления:
Доставка
журналов;
AlwaysOn или
зеркальное
отображение базы
данных;
Восстановление
носителей без
потери данных;
Восстановление на
момент времени.
Полная Необходимы
резервные копии
журналов.
Потеря результатов
работы из-за
повреждения файлов
данных исключена.
Возможно
восстановление до
произвольного
момента времени
(например до ошибки
приложения или
пользователя).
Минимальный. Если
поврежден
заключительный
фрагмент журнала, то
требуется
восстановление
изменений,
произведенных в базе с
момента создания
последней резервной
копии журналов.
Может выполнять
восстановление до
определенного момента
времени при наличии
всех необходимых
резервных копий до
этого момента времени.
Если осуществляется
работа с двумя или
более базами данных с
полным
восстановлением,
которые должны быть
логически
согласованными, для
гарантии возможности
восстановления этих баз
данных, возможно,
придется реализовать
специальные процедуры.
64
С
неполным
протоко-
лировани-
ем
Необходимы
резервные копии
журналов.
Дополнение к полной
модели полного
восстановления,
позволяющее
выполнять
высокопроизводитель
ные операции
массового
копирования.
Уменьшает место,
занимаемое
журналами, за счет
неполного
протоколирования
большинства
массовых операций.
Если журнал был
поврежден или с
момента создания
последней резервной
копии журналов
выполнялись операции
с неполным
протоколированием,
все изменения после
этого резервного
копирования
необходимо внести
повторно.
Если нет, результаты
работы потеряны не
будут.
Возможно
восстановление до конца
любой резервной копии.
Восстановление до
заданной точки не
поддерживается.
5.2 Режимы работы базы данных
База данных SQL Server 2012 всегда находится в одном из
определенных состояний, например, к этим состояниям относятся состояния
ONLINE, OFFLINE или SUSPECT. Для того, чтобы узнать текущее состояние
базы данных, следует выберать столбец state_desc в представлении каталога
sys.databases или свойство Status в функции DATABASEPROPERTYEX.
Таблица __ Поддерживаемые SQL Server 2012 состояния базы данных
Состояние Определение
ONLINE База данных доступна. Первичная файловая группа
находится в режиме в сети, хотя возможно не завершена
стадия отката восстановления.
OFFLINE База данных недоступна. База данных переводится в режим
«вне сети» с помощью явного действия пользователя и
остается в режиме «вне сети» до тех пор, пока пользователем
не будет предпринято дополнительное действие. Например,
база данных может быть переведена в режим вне сети, чтобы
переместить файл на другой диск. После завершения
перемещения файла база данных снова переводится в режим
в сети.
RESTORING
Восстанавливаются один или несколько файлов,
принадлежащих к первичной файловой группе, или один или
более файлов, принадлежащих ко вторичным группам,
65
причем база данных остается в режиме в сети. База данных
недоступна.
RECOVERING База данных в процессе восстановления. Процесс
восстановления является переходным состоянием; после
успешного завершения восстановления база данных
автоматически переходит в режим вне сети. При неудачном
завершении восстановления база данных будет помечена как
подозрительная. База данных недоступна.
RECOVERY
PENDING
В приложении SQL Server во время восстановления
произошла ошибка, связанная с ресурсами. База данных не
повреждена, но, возможно, потеряны файлы или
ограничения системных ресурсов препятствуют началу
процесса восстановления. База данных недоступна. Со
стороны пользователя требуется дополнительное действие,
чтобы исправить ошибку и разрешить завершение процесса
восстановления.
SUSPECT
По меньшей мере, первичная файловая группа помечена как
подозрительная и, возможно, повреждена. База данных не
может быть восстановлена во время запуска SQL Server. База
данных недоступна. Со стороны пользователя требуется
дополнительное действие, чтобы устранить проблему.
EMERGENCY
Пользователь изменил базу данных и установил состояние
базы данных в значение EMERGENCY. База данных
находится в однопользовательском режиме и, возможно, в
процессе исправления или восстановления. База данных
помечена как READ_ONLY, ведение журнала отключено и
доступ возможен только элементам предопределенной роли
сервера sysadmin. EMERGENCY используется в основном
для диагностики. Например, база данных, помеченная как
подозрительная, может быть переведена в состояние
EMERGENCY. Это предоставляет системному
администратору доступ к базе данных только для чтения.
Только члены предопределенной роли сервера sysadmin
могут перевести базу данных в состояние EMERGENCY.
Для изменения режима работы базы данных предварительно следует
отключить пользователей, работающих с базой данных. Изменить состояние
базы данных можно, например, с помощью команды ALTER DATABASE,
которая может быть задана со следующими параметрами:
• WITH NO_WAIT — база данных переводится в нужный режим
работы, если нет пользовательских подключений, препятствующих этому
переходу. Если указан параметр WITH NO_WAIT, но команда ALTER
66
DATABASE не может изменить режим работы немедленно, то будет
возвращено сообщение об ошибке;
• используя параметр WITH ROLLBACK AFTER количество секунд —
можно определить, сколько секунд дается пользователям для завершения
работы с базой данных, прежде чем будет выполнен разрыв соединений.
Например, для базы test1:
ALTER DATABASE test1 SET RESTRICTED_USER WITH ROLLBACK
AFTER 60
• если указан параметр WITH ROLLBACK IMMEDIATE — то будет
выполнено немедленное отключение пользователей и откат незавершенных
транзакций этих пользователей.
Если параметры команды ALTER DATABASE по работе с
пользователями, подключѐнными к базе данных, не указаны, то команда
будет ждать, пока все подключенные пользователи не закончат сеансы
работы с базой данный, после чего база данных будет переведена в нужный
режим работы.
5.3 Увеличение размера базы данных
Увеличить размера БД можно используя графический интерфейс SQL
Server Management Studio или команду TSQL ALTER DATABASE.
Используя графический интерфейс SQL Server Management Studio
следует:
1. Открыть свойства базы данных в SQL Server Management Studio;
2. Перейти на вкладку Файлы (рисунок 30);
3. Ввести новый размер для файла базы данных в столбце Начальный
размер (МБ) или добавить в список новый файл.
Используя команды ALTER DATABASE, следует руководствоваться
следующим синтаксисом:
• Для увеличения размера существующего файла данных
ALTER DATABASE имя БД MODIFY FILE (NAME = имя файла данных,
SIZE = размер);
• Для добавления нового файла данных
ALTER DATABASE имя БД ADD FILE (NAME = логическое имя файла,
FILENAME = физическое имя файла, SIZE = минимальный размер,
MAXSIZE = максимальный размер, FILEGROWTH = размер прироста)
Пример скрипта, изменяющего размер БД test1:
USE [master]
GO
ALTER DATABASE [test1] MODIFY FILE ( NAME = N'test1', SIZE = 5120KB
)
GO
67
Рисунок 30 — Изменение размеров файлов БД
5.4 Уменьшение размера базы данных
Уменьшить размер файлов базы данных можно:
1. Используя графический интерфейс SQL Server Management Studio
определяем, что буем уменьшить — все файлы базы данных или только
выбранный файл;
2. Используя команду DBCC SHRINKDATABASE (для всех файлов базы
данных) или DBCC SHRINKFILE (для отдельного файла).
DBCC SHRINKFILE сокращает размер указанного файла данных или
журнала для текущей базы данных или освобождает файл, перемещая данные
из указанного файла в другие файлы из той же файловой группы, разрешая
удаление файла из базы данных. Можно сжать файл до размера, который
будет меньше, чем размер, указанный во время его создания. В результате
будет установлено новое значение минимального размера файла.
68
Синтаксис DBCC SHRINKFILE:
DBCC SHRINKFILE
(
{ file_name | file_id }
{ [ , EMPTYFILE ]
| [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]
}
)
[ WITH NO_INFOMSGS ]
Аргументы:
file_name — логическое имя файла, предназначенного для сжатия.
file_id — идентификационный номер (идентификатор) файла,
предназначенного для сжатия. Для получения идентификатора файла следует
использовать функцию FILE_IDEX или выполнить запрос к представлению
каталога sys.database_files текущей базы данных.
target_size — размер файла (в мегабайтах), выражаемый целым числом. Если
он не указан, то инструкция DBCC SHRINKFILE уменьшает файл до размера
файла по умолчанию. Размер по умолчанию представляет собой размер,
указанный в момент создания файла. Если аргумент target_size указан, то
инструкция DBCC SHRINKFILE пытается сжать файл до заданного размера.
Используемые страницы в освобождаемой части файла перемещаются в
свободное место сохраняемой части файла. Например, если размер файла
данных составляет 10 МБ, инструкция DBCC SHRINKFILE со значением
аргумента target_size, равным 8, перемещает все страницы, используемые в
последних 2 МБ файла, на место любых нераспределенных страниц в первых
8 МБ файла. Инструкция DBCC SHRINKFILE не сжимает файл до меньшего
размера, чем требуется для хранения данных в файле. Например, если для
файла данных, размер которого составляет 10 МБ, необходимо сжатие до 7
МБ, инструкция DBCC SHRINKFILE со значением аргумента target_size,
равным 6, сжимает файл до размера в 7 МБ, а не 6 МБ.
EMPTYFILE — выполняет миграцию всех данных из указанного файла в
другие файлы в той же файловой группе. Поскольку компонент Database
Engine не разрешает размещать данные в пустом файле, этот файл может
быть удален инструкцией ALTER DATABASE. Для контейнеров файловых
групп FILESTREAM файл нельзя удалить с помощью ALTER DATABASE до
тех пор, пока сборщик мусора FILESTREAM не выполнит и не удалит все
ненужные файлы контейнеров файловых групп, которые были скопированы в
другой контейнер с помощью EMPTYFILE.
NOTRUNCATE — перемещает распределенные страницы из конца файла на
место нераспределенных страниц в начале файла с параметром target_percent
или без него. Свободное место в конце файла операционной системе не
возвращается, и физический размер файла не изменяется. Следовательно,
если указан аргумент NOTRUNCATE, файл сжимается незначительно.
Аргумент NOTRUNCATE применим только к файлам данных. На файлы
69
журнала он не влияет. Этот параметр не поддерживается для контейнеров
файловых групп FILESTREAM.
TRUNCATEONLY — освобождает все свободное пространство в конце
файла операционной системе, но не перемещает страницы внутри файла.
Файл данных сокращается только до последнего выделенного экстента.
Аргумент target_size не обрабатывается, если указан аргумент
TRUNCATEONLY. Аргумент TRUNCATEONLY применим только к файлам
данных. Этот параметр не поддерживается для контейнеров файловых групп
FILESTREAM.
WITH NO_INFOMSGS — подавляет вывод всех информационных
сообщений.
5.5 Операция переноса файлов базы данных
Для переноса файлов базы данных следует:
1. Перевести базу данных в автономный режим работы (можно
воспользоваться графическим интерфейсом SQL Server Management Studio
или командой, например, ALTER DATABASE test1 SET OFFLINE для БД
test1);
2. Используя средства операционной системы, перенести файлы базы данных
в нужное место;
3. Указать SQL Server 2012 информацию о новом размещении файлов базы
данных, например,:
ALTER DATABASE testdb MODIFY FILE ( NAME = test1, FILENAME =
'D:\XYZ\test1.mdf')
4. Перевести базу данных в оперативный режим работы:
ALTER DATABASE test1 SET ONLINE
Описанный способ подходит для перемещения как пользовательских,
так и системных баз данных.
5.6 Переименование базы данных
Переименовать БД можно тремя способами, отключив предварительно
от нее всех пользователей:
• используя графический интерфейс SQL Server Management Studio — из
контекстного меню БД выбрать команду Переименовать;
• при помощи команды ALTER DATABASE, например, переименовать
БД test1 в БД test2:
ALTER DATABASE test1 MODIFY NAME = test2
• при помощи хранимой процедуры sp_renamedb, например:
SP_RENAMEDB 'test1', 'test2'
70
5.7 Изменение владельца базы данных
Для смены владельца БД в SQL Server 2012 можно использовать
хранимую процедура sp_changedbowner.
Например: SP_CHANGEDBOWNER 'sa'
use test1
EXEC sp_changedbowner 'sa'
В примере владельцем БД test1 стал пользователь sa.
Не допускается смена владельца для системных базы данных MASTER,
MODEL и TEMPDB.
5.8 Удаление базы данных
Удалить базу данных в SQL Server 2012 можно, используя:
• команду контекстного меню БД в SQL Server Management Studio —
Удалить;
• при помощи команды DROP DATABASE, например, DROP
DATABASE test1
С удаляемой базой данных не должны работать пользователи и
служебные процессы (например, выполняться процесс репликации).
Литература
Книги по Microsoft SQL Server 2012
(ссылки на бумажные издания http://www.mctrewards.ru/sql2012.htm)
1. Microsoft SQL Server 2012. Реализация хранилищ данных. Учебный
курс Microsoft (+ CD-ROM) ID 24894274
2. Microsoft SQL Server 2012. Создание запросов. Учебный курс Microsoft
(+ CD-ROM) ID 24931129
3. Microsoft SQL Server 2012. Справочник администратора ID 21073081
1. http://ru.wikipedia.org/wiki/Microsoft_SQL_Server
2. http://msdn.microsoft.com/ru-ru/library/ms144275.aspx
3. http://www.alta.ru/mssqlserver2012.php Инструкция по установке MS SQL
Server 2012
Просмотр документации по SQL Server Использование электронной
документации по Microsoft SQL Server
http://go.microsoft.com/fwlink/?LinkID=224683.
Центр обновления Майкрософт
71
http://go.microsoft.com/fwlink/?LinkId=108409.
Образцы БД. По умолчанию при установке SQL Server образцы баз данных
и образцы кода не устанавливаются. Чтобы установить образцы баз данных и
образцы кода для выпусков SQL Server 2012, отличных от Express, перейдите
на веб-сайт CodePlex Проекты сообщества Microsoft SQL Server и образцы
http://go.microsoft.com/fwlink/?LinkId=182887 . Чтобы прочитать о поддержке
образцов баз данных SQL Server и образцов кода для SQL Server Express, см.
раздел Образцы баз данных SQL Server
<http://go.microsoft.com/fwlink/?LinkId=182888> на веб-сайте CodePlex.
Заметки о выпуске. Дополнительные сведения о критических изменениях в
этом выпуске SQL Server http://go.microsoft.com/fwlink/?LinkId=182684.
Документация и ссылки. Сведения об установке .NET Framework SDK см.
в разделе Установка пакета SDK для платформы .NET Framework
http://go.microsoft.com/fwlink/?LinkId=141693.
Сведения о настройке контактной зоны SQL Server 2012 см. в разделе
Настройка контактной зоны <http://go.microsoft.com/fwlink/?LinkId=182685>
в библиотеке MSDN по SQL Server 2012
SQL Server доступен в ознакомительной версии в течение 180-дневного
пробного периода
http://support.microsoft.com/kb/968930/
http://msdn.microsoft.com/ru-ru/library/ms174219.aspx SSMS