Содержание. Введение 1. Глава 1. История и особенности SQL Server Краткая история развития баз данных 9 О версиях SQL Server

Save this PDF as:
 WORD  PNG  TXT  JPG

Размер: px
Начинать показ со страницы:

Download "Содержание. Введение 1. Глава 1. История и особенности SQL Server Краткая история развития баз данных 9 О версиях SQL Server"

Транскрипт

1 Введение 1 Глава 1. История и особенности SQL Server Краткая история развития баз данных 9 О версиях SQL Server Какую версию необходимо использовать? 15 Требования к аппаратному обеспечению и операционной системе 17 Построение связных систем баз данных 18 Одноуровневые (хост) системы 19 Двухуровневая архитектура (клиент-сервер) 20 Клиентоцентрическая архитектура 20 Сервероцентрическая архитектура 21 Трехуровневая архитектура 22 N-уровневая архитектура 24 Что такое.net 25 Модели доступа к данным 26 Сертификация Microsoft 28 Заключение 28 Глава 2. Основы СУРБД: из чего состоит база данных SQL Server 29 Обзор объектов баз данных 30 Объект Database база данных 30 Журнал транзакций 34 Главный объект базы данных таблица 34 Группы файлов 37 Диаграммы 38 Представления 39 Хранимые процедуры 40 Определенные пользователем функции 41 Пользователи и роли 41 Правила 42 Значения по умолчанию 42 Определенные пользователем типы данных 42

2 Полнотекстовые каталоги 42 Типы данных SQL Server 43 NULL-данные 48 Идентификаторы объектов SQL Server 49 Заключение 50 Глава 3. Инструментальные средства 51 Электронные книги 52 Клиентские и серверные сетевые утилиты 53 Протоколы 55 На стороне клиента 59 Enterprise Manager 61 Сервисы преобразования данных (DTS) 61 Программа массового копирования (bcp) 62 Административная консоль MS DTC 63 Профайлер SQL Server 63 Анализатор запросов Query Analyzer 64 Подключение 64 Создание подключения 68 OSQL 74 Service Manager (Диспетчер сервисов) 74 sqlmaint.exe 76 Заключение 76 Глава 4. Основные операторы T-SQL 77 Начнем с базового оператора SELECT 78 Оператор SELECT и параметр FROM 78 Условие WHERE 81 ORDER BY 85 Группировка данных параметром GROUP BY 88 Задание условий для групп параметром HAVING 96 Вывод XML с помощью параметра FOR XML 99 Оптимизация и параметр OPTION 99 Предикаты DISTINCT и ALL 100 Добавление данных с помощью оператора INSERT 103 Оператор INSERT INTO...SELECT 107 Изменения с помощью оператора UPDATE 109 ii

3 Оператор DELETE 113 Заключение 114 Глава 5. Объединение таблиц 115 JOIN 116 INNER JOIN 117 Чем параметр INNER JOIN похож на условие WHERE 122 OUTER JOIN 126 Простой OUTER JOIN 127 Поиск висячих или не имеющих соответствия записей 129 Работа с более сложными параметрами OUTER JOIN 132 Включение обеих частей параметром FULL JOIN 136 CROSS JOIN 138 Альтернативный синтаксис объединений 139 Альтернативная версия параметра INNER JOIN 140 Альтернативная версия параметра OUTER JOIN 140 Альтернативная версия параметра CROSS JOIN 141 UNION 142 Заключение 147 Глава 6. Создание и изменение таблиц 149 Имена объектов в SQL Server 149 Владелец базы данных 150 Имя базы данных 152 Имя сервера 152 Значения по умолчанию 152 Оператор CREATE 153 CREATE DATABASE 153 Создание базы данных 158 CREATE TABLE 159 Имя таблицы и имена столбцов 160 Типы данных 162 Ограничения на уровне столбцов 165 Вычисляемые столбцы 165 Ограничения на табличном уровне 167 Создание таблицы 168 Оператор ALTER 174 ALTER DATABASE 174 Спецификация параметров и заключения 177 ALTER TABLE 177 iii

