Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Microsoft SQL Server 2005 для администраторов
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

4.7. Другие параметры базы данных

Параметры баз данных SQL Server 2005, ALLOW_SNAPSHOT_ISOLATION, ANSI_NULL_DEFAULT, ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, AUTO_CLOSE, AUTO_CREATE_STATISTICS, AUTO_UPDATE_STATISTICS, AUTO_SHRINK

Кроме режима восстановления и режимов работы, у баз данных SQL Server 2005 есть множество других важных свойств. Эти свойства можно настроить при помощи графического интерфейса на вкладке Options свойств базы данных в SQL Server Management Studio (при этом будут доступны не все параметры) или при помощи команды ALTER DATABASE. При этом названия параметров и их значения на графическом интерфейсе и в синтаксисе команды ALTER DATABASE выглядят по-разному. Например, на вкладке Options для параметра ANSI NULLS Enabled предусмотрены значения TRUE и FALSE. При использовании команды ALTER DATABASE тот же параметр называется ANSI_NULLS, и для него используются значения ON и OFF.

Далее приведена информация обо всех параметрах базы данных, которые не были описаны в двух предыдущих разделах. Названия параметров баз данных и их значения приводятся "в формате" команды ALTER DATABASE.

q      ALLOW_SNAPSHOT_ISOLATION — определяет, можно ли при работе с этой базой данных использовать новый режим изоляции транзакций моментальных снимков. По умолчанию значение для этого параметра устанавливается в OFF.

q      ANSI_NULL_DEFAULT — определяет, будут ли по умолчанию столбцы в создаваемых таблицах этой базы данных допускать значения типа NULL. По умолчанию значение этого параметра OFF (т. е. не допускать), что нарушает стандарт ANSI. Этот параметр можно изменять на уровне отдельного сеанса. Все подключения по OLE DB и ODBC по умолчанию переставляют его значение на уровне сеанса в ON.

q      ANSI_NULLS — если включить этот параметр, то любые сравнения значений, по крайней мере, одно из которых является NULL, будут возвращать NULL. Такое поведение предписано стандартом ANSI. Если же этот параметр установлен в OFF (по умолчанию), то SQL Server при сравнении двух значений типа NULL будет возвращать TRUE. Этот параметр предписывается обязательно устанавливать в ON при создании или изменении индексированных представлений или индексов для вычисляемых столбцов. Все подключения по OLE DB и ODBC также по умолчанию переставляют его значение на уровне сеанса в ON.

q      ANSI_PADDING — определяет, будут ли сохраняться символы пустого пространства (например, пробелы) при вставке значений типа varchar и nvarchar в столбцы (значение ON предписано стандартом ANSI). По умолчанию в SQL Server установлено значение OFF. Точно так же, как и для предыдущего параметра, этот параметр предписывается обязательно устанавливать в ON при создании или изменении индексированных представлений или индексов для вычисляемых столбцов, а также он устанавливается в ON по умолчанию всеми подключениями OLE DB и ODBC на уровне сеанса. В документации Microsoft вообще рекомендуется, чтобы этот параметр всегда был установлен в ON (однако значение по умолчанию, как уже было сказано, — OFF).

q      ANSI_WARNINGS — этот параметр определяет, будут ли генерироваться предупреждающие сообщения, если агрегатной функции предложили произвести деление на ноль или поработать со значением типа NULL. В отношении значений справедливо все тоже самое, что и для предыдущего параметра: значение ON рекомендуется стандартом ANSI, по умолчанию устанавливается на уровне сеанса подключениями по OLE DB и ODBC, необходимо для работы с индексированными представлениями и индексами для вычисляемых столбцов. Но для баз данных SQL Server 2005 по умолчанию установлено значение OFF.

q      ARITHABORT — если этот параметр установить в ON, то арифметическая ошибка (переполнение переменной или деление на ноль) приведет к остановке пакета или откату той транзакции, в которой она возникла. Если значение этого параметра установлено в OFF (по умолчанию в SQL Server), то все ограничится предупреждающим сообщением, а выполнение пакета/транзакции будет продолжено. Для работы с индексированными представлениями и индексами для вычисляемых столбцов значение этого параметра должно быть установлено в ON.

q      AUTO_CLOSE — если этот параметр установлен в ON, то после отключения из базы данных последнего пользователя она будет автоматически закрыта SQL Server. Фактически при этом база данных перейдет в автономный режим: ее файлы можно будет спокойно копировать. При первом обращении к этой базе данных со стороны пользователей она будет автоматически открыта. По умолчанию этот параметр отключен для всех баз данных. Включать его рекомендуется только для редкоиспользуемых баз данных для экономии ресурсов. Если его включить для обычной рабочей базы данных, к которой часто подключаются пользователи, то это может серьезно замедлить работу. В редакции SQL Server 2005 Desktop Edition, которая рассчитана на использование в качестве настольного приложения, этот параметр, наоборот, включен по умолчанию для всех баз данных.