4 Оператор DROP 181 Применение инструментов графического интерфейса пользователя 182 Создание базы данных при помощи Enterprise Manager 182 И вновь программный код: Основы создания сценариев при помощи Enterprise Manager 190 Заключение 195 Глава 7. Ограничения 197 Типы ограничений 198 Ограничения доменов 199 Ограничения логических объектов 199 Ограничения ссылочной целостности 200 Имена ограничений 200 Ограничения ключей 201 Ограничения первичного ключа 202 Создание первичного ключа при создании таблицы 203 Создание первичного ключа для существующей таблицы 204 Ограничения внешнего ключа 205 Добавление внешнего ключа в существующую таблицу 206 Создание таблиц, имеющих ссылки на самих себя 207 Каскадное обновление и удаление 209 О чем нужно помнить при работе с внешними ключами 214 Ограничения уникальности 216 Создание ограничений уникальности для существующих таблиц 217 Ограничения проверки 218 Ограничения стандартных значений 219 Определение ограничения стандартных значений в операторе CREATE TABLE 220 Добавление ограничения стандартных значений в существующую таблицу 221 Отключение ограничений 222 Игнорирование некорректных данных при создании ограничения 222 Временное отключение существующих ограничений 224 Правила и стандартные значения родственники ограничений 226 Правила 227 Удаление правил 228 Стандартные значения 229 Удаление стандартных значений 230 Определение таблиц и типов данных, использующих данные правила либо стандартные значения 230 Триггеры, как средство поддержания целостности данных 230 iv

5 Что же выбрать? 231 Заключение 232 Глава 8. Нормализация и другие основные вопросы проектирования 233 Таблицы 234 Хранение данных в "нормальной" форме 234 Вместо предисловия 236 Первая нормальная форма 237 Вторая нормальная форма 241 Третья нормальная форма 243 Другие нормальные формы 245 Отношения 246 Отношения одного-к-одному 247 Отношение нуля или одного-к-одному 248 Отношение одного-ко-многим 248 Отношение одного к нулю, одному или многим 249 Отношение многих-ко-многим 250 Создание диаграмм 254 Инструментальные средства davinci 254 Таблицы 258 Вкладка Relationships 264 Денормализация 269 За пределами нормализации 270 Придерживайтесь простоты 271 Выбор типов данных 271 Ошибки при выполнении сохранения 272 Создание краткого примера 272 Создание базы данных 273 Добавление диаграммы и начальных таблиц 273 Добавление отношений в диаграмму 279 Добавление ограничений 282 Заключение 283 Глава 9. Хранилища данных SQL Server. Структура индексов 285 Хранилища данных SQL Server: прошлое и настоящее 285 Хранилища данных SQL Server общие моменты для всех версий 287 Хранилища данных в SQL Server версий 6.5 и более ранних 291 Хранилища данных в SQL Server версий 7.0 и последующих 293 v

6 Индексы 298 В-деревья 299 Первый взгляд на разбиение страниц 301 Доступ к данным в SQL Server 303 Применение табличного сканирования 303 Применение индексов 304 Типы индексов и навигация по индексам 305 Кластерные индексы 306 Некластерные индексы на основе кучи 308 Некластерные индексы, основанные на кластерных таблицах 309 Создание и удаление индексов 312 Оператор CREATE INDEX 312 Индексы, создаваемые вместе с ограничениями 317 Разумный выбор: когда и какие индексы следует применять 317 Селективность 318 Ресурсоемкость индексов: когда меньше значит больше 319 Выбор кластерного индекса 319 Влияние порядка столбцов 322 Удаление индексов 323 Использование Мастера настройки индексов 323 Сопровождение индексов 323 Фрагментация 324 Фрагментация и разбиение страниц 324 DBREINDEX и FILLFACTOR 327 Заключение 329 Глава 10. Представления 331 Простые представления 331 Использование представлений в качестве фильтров 335 Более сложные представления 337 Функции DATAADD и CONVERT 340 Использование представлений для модификации данных и триггеры INSTEAD OF 341 Редактирование представлений с помощью T-SQL 345 Удаление представлений 346 Создание и редактирование представлений в Enterprise Manager 346 Редактирование представлений в Enterprise Manager 350 Проверка существующего кода 350 Шифрование SQL-кода представлений в целях безопасности 352 Привязка схем 354 vi

7 Как сделать так, чтобы ваше представление выглядело как таблица при помощи VIEW_METADATA 354 Индексированные представления 355 Заключение 360 Глава 11. Сценарии и пакеты 363 Общие сведения о сценариях 363 Оператор USE 364 Объявление переменных 365 Присвоение значений переменным 366 Обзор системных функций 368 Использование 370 Использование 374 Пакеты 375 Отдельная строка 376 Каждый пакет посылается на сервер отдельно 376 GO не является командой T-SQL 377 Ошибки в пакетах 377 Когда используются пакеты 378 Операторы, требующие отдельного пакета 378 Использование пакетов для задания предшествования 378 OSQL 381 Динамический SQL: генерация кода "на лету" при помощи команды EXEC 383 Свойства EXEC 385 Заключение 389 Глава 12. Хранимые процедуры 391 Создание хранимой процедуры: основной синтаксис 392 Пример хранимой процедуры 392 Изменение хранимых процедур при помощи ALTER 393 Удаление хранимых процедур 394 Параметризация 394 Объявление параметров 394 Присвоение значений по умолчанию 396 Выходные параметры 397 Управляющие операторы 400 Условный оператор IF ELSE 400 ELSE 403 Создание блоков кода 407 vii

8 Оператор CASE 411 Простой оператор CASE 412 Анализируемый оператор CASE 414 Создание циклов с помощью оператора WHILE 418 Оператор WAITFOR 420 Подтверждение удачного или неудачного выполнения процедуры с помощью возвращаемого значения 421 Как использовать RETURN 421 Борьба с ошибками 423 Обработка inline-ошибок 424 Использование системной функции 424 Использование системной функции в хранимых процедурах 426 Обработка ошибок до их возникновения 430 Генерация ошибок вручную 433 Добавление пользовательского сообщения об ошибке 437 Что дает использование хранимых процедур 441 Создание вызываемых процессов 441 Хранимые процедуры и безопасность 443 Хранимые процедуры и производительность 443 Когда хорошая хранимая процедура становится плохой 445 Расширенные хранимые процедуры 446 xp_cmdshell 447 xp_msver 448 Системные хранимые процедуры 450 Вкратце о рекурсии 452 Отладка 455 Настройка SQL Server для проведения отладки 455 Запуск отладчика 457 Составляющие отладчика 459 Начинаем использовать отладчик на практике 461 Заключение 469 Глава 13. Функции, определяемые пользователем 471 Что такое определяемые пользователем функции 471 Определяемые пользователем функции, возвращающие скалярные значения 473 Определяемые пользователем функции, возвращающие таблицы 477 Понятие детерминизма 484 viii

9 Создание "системных" функций 487 Удаление собственных "системных" функций 488 Заключение 489 Глава 14. Транзакции и блокировки 491 Транзакции 491 BEGIN TRAN 493 COMMIT TRAN 493 ROLLBACK TRAN 493 SAVE TRAN 493 Принципы работы журнала SQL Server 498 Сбой и восстановление 501 Неявные транзакции 502 Блокировки и параллелизм 504 Проблемы, предотвращаемые блокировками 505 Блокируемые ресурсы 509 Эскалация блокировок и их влияние на работу системы 510 Режимы блокировок 511 Совместимость блокировок 514 Задание определенного типа блокировки параметры оптимизатора 514 Использование хранимой процедуры sp_lock и еще один сюрприз 517 Использование spdblocks 518 Получение информации о блокировках при помощи Enterprise Manager 519 Задание уровней изоляции 520 Уровни изоляции и MTS/COM+ 523 Разрешение тупиковых ситуаций (ошибка 1205) 524 Как SQL Server обнаруживает взаимоблокировки 524 Как выбирается жертва взаимоблокировки 524 Предотвращение взаимоблокировок 525 Заключение 528 Глава 15. Триггеры 531 Что такое триггер? 532 ON 534 WITH ENCRYPTION 534 Опции FOR AFTER и INSTEAD OF 534 FOR AFTER 536 WITH APPEND 536 NOT FOR REPLICATION 537 AS 537 ix

10 Использование триггеров для поддержки ссылочной целостности 537 Использование триггеров для поддержки простой ссылочной целостности 538 Использование триггеров для поддержки более гибкой ссылочной целостности 542 Отношение один-к-одному 543 Эксклюзивные подкатегории 547 Использование триггеров для поддержки правил целостности данных 550 Реализация требований, налагаемых со стороны других таблиц 550 Использование триггеров для проверки дельты при модификации данных 553 Использование триггеров для создания пользовательских сообщений об ошибках 554 Другие распространенные сферы применения триггеров 555 Обновление обобщенной информации 555 Передача данных в денормализованные таблицы для создания отчетов 558 Установка флагов условий 559 И еще о триггерах Триггеры могут быть вложенными 561 Триггеры могут являться рекурсивными 562 Триггеры не способны предотвращать внесение изменений в архитектуру базы данных 562 Запуск триггеров можно запретить, не удаляя их 563 Порядок запуска триггеров 563 Логическая необходимость управления порядком выполнения триггеров 565 Управление порядком выполнения триггеров из соображений производительности 565 Триггеры INSTEAD OF 565 Триггеры вставки INSTEAD OF 566 Триггеры обновления INSTEAD OF 570 Триггеры удаления INSTEAD OF 572 Вопросы быстродействия 574 Триггеры следуют за действиями, а не предшествуют им 574 Триггеры выполняются в рамках того процесса, который вызвал их запуск 575 Использование функций IF UPDATE() и UPDATED_COLUMNS() 575 Функция UPDATE() 575 Функция UPDATED_COLUMNS() 576 Избегайте излишеств 579 Не забывайте о триггерах при выборе индексов 579 Ограничение на количество таблиц, объединенных оператором JOIN в триггере (для ранних версий SQL Server) 580 Старайтесь не вызывать откат непосредственно из триггеров 580 Удаление триггеров 580 Отладка триггеров 580 Заключение 582 x