q      AUTO_CREATE_STATISTICS и AUTO_UPDATE_STATISTICS — если эти параметры включены (по умолчанию), то SQL Server 2005 автоматически создает и обновляет статистику для столбцов таблиц этой базы данных. Статистика — это специальная служебная информация о распределении данных в столбцах таблиц, которая используется оптимизатором запросов. Представьте, например, что у вас выполняется запрос, который просит вернуть всех Ивановых, проживающих в городе Санкт-Петербурге. При этом предположим, что у 90% записей в этой таблице одно и то же значение в столбце "Город" — Санкт-Петербург. Конечно, с точки зрения выполнения запроса, вначале выгоднее выбрать в таблице всех Ивановых (их явно будет не 90%), а затем уже проверять значение столбца "Город" для каждой отобранной записи. Однако для того, чтобы узнать, как распределяются значения в столбце, нужно вначале выполнить запрос. Поэтому SQL Server самостоятельно инициирует выполнение таких запросов, а потом сохраняет информацию о распределении данных (такая информация и называется статистикой) в служебных таблицах базы данных.

Статистика нужна обязательно, иначе оптимизатор не сможет создавать правильные планы выполнения запросов. Параметры AUTO_CREATE_STATISTICS и AUTO_UPDATE_STATISTICS имеет смысл отключать только тогда, когда база данных у вас очень большая, и вы боитесь, что активность по созданию статистики может замедлить работу пользователей. В этом случае можно производить обновление статистики вручную, например, во внерабочее время.

q      AUTO_SHRINK — при включении этого параметра файлы баз данных и журналов транзакций автоматически будут сжиматься, возвращая неиспользуемое пространство операционной системе. По умолчанию этот параметр отключен. Для рабочих баз данных включение этого параметра может оказаться очень вредным из-за возрастания фрагментации.

q      CONCAT_NULL_YIELDS_NULL — этот параметр иногда создает большие проблемы разработчикам и администраторам. Если его значение установлено в ON, то слияние обычного строкового значения со значением типа NULL даст в итоге NULL. Например, если мы сливаем имя и фамилию с незаполненным отчеством, то на выходе получится значение типа NULL. Если же значение этого параметра установлено в OFF (по умолчанию в SQL Server), то вернутся, как обычно, имя и фамилия. Проблема заключается в том, что по умолчанию подключения по OLE DB и ODBC устанавливают на уровне сеанса для этого параметра значение ON. Если приложение вы исправлять не можете, то один из возможных выходов — создать для столбца, в котором могут появиться пустые значения, безопасное значение по умолчанию (например, пустое строковое значение). Для работы с индексированными представлениями и индексированными столбцами значение этого параметра должно быть установлено в ON.

q      CURSOR_CLOSE_ON_COMMIT — если включить этот параметр (по умолчанию он отключен), то курсор будет удаляться из памяти сразу после завершения транзакции. В противном случае он будет находиться в памяти до закрытия соединения или до явного удаления курсора пользователем. При включении этого параметра мы проигрываем в скорости выполнения пользователем некоторых операций, зато экономим ресурсы сервера. Этот параметр можно настроить на уровне отдельного сеанса при установке соединения.

q      CURSOR_DEFAULT — для этого параметра можно использовать два значения: LOCAL и GLOBAL (по умолчанию установлено значение GLOBAL). Он определяет, курсоры какого типа будут создаваться по умолчанию: локальные (видимые только на уровне конкретного пакета, триггера, хранимой процедуры) или глобальные (видимые на уровне всего подключения). Какое значение выбирать в каждом конкретном случае — полностью зависит от разработчиков. Самим же разработчикам рекомендуется не полагаться на значение этого параметра, а явно определять в своем коде курсоры нужного типа.

q      DB_CHAINING — этот параметр определяет, будет ли в этой базе данных разрешено участие в цепочках владения (chaining ownership) за пределами баз данных. По умолчанию установлено значение OFF — такое участие запрещено. Цепочки владений — это ситуация, которая возникает, когда один и тот же пользователь владеет и главным объектом (например, таблицей), и производным (например, представлением, которое обращается к этой таблице). За счет цепочек владения такой пользователь, предоставляя другому пользователю права на представление, тем самым неявно предоставляет тому права на работу с данными таблицы через это представление.