11 Глава 16. Расширенные запросы 583 Что такое подзапрос? 584 Создание вложенных подзапросов 585 Вложенные запросы, возвращающие единственное значение в оператор SELECT 585 Вложенные запросы, возвращающие множество значений 586 Операторы ANY, SOME и ALL 589 Коррелированные подзапросы 590 Принципы работы коррелированных подзапросов 591 Коррелированные подзапросы в параметре WHERE 591 Коррелированные подзапросы в списке оператора SELECT 594 Производные таблицы 596 Оператор EXISTS 598 Смешение типов данных: функции CAST и CONVERT 602 Вопросы быстродействия 606 Объединение или подзапросы? 606 Заключение 608 Глава 17. Распределенные запросы и транзакции 609 Распределенные транзакции 610 Фаза подготовки 610 Фаза фиксации 611 Распределенные запросы 612 Создание связанных серверов 612 Использование sp_addlinkedserver 612 Удаление связанных серверов 614 Использование хранимой процедуры sp_addlinkedsrvlogin 614 Использование связанных серверов 615 Выполнение хранимых процедур на связанных серверах 620 Извлечение метаданных с удаленного сервера 621 Создание и применение ретранслируемых запросов 624 Применение специальных запросов к источникам удаленных данных 626 Другие вопросы, связанные с распределенными запросами 627 Интегрированные серверы (распределенные разделенные представления) 630 Заключение 639 Глава 18. Курсоры SQL 641 Что такое курсор? 642 Жизненный цикл курсоров 643 xi

12 Типы курсоров и расширенный синтаксис их объявления 646 Область видимости 647 Возможность перемещения по курсору (прокрутка курсора) 652 Типы курсоров 654 Статические курсоры 655 Курсоры, управляемые наборами ключей (ключевые курсоры) 658 Динамические курсоры 662 Быстрые последовательные курсоры 666 Опции распараллеливания процессов 668 READ_ONLY 668 SCROLL_LOCKS 669 OPTIMISTIC 671 Выявление ситуаций с преобразованием типа курсора: TYPE_WARNING 672 FOR <SELECT> 673 FOR UPDATE 673 Перемещение по курсору: оператор FETCH 674 Изменение данных с помощью курсора 675 Заключение 677 Глава 19. Краткое введение в язык XML 679 Основы XML 680 Состав XML документа 681 Формальная правильность документа 685 Пример с XML 686 Определение элементов и атрибутов 689 Пространства имен 689 Содержимое элемента 691 Корректные и формально правильные документы DTD и схемы 692 DTD 693 Схемы XML 694 Вопросы быстродействия DTD и схем XML 695 Преобразования XSLT 696 Обзор ключевых элементов XSL 702 Заключение 702 Глава 20. Интеграция XML в SQL Server 703 Параметр FOR XML 705 RAW 707 AUTO 709 xii

13 EXPLICIT 710 Tag и Parent 712 Именование столбцов 713 OPENXML 727 Доступ через HTTP 733 Настройка доступа через HTTP 734 URL-запросы 743 Использование шаблонов 745 POST 750 XPath 756 Форматирование конечных результатов 765 Несколько слов о механизме Updategrams 770 Потоковый вывод XML 771 Объект Stream 771 Реализация объекта Stream в виде компонента 772 Заключение 778 Глава 21. Программа массового копирования (bcp) 779 Утилита bcp 780 Синтаксис bcp 780 Импортирование данных с помощью bcp 786 Пример импортирования данных 786 Протоколировать или нет? 789 Форматные файлы 790 Несовпадение порядка полей 792 Использование форматных файлов 793 Оптимизация быстродействия при копировании 793 Экспорт данных с помощью bcp 794 BULK INSERT 796 Заключение 797 Глава 22. Введение в Сервисы Преобразования Данных (DTS) 799 DTS Package Editor 800 Панель инструментов Connection 801 Панель инструментов Task 802 Схема обработки 805 Использование Мастера экспорта/импорта 806 Execute SQL 817 Схема обработки 818 xiii

14 Объекты соединений 818 Преобразование 818 Создание простого пакета преобразований 819 Установка параметров процесса 838 Сохранение пакета 840 Использование DTS вместо bcp 841 Запуск из командной строки dtsrun.exe 846 Заключение 848 Глава 23. Репликация данных 849 Поддержка распределенных данных 850 Нужна ли вам репликация? 850 Автономность 850 Задержки 850 Непротиворечивость данных 851 Непротиворечивость схем 851 Другие вопросы, подлежащие обсуждению 851 Модель публикаций 852 Подписка 853 Типы подписчиков 854 Фильтрация данных 854 Разновидности репликации 854 Мгновенная репликация 855 Репликация слиянием 858 Транзакционная репликация 861 Подписчики с немедленным обновлением 864 Использование различных типов репликации 865 Сценарии моделей репликации 866 Стандартные модели 866 Центральный публикующий/распределительный сервер 866 Центральный публикующий сервер и удаленный распределительный сервер 867 Центральный подписчик 868 Смешанные модели 868 Публикующий подписчик 869 Публикующий сервер-подписчик 869 Множество публикующих серверов и подписчиков 870 Еще один момент 870 Публикация для самого себя 870 Примеры реализации 870 Ресурсы поставщика 871 Cleanzit 872 xiv

15 Планирование репликаций 873 Данные 873 Тип репликации 874 Мастера репликации 874 Включение публикующего и распределительного серверов 875 Запуск Мастера 875 Конфигурация по умолчанию 876 Пользовательская настройка 878 После настройки 882 Отключение распределительного сервера 882 Процедуры Transact-SQL 883 Транзакционные и мгновенные публикации 883 Мастер создания и управления публикациями 883 Обновление с организацией очереди 886 После настройки 895 Процедуры Transact-SQL 896 Публикации слиянием 897 Мастер создания и управления публикациями 897 После настройки 908 Процедуры Transact-SQL 909 Принудительная подписка 909 Мастер принудительной подписки 909 Подписка при репликации слиянием 914 Процедуры Transact-SQL 915 Запросная подписка 915 Мастер запросной подписки 915 Процедуры Transact-SQL 917 Управление репликацией 918 Сценарии репликации 918 Поддержка неоднородных репликаций 918 Публикация в Internet 919 Репликация и изменения схемы 921 sp_repladdcolumn 921 sp_repldropcolumn 922 Диспетчер репликации 923 Не пускайте работу на самотек! 925 Заключение 927 Глава 24. Расширенные возможности проектирования 929 Дополнительные сведения о диаграммах и отношениях 930 Типы отношений 931 xv

16 Обозначение объекта 931 Линия, обозначающая отношения 933 Терминаторы 933 Логическое и физическое проектирование 936 Цели логического моделирования 936 Части логической модели 938 Работа с информацией, хранящейся в файлах 940 Подкатегории 942 Типы подкатегорий 944 Реализация подкатегорий 945 Физическая реализация подкатегорий 948 Роль подкатегорий для расширяемости 948 Повторное использование баз данных 949 Претенденты на повторное использование 950 Как проводить разбиение 950 Высокая цена повторного использования 951 Разбиение ради масштабируемости 952 Заключение 953 Глава 25. Аналитические службы 955 Требования пользователей 956 Оперативная обработка транзакций (OLTP) 956 Аналитическая обработка в реальном времени (OLAP) 958 Добыча данных 958 OLTP или OLAP? 959 Пространственные базы данных 961 Таблицы фактов 961 Пространственные таблицы 962 Звездообразная схема и схема-снежинка 963 Кубы данных 963 Форматы хранения данных OLAP 964 MOLAP 965 ROLAP 965 HOLAP 965 Концепция хранилищ данных 965 Характеристики информационных хранилищ 966 Витрины данных 967 Сервисы преобразования данных 968 Проверка правильности данных 968 Чистка данных 969 xvi

17 Миграция данных 969 Преобразования данных 970 Компоненты DTS 970 Метаданные и репозиторий 970 Модели добычи данных 971 Алгоритмы добычи данных 972 Деревья решений 972 Кластеризация 973 Аналитический менеджер Analysis Manager 974 Создание OLAP-решений 975 Как мы получили данную схему? 977 Создание базы данных OLAP в Аналитическом менеджере 978 Добавление куба данных о продажах 979 Создание хранилища для куба данных 992 Безопасность куба данных 994 Просмотр куба данных 997 Построение модели добычи данных 999 Заключение 1004 Глава 26. Полнотекстовый поиск 1007 Архитектура полнотекстового поиска 1009 Настройка полнотекстовых индексов и каталогов 1011 Включение возможностей полнотекстового поиска в базу данных 1011 Создание полнотекстового каталога 1012 Включение полнотекстового поиска для индивидуальных таблиц 1014 Заполнение индекса 1018 Синтаксис полнотекстовых запросов 1020 CONTAINS 1021 FREETEXT 1022 CONTAINSTABLE 1023 FREETEXTTABLE 1025 Работа с фразами 1025 Близость 1028 Префиксные условия 1030 Взвешивание 1031 Морфология 1032 Несколько слов о рангах 1032 Неинформативные слова 1033 Лингвистика 1034 sp_fulltext_service 1034 Заключение 1036 xvii

18 Глава 27. Запросы на английском (English Query) 1037 Что представляет собой English Query 1039 Преимущества и ограничения использования English Query 1040 Архитектура EQ-приложения 1041 Создание проекта English Query 1042 Создание нового проекта при помощи Мастера SQL-проектов 1043 Базовые запросы на английском 1049 Тестирование базовых запросов 1050 Просмотр и изменение свойств объектов 1051 Повторное тестирование базовых запросов 1053 Уточнение и расширение объектов и отношений модели 1055 Уточнение и расширение объектов полей 1056 Определение дополнительных формулировок 1061 Сохранение запросов и регрессионное тестирование 1064 Определение отношений между таблицами 1065 Добавление предложной фразы в глагольное выражение 1069 Поддержка вопросов о времени 1070 Отношения на основе множества связей 1071 Выражения и отношения между объектами таблиц и полей 1072 Определение выражений для подмножеств 1074 Добавление определительных выражений 1075 Определение синонимов 1079 Синонимы объектов 1079 Синонимы глаголов 1080 Словарные статьи 1080 Повторное тестирование нашего приложения 1082 Регрессионное тестирование 1085 Размещение приложения English Query 1085 Файлы проекта 1086 Построение приложения с English Query 1089 Использование приложения с English Query 1089 Настройка ссылок на библиотеки 1090 Обзор проекта 1090 Открытие сессии 1092 Синтаксический анализ вопросов 1093 Управление ответом 1094 Распространение 1099 Заключение 1100 Глава 28. Безопасность 1101 Основы безопасности 1105 Один человек, одно имя, один пароль 1105 xviii

19 Срок действия пароля 1107 Наблюдение за использованием паролей 1108 Длина и состав пароля 1109 Ограничение числа попыток 1110 Что делать в случае отказа в доступе 1110 Хранилище информации о пользователе и пароле 1111 Настройки безопасности 1112 Система безопасности SQL Server 1113 Переход от интегрированной системы безопасности Windows NT к системе безопасности NT/SQL Server 1114 Создание нового регистрационного имени в SQL Server 1114 Интегрированная система безопасности Windows NT 1118 Что такое система безопасности Windows NT? 1119 Предоставление доступа к пользовательским бюджетам NT 1119 Зачем использовать систему безопасности NT? 1121 Права пользователя 1121 Предоставление доступа к определенной базе данных 1122 Предоставление доступа к определенным объектам таблицы 1123 GRANT 1124 DENY 1127 REVOKE 1128 Пользовательские права и разрешения на выполнение определенных выражений 1129 Серверные роли и роли базы данных 1131 Серверные роли 1132 Роли базы данных 1134 Роли приложений 1137 Создание ролей приложений 1138 Добавление привилегий для роли приложения 1139 Использование ролей приложений 1139 Удаление ролей приложения 1140 Безопасность с XML 1140 Дополнительные меры безопасности 1141 Что делать с гостевым бюджетом 1141 Настройки порта TCP/IP 1142 Не используйте бюджет sa 1143 Ограничьте число пользователей, имеющих право на выполнение команды xp_cmdshell 1143 Не забывайте о представлениях, хранимых процедурах и определяемых пользователем функциях как инструментах безопасности 1144 Заключение 1144 xix