q      NUMERIC_ROUNDABORT — если при вычислении в рамках запроса происходит потеря точности, и значение этого параметра установлено в ON, то возникает ошибка. По умолчанию в SQL Server для этого параметра используется значение OFF. Для возможности работы с индексированными представлениями и индексами для вычисляемых столбцов значение этого параметра должно быть установлено в OFF (а не ON, как для предыдущих параметров!).

q      PAGE_VERIFY — этот параметр призван заменить параметр TORN_PAGE_DETECTION в предыдущих версиях SQL Server (параметр TORN_PAGE_DETECTION оставлен для обратной совместимости, но пользоваться им уже не рекомендуется). PAGE_VERIFY определяет режим обнаружения ошибок ввода/вывода при работе со страницами базы данных. Обычно такие ошибки возникают по двум причинам:

·                проблемы с диском (контроллером, драйвером контроллера и т. п.)

·                в процессе записи в базу данных отключилось питание. SQL Server работает со страницами размером 8 Кбайт, а операционная система производит ввод/вывод обычно блоками по 512 байт. При отключении питания вполне может сложиться ситуация, когда страница в базе данных записана только частично. При обнаружении такой страницы подключение, которое к ней обращалось, автоматически закрывается, а в журнал событий записывается ошибка с кодом 824.

Для параметра PAGE_VERIFY предусмотрено три значения.

·                CHECKSUM — это значение установлено для всех пользовательских баз данных по умолчанию. При использовании этого значения при каждом изменении для страницы будет рассчитываться контрольная сумма и записываться в заголовок страницы. Этот режим наилучшим образом выявляет большинство проблем со страницами баз данных (особенно дисковые проблемы), однако у него есть два недостатка: повышенный расход ресурсов по сравнению с двумя другими вариантами и менее качественное, чем при значении TORN_PAGE_DETECTION, обнаружение проблем, возникающих при неполной записи страниц во время отключения питания.

·                TORN_PAGE_DETECTION — вместо контрольной суммы используется контрольный бит для каждого из блоков (размером 512 Байт) страницы данных. Такой режим использует меньшее количество ресурсов и позволяет лучше, чем режим CHECKSUM, обнаруживать ошибки неполной записи страниц. Однако при использовании этого режима все остальные ошибки обнаруживаются хуже. Этот режим по умолчанию установлен только для базы данных master (и изменить его для этой базы данных нельзя).

·                NONE — в этом режиме не будут использоваться ни контрольные суммы, ни контрольные биты. Обнаружение проблемных страниц будет затруднено, зато вы выиграете в производительности. Этот режим рекомендуется использовать только тогда, когда базу данных при необходимости можно будет легко воссоздать (например, информация в эту базу данных поступает при помощи репликации).

q      QUOTED_IDENTIFIER — этот параметр определяет, можно ли использовать двойные кавычки для имен объектов (таблиц, столбцов и т. п.). Обычно такая необходимость возникает, если используется нестандартное имя объекта (например, состоящее из двух слов с пробелом). Однако в стандарте ANSI SQL для таких случаев предусмотрены квадратные скобки, которыми и рекомендуется пользоваться.

По умолчанию для этого параметра в SQL Server 2005 установлено значение ON — использовать двойные кавычки можно. Подключения по OLE DB и ODBC автоматически устанавливают значение для этого параметра на уровне сеанса в ON. Значение ON также необходимо для работы с индексированными представлениями или индексами для вычисляемых столбцов.

q      RECURSIVE_TRIGGERS — этот параметр определяет, могут ли триггеры, настроенные для таблицы, своими действиями вызывать повторное срабатывание самих себя. По умолчанию для этого параметра установлено значение OFF, т. е. не могут. Однако для вашей таблицы может быть настроена целая система триггеров, которые могут вызывать срабатывание друг друга не напрямую. Чтобы запретить и такой вариант, нужно установить значение серверного параметра NESTED TRIGGERS.

q      TRUSTWORTHY — этот параметр определяет, разрешается ли объектам данной базы (представлениям, пользовательским функциям, хранимым процедурам) обращаться к объектам за пределами данной базы данных (например, к таблицам в другой базе данных) в режиме имперсонации (другое название этого режима — делегирование). В режиме имперсонации при обращении к внешнему объекту для него передается информация об учетной записи того пользователя, который подключился к вашей базе данных. Получается, что права пользователя как бы "проходят" через вашу базу данных. В целях безопасности такой режим работы в SQL Server 2005 по умолчанию отключен на уровне базы данных (параметр TRUSTWORTHY установлен в OFF).

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 
© 2004-2016, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru