авторефераты диссертаций БЕСПЛАТНАЯ БИБЛИОТЕКА РОССИИ

КОНФЕРЕНЦИИ, КНИГИ, ПОСОБИЯ, НАУЧНЫЕ ИЗДАНИЯ

<< ГЛАВНАЯ
АГРОИНЖЕНЕРИЯ
АСТРОНОМИЯ
БЕЗОПАСНОСТЬ
БИОЛОГИЯ
ЗЕМЛЯ
ИНФОРМАТИКА
ИСКУССТВОВЕДЕНИЕ
ИСТОРИЯ
КУЛЬТУРОЛОГИЯ
МАШИНОСТРОЕНИЕ
МЕДИЦИНА
МЕТАЛЛУРГИЯ
МЕХАНИКА
ПЕДАГОГИКА
ПОЛИТИКА
ПРИБОРОСТРОЕНИЕ
ПРОДОВОЛЬСТВИЕ
ПСИХОЛОГИЯ
РАДИОТЕХНИКА
СЕЛЬСКОЕ ХОЗЯЙСТВО
СОЦИОЛОГИЯ
СТРОИТЕЛЬСТВО
ТЕХНИЧЕСКИЕ НАУКИ
ТРАНСПОРТ
ФАРМАЦЕВТИКА
ФИЗИКА
ФИЗИОЛОГИЯ
ФИЛОЛОГИЯ
ФИЛОСОФИЯ
ХИМИЯ
ЭКОНОМИКА
ЭЛЕКТРОТЕХНИКА
ЭНЕРГЕТИКА
ЮРИСПРУДЕНЦИЯ
ЯЗЫКОЗНАНИЕ
РАЗНОЕ
КОНТАКТЫ


Pages:     | 1 |   ...   | 23 | 24 || 26 | 27 |   ...   | 33 |

«Е.Мамаев MS SQL SERVER 2000 Книга посвящена одной из самых мощных и популярных современных систем управления базами данных - Microsoft SQL Server 2000. ...»

-- [ Страница 25 ] --

По умолчанию Enterprise Manager предлагает создать для базы данных единст венный файл данных, о чем свидетельствует наличие одной строки в таблице Database files. Если необходимо внести дополнительные файлы, достаточно опи сать их в этой таблице. Если какой-то файл был указан ошибочно, то для его удаления достаточно нажать кнопку Delete.

( Замечание ) Заметим, что описание файла в таблице Database files не приводит сразу же к его созданию. Файлы будут образованы только после нажатия кнопки ОК.

Помимо сведений, указываемых в таблице Database files, файлы базы данных имеют дополнительные свойства, такие как максимальный размер и шаг при роста. Управление этими свойствами осуществляется с помощью группы эле ментов управления File properties, расположенной в нижней части вкладки Data Files. Управление свойствами осуществляется персонально для каждого файла.

Центральную роль при конфигурировании дополнительных свойств файла игра ет флажок Automatically grow file. Установка этого флажка конфигурирует файл для разрешения автоматического увеличения размера. Если же флажок сброшен, то все остальные элементы управления группы File properties будут недоступны.

С помощью переключателя File growth контролируется величина, на которую будет увеличиваться размер файла:

Глава 20. Работа с базой данных • In megabytes — в этом случае указывается конкретное количество мегабайт, на которое будет увеличиваться файл;

• By percent — этот вариант позволяет задавать шаг приращения в виде про цента от первоначального размера файла. По умолчанию переключатель сто ит именно в этом положении и предлагается шаг приращения, равный 10%.

В правой же части вкладки расположен переключатель Maximum file size, с по мощью которого можно определить, будет ли ограничиваться максимальный размер файла или нет:

О Unrestricted file growth. При установке переключателя в это положение, также используемое по умолчанию, максимальный размер файла не ограничивает ся. Он может увеличиваться до тех пор, пока не займет все свободное про странство на диске.

О Restricted file growth (MB). В этом случае необходимо указать максимальное количество мегабайт, до которого будет выполняться увеличение размера файла.

На этом работа со вкладкой Data Files заканчивается. Перейдем к рассмотрению работы со вкладкой Transaction Log (рис. 20.5), которая предназначена для управления файлами журнала транзакций.

Рис. 20.5. Окно Database Properties, вкладка Transaction Log 906 Часть /У. Разработка и сопровождение баз данных _^ Как видно из рисунка, вкладка Transaction Log в значительной степени напомина ет вкладку Data Files. Единственное различие между ними состоит в том, что при определении файлов журнала транзакций нельзя работать с группами файлов.

После того, как все файлы базы данных будут определены, а также указано имя базы данных и сопоставление, остается только нажать кнопку ОК. После этого Enterprise Manager приступит к непосредственному созданию базы данных. Для этого он сгенерирует код команды CREATE DATABASE на основе введенных поль зователем значений и выполнит его. На этом рассмотрение создания базы дан ных средствами Enterprise Manager можно считать оконченным.

Использование мастера Create Database Wizard К настоящему моменту мы рассмотрели создание базы данных двумя методами из трех — с помощью средств Transact-SQL и с использованием Enterprise Man ager. Данный же раздел будет посвящен рассмотрению самого простого метода создания базы данных, который могут использовать даже те пользователи, кото рые имеют минимум знаний. Этот метод подразумевает использование мастера Create Database Wizard.

Запуск мастера можно выполнить с помощью окна Select Wizard, открыть кото рое можно с помощью кнопки Run a Wizard, имеющейся в панели инструментов Enterprise Manager. Окно содержит список практически всех мастеров, имею щихся в распоряжении пользователя. Нужный нам мастер находится в папке Database.

Первое окно мастера содержит перечень данных, которые необходимо ввести в окнах мастера. Никаких элементов управления, имеющих непосредственное от ношение к созданию базы данных, в первом окне мастера нет. Поэтому можно смело переходить к следующему окну.

Второе окно мастера имеет название Name the Database and Specify its Location (рис. 20.6) и содержит следующие элементы управления:

О Database name. В этом поле необходимо указать имя, которое будет иметь база данных.

О Database file location. С помощью этого текстового поля необходимо указать каталог, в котором будут размещены файлы данных, определяемые в одном из следующих окон мастера. Отметим, что в указанном каталоге будут распо ложены все файлы данных. Каталог может быть указан как вручную, так и выбран визуально с помощью окна Select a directory for the files, открыть ко торое можно с помощью кнопки Щ, расположенной непосредственно спра ва от поля.

• Transaction log file location. Это поле предназначено для указания каталога, в котором будут размещены все файлы журнала транзакций. В принципе, для размещения файлов журнала транзакций может быть указан тот каталог, что Глава 20. Работа с базой данных и для размещения файлов данных. То есть значения в этом и предыдущем поле могут совпадать.

Рис. 20.6. Окно Name the Database and Specify its Location мастера Create Database Wizard По умолчанию предлагается разместить файлы данных и журнала транзакций в ка талогах, указанных на вкладке Database Settings (см. рис. 8.9) окна свойств серве ра, соответственно, в полях Default data directory и Default log directory.

После того, как будет указано имя создаваемой базы данных, а также размеще ние файлов данных и журнала транзакций, можно переходить к очередному ок ну мастера, которое называется Name the Database Files (рис. 20.7). С помощью этого окна определяется список файлов данных.

Набор файлов формируется с помощью таблицы Database files, которая имеет всего два столбца — File Name и Initial Size (MB), с помощью которых соответ ственно определяется имя файла и его начальный размер. Указанное в столбце File Name значение станет использоваться и в качестве логического, и в качестве физического имени файла базы данных. Все файлы данных будут расположены в одном и том же каталоге, который был указан в поле Database file location предыдущего окна мастера.

Как видно, в окне Name the Database Files формируется только список файлов.

Однако в этом окне не указывается ни возможность автоматического увеличе ния файла, на максимальный размер, ни шар прироста. Эти параметры конфи Часть IV. Разработка и сопровождение баз данных гурируются с помощью следующего окна мастера, имеющего имя Define the Database File Growth (рис. 20.8).

Рис. 20.7. Окно Name the Database Files мастера Create Database Wizard Рис. 2 0. 8. Окно Define the Database File Growth мастера Create Database Wizard Глава 20. Работа с базой данных (~ Замечание ^ Мастер не позволяет определить принадлежность файлов данных к той или иной группе файлов, как, впрочем, и определять собственно группы файлов. Все файлы данных будут включены в первичную группу файлов (primary file group).

В верхней части окна находится переключатель, с помощью которого контроли руется сама возможность автоматического увеличения размера файлов сервером.

Этот переключатель может быть установлен в одно из положений:

• Do not automatically grow the database files — автоматическое увеличение раз мера файла запрещено;

П Automatically grow the database files — в этом случае сервер будет самостоя тельно осуществлять увеличение размера файлов базы данных.

( Замечание ^ Отметим, что мастер не позволяет контролировать возможность роста каждого файла в отдельности, как и управлять параметрами увеличения индивидуально ка ждого файла данных. Взамен мастер предлагает указать параметры, которые будут использоваться для всех файлов.

При установке переключателя в последнее положение становятся доступными несколько дополнительных элементов управления:

• Grow the files in megabytes (MB). Прирост файлов будет задан как абсолютное значение в мегабайтах. Указанное значение станет использоваться для всех файлов.

• Grow the files by percent. Величина, на которую будет увеличиваться размер каждого из файлов, задается как процент от его первоначального размера.

О Maximum file size. С помощью этого переключателя указывается, будет ли ограничиваться максимальный размер файла:

• Unrestricted file growth — размер файла не ограничивается;

• Restrict the file growth to MB — указывается количество мегабайт, до ко торого будет разрешено увеличение любого файла данных.

( Замечание ) Следует быть внимательным при конфигурировании значений в окне Define the Da tabase File Growth. Дело в том, что указываемые значения относятся ко всем фай лам. Например, определяя максимальный размер файлов, следует следить за тем, чтобы он не был меньше размера какого-нибудь файла, а также позволял выполнять увеличение размера файла.

После того, как параметры автоматического увеличения файлов данных будут определены, можно переходить к следующему окну мастера, называющемуся Name the Transaction Log Files (рис. 20.9).

Часть IV. Разработка и сопровождение баз данных Рис. 20.9. Окно Name the Transaction Log Files мастера Create Database Wizard Рис. 20.10. Окно Define the Transaction Log File Growth мастера Create Database Wizard Как видно из рисунка, окно мастера Name the Transaction Log Files весьма на поминает окно Name the Database Files (см. рис. 20.7), рассмотренное ранее.

Однако если последнее использовалось для определения файлов данных, то ок Глава 20. Работа с базой данных но Name the Transaction Log Files предназначено для определения файлов жур нала транзакций. Мы уже рассматривали работу с элементами управления, имеющимися в окне, поэтому перейдем к следующему окну мастера.

Окно Define the Transaction Log File Growth (рис. 20.10) позволяет конфигуриро вать автоматическое увеличение размера файлов журнала транзакций. Работа с этим окном практически не отличается от работы с окном Define the Database File Growth, описанным ранее.

На этом конфигурирование базы данных заканчивается. Следующее же окно мастера будет последним. В нем приведена информация о свойствах создавае мой базы данных. Например, при вводе в окна мастера указанных на рисунках значений в последнем окне будет приведена следующая информация:

The name of the database is Administrator Database.

The database files will be placed in the directory G:\Program FilesXMicrosoft SQL Server\MSSQL$TRELON\data.

The transaction log files will be placed in the directory G:\Program FilesVMicrosoft SQL Server\MSSQL$TRELON\data.

The database files are:

Administrator Database_Data, size Administrator Database_Sec, size The database files will automatically grow by 10 percent.

The database files' growth is unrestricted.

The transaction log files are:

Administrator Database_Log, size The transaction log files will automatically grow by 5 Mb.

The transaction log files' growth is restricted to 50 Mb.

После нажатия кнопки Finish мастер сгенерирует на основе введенной в окнах информации код команды CREATE DATABASE И попытается выполнить его. В слу чае успешного его выполнения будет создана новая база данных.

Управление свойствами базы данных Предыдущие несколько разделов были посвящены описанию различных мето дов создания базы данных. Когда же база данных успешно создана, можно ор ганизовывать в ней различные объекты, пользователей, роли, закачивать данные и выполнять множество других операций. Одной из этих операций является управление свойствами базы данных.

Каждая база данных характеризуется множеством свойств, установка которых в то или иное состояние может значительно изменить поведение сервера при ра 30 Зш. д12 Часть IV. Разработка и сопровождение баз данных боте с этой базой данных. Этот раздел будет посвящен подробному рассмотре нию управления различными свойствами базы данных, многие из которых бы вают весьма полезны. Непосредственно после создания база данных конфигури руется таким образом, что с ней сразу же можно начинать работать Управление базой данных можно осуществлять как средствами Transact-SQL, так и с помощью Enterprise Manager. К сожалению, в составе SQL Server нет мастера конфигурирования базы данных, однако и использование Enterprise Manager не представляет больших сложностей. Мы рассмотрим отдельно оба указанных метода управления базой данных.

Transact-SQL Хотя создание базы данных и выполняется достаточно просто, тем не менее, база данных является довольно сложным компонентом, поэтому и управление ею осуществляется с различных сторон. В следующих разделах будет рассмотре но использование различных средств, предоставляемых Transact-SQL для управ ления базами данных.

Процедура sp_dboption В общем случае управление свойствами базы данных предлагается выполнять с помощью системной хранимой процедуры s p d b o p t i o n. Она позволяет про сматривать и изменять основные свойства базы данных. Рассмотрим синтаксис указанной хранимой процедуры:

sp_dboption [ [ gdbname = ] 'database' ] [, [ Soptname = ] 'option_name'] [, [ @optvalue = ] 'value'] Глава 20. Работа с базой данных arithabort auto create statistics auto update statistics autoclose autoshrink concat null yields null cursor close on commit dbo use only default to local cursor merge publish numeric roundabort offline published quoted identifier read only recursive triggers select into/bulkcopy single user subscribed torn page detection trunc. log on chkpt.

Однако мы рассматриваем хранимую процедуру s p d b o p t i o n как средство управления опциями конфигурации базы данных, что требует знания назначе ния параметров процедуры. Рассмотрим же их:

П [Sdbname =] 'database' С помощью этого параметра указывается имя базы данных, о которой необ ходимо получить информацию.

П [@optname =] 'option_name' Данный параметр предназначен для указания имени опции базы данных, со стояние которой необходимо просмотреть или изменить. Список всех воз можных значений этого параметра как раз и выводится при запуске процеду ры sp_dboption без указания параметров. Назначение же каждого из параметров приведено в табл. 20.1.

О [Soptvalue =] 'value' Параметр применяется при изменении состояния той или иной опции. Каж дая опция конфигурации базы данных может быть либо установлена, либо сброшена. В соответствии с этим параметр @optvaiue может принимать либо значения TRUE ИЛИ ON, ЧТО соответствует установленной опции, либо значе ния FALSE или OFF, что приведет к сбросу опции.

Таблица 20.1. Опции конфигурации базы данных Параметр Описание ANSI n u l l d e f a u l t Установка опции предписывает серверу во время создания таблицы при принятии решения о поддержке столбцом воз можности хранения значений NULL следовать правилам, оп ределенным стандартом ANSI SQL- 30* 914 Часть IV. Разработка и сопровождение баз данных Таблица 20.1 (продолжение) Описание Параметр При установленной опции если логическое условие содержит ANSI nulls значение NULL, TO всегда будет возвращаться значение UNKNOWN, а не TRUE ИЛИ FALSE. При сброшенной опции TRUE будет возвращено в случае, когда оба сравниваемых выра жения равны NULL. В противном случае возвращается FALSE Определяет поведение сервера при вставке в столбец значе ANSI padding ния, не полностью заполняющего его. При установленной опции сервер дополняет столбец конечными нулями или про белами, а при сброшенной опции, наоборот, осуществляет удаление конечных нулей и пробелов ANSI warnings Управляет выдачей сообщений при возникновении ошибок, таких, например, как деление на ноль. Когда деление на ноль происходит при установленной опции, сервер будет выдавать сообщение об ошибке. При сброшенной же опции сообщение об ошибке появляться не будет arithabort Управляет прерыванием запросов или транзакций при воз никновении ошибок, таких как деление на ноль или перепол нение. При установленной опции в случае возникновения ошибки производится откат транзакции. Когда же опция сброшена, возвращается значение NULL И выполнение за проса или транзакции продолжается. Используя совместно с предыдущей опцией, можно контролировать выдачу сообще ний об ошибке auto create Установка опции разрешает серверу автоматическое созда statistics ние статистики для таблиц базы данных. Статистика исполь зуется оптимизатором запросов для построения наиболее оптимальных планов исполнения запросов, пакетов, храни мых процедур и т. д.

auto update Установка опции разрешает серверу автоматическое обнов statistics ление статистики для таблиц базы данных. Автоматическое обновление статистики позволяет оптимизатору запросов генерировать более эффективные планы исполнения, но тре бует определенных затрат процессорного времени на анализ информации autoclose При установленной опции сервер будет выгружать базу дан ных из памяти в случае завершения работы всех пользовате лей, работавших с этой базой данных. Это позволяет эконо мить оперативную память, но при повторном обращении к базе данных потребуется некоторое время на ее загрузку в память autoshrink При установленной опции сервер будет периодически выпол нять автоматическое уменьшение размера файлов данных, возвращая в операционную систему неиспользуемое про странство Глава 20. Работа с базой данных Таблица 20.1 (продолжение) Описание Параметр concat null yields При установленной опции в случае конкатенации (объеди null нения) строки со значением NULL будет возвращено значе ние NULL. При сброшенной же опции значение NULL будет рассматриваться как пустая строка cursor close on Установка опции предписывает серверу автоматически за commit крывать открытые курсоры в случае завершения транзакции (как фиксирования, так и отката). Когда же опция сброшена, в случае отката транзакции будет осуществляться закрытие курсора (кроме курсоров S T A T I C и I N S E N S I T I V E ) dbo use only Установка этой опции переводит базу данных в режим ис пользования ее только владельцем базы данных. Этот режим используется для выполнения некоторых административных задач, требующих монопольного использования базы данных default to local При установленной опции если явно не указан тип курсора, то cursor он будет локальным (LOCAL). При сброшенной опции будет создаваться глобальный курсор (GLOBAL) merge publish Установка опции разрешает использовать базу данных в реп ликации сведением numeric roundabort Определяет поведение сервера при попытке задать пере менной или столбцу значение с более высокой точностью, чем допускает тип данных. Установка опции предписывает генерировать сообщение об ошибке, тогда как при сброшен ной опции выполняется округление, и ошибка не выдается.

Прерывание же запроса при установленной опции зависит от состояния О Ц И a r i t h a b o r t ПИ offline При установленной опции база данных недоступна для работы published Установка опции разрешает работу с ней подсистеме репли кации quoted identifier Определяет поведение двойных кавычек. При установленной опции двойные кавычки рассматриваются как ограничители имени объекта, т. е. ведут себя как квадратные скобки. При сброшенной опции двойные кавычки воспринимаются как ограничители обычных строк, т. е. ведут себя как одинарные кавычки read only Устанавливая опцию, можно перевести базу данных в режим "только для чтения". В этом режиме разрешается только чте ние данных, что позволяет не использовать подсистему бло кирования, что положительно сказывается на выполнении пользовательских запросов recursive triggers Контролирует возможность вызова триггера самим собой (прямая рекурсия) или из другого триггера (косвенная рекур сия). Установленная опция разрешает такую возможность, тогда как сброшенная — нет Некоторые опции, приведенные в табл. 20.1, могут контролироваться не только на уровне базы данных, но и на уровне сервера и соединения. При этом значе ние, установленное на уровне сервера, перекрывается значением, установлен ным на уровне базы данных, которое, в свою очередь, может быть перекрыто значением, определенным на уровне соединения, хранимой процедуры, пакета команд, триггера или функции. Примером такой опции может являться опция quoted identifier.

Глава 20. Работа с базой данных ;

The following options are set:

gig Часть IV. Разработка и сопровождение баз данных самой базы данных. Лучше не экспериментировать с непосредственным изме нением значений в системных таблицах, а воспользоваться специальными сред ствами. Лучшим решением будет вызов системной хранимой процедуры sprenamedb, специально предназначенной для изменения имен баз данных:

sp_renamedb [ Sdbname = ] ' old_name', [ gnewname = ] 'new_name' С помощью первого параметра процедуры, указывается имя базы данных, кото рую предполагается переименовать. Имя же, которое должна иметь база данных после переименования, указывается с помощью второго параметра.

В качестве примера рассмотрим переименование базы данных pubs в superPubs:

EXEC sp_renamedb ' p u b s ', 'SuperPubs' Заметим, что хранимая процедура sprenamedb выполняет переименование базы данных не путем изменения данных в системных таблицах, а путем вызова ко манды ALTER DATABASE с параметром MODIFY NAME. Таким образом, универсаль ным средством изменения имени базы данных является команда ALTER DATABASE. Рассмотрим, каким же образом осуществляется переименование базы данных с помощью этой команды. Мы не будет приводить весь синтаксис ко манды ALTER DATABASE, а ограничимся только той частью, которая связана с изменением имени базы данных:

ALTER DATABASE d a t a b a s e MODIFY NAME = new_dbname Как нетрудно догадаться, вместо параметра database должно быть подставлено текущее имя базы данных, тогда как новое имя указывается с помощью пара метра newdbname. Приведем пример использования команды:

ALTER DATABASE p u b s MODIFY NAME = S u p e r P u b s Передача прав владения базой данных Ранее уже говорилось, что каждая база данных имеет своего владельца. Обычно владельцем базы данных является пользователь, который создал ее. В базе дан ных ее владелец представлен пользователем dbo (database owner), который име ется в каждой базе данных. Этот пользователь, как и любой другой пользователь базы данных (кроме пользователя guest), связан с определенной учетной запи сью. При создании базы данных происходит автоматическое связывание пользо вателя базы данных dbo с учетной записью пользователя, создавшего базу дан ных. Владелец базы данных имеет максимальные права в базе данных и может выполнять практически любые действия.

Если вдруг понадобилось изменить владельца базы данных (например, при увольнении сотрудника, создавшего базу данных), то для этого необходимо ис пользовать специальную хранимую процедуру. Нельзя удалить пользователя dbo, а затем заново создать его, связав при этом с другой учетной записью. Это свя зано с тем, что пользователь dbo должен всегда существовать в базе данных.

Глава 20. Работа с базой данных.

Итак, изменение владельца, или передача прав владения базой данных, осуще ствляется с помощью хранимой процедуры spchangedbowner, имеющей син таксис:

sp_changedbowner [ @loginame = ] 'login' [, [ @ a = ] remap_alias_flag ] mp Замечание Изменять владельца базы данных могут только члены фиксированной роли сервера sysadmin или пользователь, являющийся текущим владельцем базы данных или членом роли db_owner.

Данная хранимая процедура должна выполняться в контексте той базы данных, владельца которой необходимо изменить. С помощью параметра gioginame ука зывается имя учетной записи, связанной с пользователем dbo и которой, таким образом, будут переданы права владения базой данных. Отметим, что нельзя указывать учетную запись, уже отображаемую в одного из пользователей базы данных. При необходимости нужно предварительно удалить из базы данных со ответствующего пользователя.

С помощью параметра @тар можно управлять отвязыванием от пользователя dbo учетной записи старого владельца базы данных. Если для параметра указывается значение True, то связь не нарушается и таким образом база данных будет иметь двух владельцев, представленных одним и тем же пользователем. Если же для параметра @тар указывается значение False, то связь старой учетной записи с пользователем dbo будет удалена.

В качестве примера рассмотрим передачу прав владения базой данных pubs учетной записи sa:

USE pubs EXEC sp_changedbowner ' s a ', 'True' Просмотреть полученный результат можно с помощью хранимой процедуры s p h e i p i o g i n s, выводящей информацию об отображении учетной записи в пользователей базы данных, а также о том, членом каких ролей базы данных является учетная запись:

E E sp_helplogins 'sa XC Будет получен следующий результат:

LoginName SID DefDBName DefLangName AUser ARemote sa YES yes 0x01 master us english (1 row(s) affected) LoginName DBName UserName UserOrAlias sa master db owner MemberOf sa dbo master User д20 Часть IV. Разработка и сопровождение баз данных sa model db owner Memberof dbo User sa model MemberOf db owner sa msdb dbo User sa msdb MemberOf db owner sa Northwind dbo User sa Northwind MemberOf sa db_owner pubs dbo User sa pubs MemberOf sa db owner tempdb dbo User sa tempdb (12 row(s) affected) Получение информации о базе данных При работе с базой данных средствами Transact-SQL часто бывает необходимо получить о ней различную информацию. Для этого можно использовать храни мую процедуру s p h e i p d b, имеющую синтаксис:

sp_helpdb [ [ @dbname= ] 'name' ] С помощью единственного параметра процедуры указывается имя базы данных, о которой необходимо получить информацию. Однако этот параметр не являет ся обязательным и может быть с успехом опущен. При этом будет выведена ин формация не о конкретной базе данных, а обо всех базах данных, имеющихся на сервере. Информация о базах данных выводится в следующих столбцах:

П name — имя базы данных;

• d b s i z e — текущий размер базы данных, вычисляющийся как сумма разме ров всех файлов (в т. ч. и журнала транзакций), входящих в базу данных;

• owner — имя учетной записи, являющейся владельцем базы-данных;

• dbid — идентификационный номер базы данных. Это же значение возвраща ется функцией DB_ID(dbname);

О created — дата создания базы данных;

• s t a t u s — текущий статус базы данных, записанный в текстовом виде и фор мирующийся на основе опций конфигурации базы данных, устанавливаемых с помощью хранимой процедуры s p d b o p t l o n, описанной ранее;

О c o m p a t i b i l i t y l e v e l — уровень совместимости базы данных.

При использовании хранимой процедуры s p h e i p d b для получения сведений о конкретной базе данных помимо указанной информации выводится также ин формация и о файлах базы данных. Эта информация отображается в следующих столбцах:

О name — логическое имя файла;

• f i l e i d — идентификационный номер файла, уникальный в пределах базы данных;

Глава 20. Работа с базой данных П filename — физическое имя файла, включающее собственно имя файла в операционной системе, а также полный путь к нему;

П f ilegroup — имя группы файлов, к которой принадлежит файл;

П size — текущий размер файла;

П maxsize — максимальный размер файла или unlimited, если для файла не было установлено ограничения на максимальный размер;

О growth — шаг прироста. Может указываться как в абсолютном, так и в отно сительном выражении;

• usage — указывается тип файла. Значение data only соответствует файлу данных, тогда как значение log only — файл журнала транзакций.

Помимо получения информации обо всех файлах базы данных, также можно получить информацию только об отдельном файле. Это можно выполнить с по мощью хранимой процедуры sp_heipf i l e, имеющей следующий синтаксис:

sp_helpfile [ [ Sfilename = ] 'name' ] Процедура s p h e i p f i l e возвращает информацию о файлах текущей базы дан ных. Если процедура вызывается без параметров, то будет возвращена информа ция обо всех файлах, из которых состоит база данных. Если же необходимо по лучить сведения лишь об одном файле, то надо указать его имя с помощью параметра Sfiiename. Набор столбцов, в которых выводится информация о файлах, а также их назначение полностью соответствуют столбцам, возвращае мым процедурой s p h e i p d b и рассмотренным выше.

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

sp_helpfilegroup [ [ @filegroupname = ] 'name' J Если процедура вызывается без параметров, то будет возвращена информация обо всех группах файлов, определенных в текущей базе данных. Тем не менее, можно заставить процедуру возвращать информацию лишь о конкретной группе файлов.

Для этого достаточно указать ее имя с помощью параметра @f ilegroupname.

При получении сведений обо всех группах информация выдается в следующих столбцах:

О groupname — И Я группы;

М П groupid — идентификационный номер группы;

О f iiecount — количество файлов, входящих в группу.

Когда же информация предоставляется о конкретной группе файлов, то допол нительно выводится второй набор данных, имеющий следующие столбцы:

• f i i e i n g r o u p — логическое имя файла, входящего в группу;

О f i l e i d — идентификационный номер файла, уникальный в пределах базы данных;

Q22 Часть IV. Разработка и сопровождение баз данных О filename — физическое имя файла, включающее собственно имя файла в операционной системе, а также полный путь к нему;

• size — текущий размер файла;

• maxsize — максимальный размер файла или unlimited, если для файла не было установлено ограничения на максимальный размер;

• growth — шаг прироста. Может указываться как в абсолютном, так и в отно сительном выражении.

В качестве примера рассмотрим получение информации о первичной группе файлов базы данных pubs:

USE pubs EXEC sp_helpfilegroup 'PRIMARY' Будет получен следующий результат:

groupname groupid filecount PRIMARY 1 file_in_group fileid filename size maxsize growth pubs 1...\data\pubs.mdf 1792 KB Unlimited 10% Глава 20. Работа с базой данных С помощью первого параметра указывается имя базы данных, о свойстве кото рой необходимо получить информацию. Для указания же имени самого свойст ва используется второй параметр. Все возможные варианты второго параметра, а также краткое пояснение к ним приведены в табл. 20.2.

Таблица 20.2. Опции конфигурации базы данных Имя опции Назначение Часть IV. Разработка и сопровождение баз данных Таблица 20.2 (окончание) В качестве примера рассмотрим получение информации о режиме доступа поль зователей к базе данных pubs:

SELECT DATABASEPROPERTYEX('pubs', 'UserAccess') Будет возвращен следующий результат:

Глава 20. Работа с базой данных Результат будет таким: database size unallocated space database_name 2.50 MB pubs 0.52 MB index _size data reserved unused 680 KB 456 KB 1264 KB 128 KB Однако помимо получения сведений в целом о базе данных, также можно полу чить информацию и о конкретной таблице базы данных. Для этого имя интере сующей таблицы должно быть указано с помощью параметра gobjname. Попро буем получить информацию о таблице authors:

EXEC sp_spaceused 'authors' (11 row(s) affected) D C execution completed. If D C printed error messages, contact your sys BC BC tem administrator.

926 Часть IV. Разработка и сопровождение баз данных В столбце Database Name указывается имя базы данных. В столбце Log s i z e (мв) выводится общий объем журнала транзакций соответствующей базы дан ных. Процент же использования журнала транзакций отображается в столбце Log Space used (%). Последний столбец всегда содержит значение 0.

Уменьшение размера базы данных Как уже не раз было сказано, база данных может автоматически увеличиваться при добавлении в нее данных. Однако иногда бывает необходимо выполнить и обратную операцию — уменьшение базы данных (shrinking database). Чаще всего это требуется после удаления значительной части информации из базы данных.

Уменьшение размера базы данных выполняется за счет уменьшения размера отдельных файлов, из которых она состоит. При этом уменьшение размера мо жет происходить не только за счет файлов данных, но и за счет файлов журнала транзакций. Однако, прежде чем станет возможным уменьшение размера фай лов журнала транзакций, необходимо удалить из них информацию обо всех не активных транзакциях. Эту операцию можно сравнить с удалением ненужных данных из таблиц.

Удаление из журнала транзакций информации о неактивных транзакциях назы вается усечением журнала транзакций (truncate transaction Jog).

(~ Замечание ) После выполнения усечения журнала транзакций становится невозможным созда ние резервной копии журнала транзакций, т. к. цепочка транзакций становится разо рванной. Отметим, что усечение журнала транзакций осуществляется автоматиче ски при создании резервной копии журнала транзакций. Подробно резервное копирование было рассмотрено в главе 13.

Усечение журнала транзакций выполняется с помощью команды BACKUP LOG, которая имеет синтаксис:

BACKUP LOG { database_name I @database_name_var } { [ WITH { NO_LOG I TRUNCATE_ONLY ) ] } С помощью параметра databasename указывается имя базы данных, усечение журнала транзакций которой необходимо выполнить. Помимо непосредствен ного указания имени базы данных разрешается использование локальной пере менной, которая будет содержать имя базы данных. Имя этой переменной ДОЛЖНО быть указано С П М Щ Ю параметра 8database_name_var.

ООЬ После имени базы данных (или переменной, содержащей это имя) приводится ключевое слово WITH, С ПОМОЩЬЮ которого задается действие, необходимое для выполнения. Слова NOLOG И TRUNCATEONLY ЯВЛЯЮТСЯ синонимами и предписы вают выполнить усечение журнала транзакций.

Описанный способ усечения журнала транзакций требует участия администратора.

Однако в SQL Server 2000 имеется возможность и автоматического выполнения усечения журнала транзакций. Для этого достаточно установить для базы данных опцию ' t r u n e, log on c h k p t. ', выполнив для этого следующую команду:

EXEC sp_dboption "database 1, 'trunc. log on chkpt. 1, 'TRUE' Глава 20. Работа с базой данных Вместо значение database необходимо подставить имя конкретной базы дан ных. После установки опции сервер будет выполнять усечение журнала тран закций после каждой операции контрольной точки (checkpoint), которая перио дически выполняется сервером, и целью которой является сброс на диск всех данных, измененных с момента последней операции контрольной точки. Отме тим, что в случае разрешения автоматического усечения журнала транзакций нельзя создавать резервные копии журнала транзакций, т. к. информация о за фиксированных транзакциях постоянно удаляется.

Операция усечения журнала транзакций выполняет только удаление информации о неактивных транзакциях. Однако при этом не производится уменьшение разме ра собственно файлов журнала транзакций. Эта операция должна быть выполнена отдельно. Рассмотрим же, как осуществляется собственно уменьшение физиче ского размера файлов. Эта операция может выполняться на двух уровнях:

• на уровне базы данных с помощью команды DBCC SHRINKDATABASE;

П на уровне отдельного файла с помощью команды DBCC SHRINKFILE.

( Замечание } Указанные команды могут быть использованы как для файлов данных, так и для файлов журнала транзакций.

Для начала рассмотрим уменьшение размера отдельного файла базы данных.

Применяемая для этого команда имеет следующий синтаксис:

DBCC SHRINKFILE ( { file_name | f i l e _ i d ) { (, t a r g e t _ s i z e ) [, ( EMPTYFILE | NOTRUNCATE I TRUNCATEONLY } ] } ) Рассмотрим назначение параметров команды:

П file_name Логическое имя файла базы данных, размер которого предполагается умень шить. Заметим, что команда DBCC SHRINKFILE работает только с текущей ба зой данных. Поэтому, прежде чем выполнять усечение размера базы данных, необходимо переключиться в нужную базу данных (например, с помощью команды U E database).

S П file_id Этот параметр, как и предыдущий, предназначен для указания файла, размер которого необходимо уменьшить. Однако в данном случае файл указывается не по имени, а по идентификационному номеру, который можно получить с помощью функции F i L E i D C f i i e n a m e 1 ). Идентификационные номера файлов также выводятся при просмотре информации о базе данных, что бы ло описано в предыдущем разделе.

( Замечание ^ Напомним, что список файлов базы данных хранится в системной таблице sysfiles, имеющейся в каждой базе данных. В этой таблице указываются физические и логиче ские имена файлов, их размер, шаг прироста и идентификационные номера.

Q28 Часть IV. Разработка и сопровождение баз данных L] target_size * Данный параметр определяет величину, до которой желательно уменьшить размер файла. Если объем информации, хранящейся в файле, меньше ука занного объема, то файл будет уменьшен до указанного размера. В против ном случае новый размер файла будет соответствовать объему хранящейся в нем информации. Отметим, что размер должен задаваться как целое число.

Допускается использование суффиксов. Если параметр t a r g e t s i z e опуска ется, то сервер будет пытаться уменьшить размер файла до первоначального размера. Не разрешается уменьшение размера файла меньше первоначаль ного. При необходимости часть данных, расположенная в удаляемой части (в конце файла), будет перенесена в свободное пространство оставляемой части файла (в начале).

• EMPTYFILE При указании этого параметра сервер выполняет полное освобождение файла путем переноса хранящихся в нем данных в другие файлы базы данных. Та кая операция является обязательной, если требуется удалить файл, т. к. сер вер не разрешает удаление файлов, содержащих данные. После выполнения для файла команды DBCC SHRINKDATABASE С параметром EMPTYFILE сервер не будет добавлять в файл данных, и он в любой момент может быть удален с помощью команды ALTER DATABASE REMOVE FILE. Указание параметра tar get_size в этом случае не допускается.

• NOTRUNCATE При задании этой опции сервер выполнит перенесение данных в начало файла в соответствии со значением t a r g e t s i z e, но не будет осуществлять физического уменьшения размера файла. Таким образом, данные смещаются к началу файла. Впоследствии пустая часть файла может быть возвращена операционной системе.

• TRONCATEONLY При указании этого параметра сервер выполняет возвращение системе всего пространства файла, находящегося за последней использованной страницей файла. Однако при этом не производится никакого переноса данных, и зна чение параметра t a r g e t s i z e игнорируется. Рекомендуется предварительно освободить конец файла с применением предыдущего параметра.

Замечание Последовательное выполнение команды DBCC SHRINKDATABASE С параметрами NOTRUNCATE и TRUNCATEONLY равнозначно указанию только параметра target_size.

В качестве примера рассмотрим уменьшение размера файла базы данных pubs до размера 1 Мбайт. Сначала необходимо узнать, какие же файлы имеются в базе данных. Для этого обратимся к таблице sysf l i e s :

USE pubs SELECT f i l e i d, name F O s y s f i l e s RM Глава 20. Работа с базой данных Будет возвращен следующий результат:

fileid name 1 pubs 2 pubs_log (2 row(s) affected) Попытаемся уменьшить файл p u b s l o g :

DBCC SHRINKFILE (2, 1) Будет выдан результат:

Cannot shrink file '2' in database 'pubs' to 128 pages as it only contains 96 pages.

DBCC execution completed. If DBCC printed error messages, contact your sys tem administrator.

Данное сообщение говорит о невозможности уменьшить размер файла, т. к. его размер в настоящее время составляет 96 страниц (768 Кбайт), тогда как мы пы таемся изменить размер до 1 Мбайта (128 страниц).

Попробуем уменьшить размер файла pubs:

DBCC SHRINKFILE ( 1, 1) Будет выдан следующий результат:

Dbld Fileid CurrentSize MinimumSize UsedPages EstimatedPages 5 1 168 80 160 {1 row(s) affected) DBCC execution completed. If DBCC printed error messages, contact your sys tem administrator.

Команда была успешно выполнена. При этом была выдана статистическая ин формация о состоянии файла в следующих столбцах:

П Dbid — идентификационный номер базы данных;

О F i l e i d — идентификационный номер файла;

П CurrentSize — текущий размер файла в страницах;

• MinimumSize — минимально допустимый размер файла в страницах, опреде ляемый первоначальным размером файла;

• UsedPages — количество страниц, занимаемых в настоящее время данными;

• EstimatedPages — рекомендуемое сервером минимальное количество стра ниц, до которого следует уменьшать размер файла.

Мы рассмотрели уменьшение размера отдельного файла с помощью команды DBCC SHRINKFILE. Теперь же обратимся к команде DBCC SHRINKDATABASE. Она дзо Часть IV. Разработка и сопровождение баз данных позволяет уменьшать суммарный размер файлов базы данных. Команда имеет синтаксис:

DBCC SHRINKDATABASE ( database_name [, t a r g e t _ p e r c e n t ] [, { NOTRUNCATE I TRUNCATEONLY } ] ) Рассмотрим назначение и использование параметров команды:

О database_name Имя базы данных, размер которой предполагается уменьшить.

П target_percent Посредством данного параметра определяется процент свободного простран ства, который необходимо оставить в базе данных после выполнения коман ды. Например, если начальный размер всех файлов составляет 100 Мбайт, но только 60 Мбайт из них заполнены данными, то для уменьшения объема не используемого пространства с 40 Мбайт до 20 Мбайт необходимо указать значение 25. Для вычисления размера, до которого необходимо уменьшить файлы, сервер делит используемое пространство на 100 и умножает на ( 1 0 0 + t a r g e t p e r c e n t ). Отметим, что для параметра t a r g e t _ p e r c e n t нельзя указывать значение, превышающее текущий процент свободного пространст ва (для данного примера это 40). Уменьшение размера базы данных выполня ется путем уменьшения размера всех файлов данных, входящих в базу дан ных. Таким образом, команду DBCC SHRINKDATABASE МОЖНО рассматривать как серию команд DBCC SHRINKFILE, параметры которых вычисляются авто матически сервером.

• NOTRUNCATE Указание этого параметра предписывает серверу не производить физического уменьшение размера файлов базы данных, однако данные все же смещаются к началу файлов.

П TRUNCATEONLY Удаляются все данные, расположенные в файле за последней выделенной страницей (точнее экстентом). Никакой оптимизации размещения данных при этом не предпринимается. Значение параметра t a r g e t p e r c e n t игнорируется.

В качестве примера рассмотрим уменьшение объема неиспользуемого простран ства в базе данных Northwind до 20%:

DBCC (Northwind, 20) Будет возвращен следующий результат:

D C execution completed. If D C printed error messages, contact your sys BC BC tem administrator.

Данное сообщение свидетельствует о том, что в ходе выполнения команды не произошло никаких ошибок. Однако, когда размер файлов уменьшается, сервер выдает статистическую информацию об использовании страниц. То, что такой информации не было выдано, свидетельствует о том, что объем свободного про Глава 20. Работа с базой данных странства в базе данных меньше указанного значения. Попытаемся же умень шить объем свободного пространства до 1%:

DBCC SHRINKDATABASE (Northwind, 1) Будет возвращен результат:

Dbld F i l e l d C u r r e n t S i z e MinimumSize UsedPages EstimatedPages 6 1 360 80 352 (1 row(s) a f f e c t e d ) DBCC execution completed. If DBCC p r i n t e d e r r o r messages, c o n t a c t your s y s tem a d m i n i s t r a t o r.

С Замечание ) В столбце UsedPages указывается количество страниц, занимаемое данными. Та ким образом, объем файлов данных (значение в столбце C u r r e n t S i z e ) должен быть равен usedPagesx1,01. В данном случае это составило бы 355,52 (352x1,01).

Однако в столбце C u r r e n t S i z e указано значение 360. Это связано с тем, что про странство в базе данных выделяется экстентами (группами из 8 страниц).

Enterprise Manager Последние1 несколько разделов были посвящены обсуждению управления раз личными свойствами базы данных с помощью средств Transact-SQL. В данном же разделе будет также рассмотрено управление базой данных, но уже средства ми Enterprise Manager.

Управление базовыми свойствами базы данных осуществляется с помощью окна свойств базы данных. Для открытия этого окна достаточно в контекстном меню нужной базы данных выбрать команду Properties.

На рис. 20.11 приведен типичный пример окна свойств базы данных. Как вид но, это окно имеет шесть вкладок, три из которых были доступны в момент создания базы данных. Первая из вкладок (рис. 20.11) традиционно имеет имя General и содержит общую информацию о базе данных. В большей части на вкладке приводятся сведения, возвращаемые системной хранимой процедурой s p h e i p d b. Рассмотрим же, какая информация отображается на вкладке:

П Name — имя базы данных, о которой выводится информация;

• Status — текущий статус базы данных. Возможны значения Normal, Offline, Restoring, Recovering, Suspect, Read Only, Dbo Use Only, Single User Mode;

П Owner — имя учетной записи пользователя, являющегося владельцем базы данных;

П Data created — дата создания базы данных;

П Size —' текущий размер базы данных, являющийся суммой размеров всех файлов базы данных, в т. ч. и файлов журнала транзакций;

Часть IV. Разработка и сопровождение баз данных П Space available — объем свободного пространства в базе данных;

О Number of users — количество пользователей, созданных в базе данных;

• Last database backup — дата последнего создания полной или разностной ре зервной копии базы данных;

• Last transaction log backup — дата последнего создания резервной копии жур нала транзакций;

• Maintenance plan — имя плана сопровождения, обслуживающего базу данных.

План сопровождения создается с помощью мастера Database Maintenance Plan Wizard и может обслуживать одну или более баз данных. Подробно соз дание плана сопровождения было рассмотрено в главе 12;

, П Collation name — имя сопоставления, указанного при создании базы данных.

Ш •ШШ Рис. 2 0. 1 1. Окно свойств базы данных, вкладка General Как видно из рисунка, вкладка General носит чисто информационный характер, предоставляя пользователю различные сведения о базе данных. Никаких дейст вий (например, передачу прав владения базой данных) с помощью этой вкладки выполнить нельзя.

Вторая вкладка окна свойств базы данных носит имя Data Files (рис. 20.12). Эта вкладка доступна и в момент создания базы данных. Работа с вкладкой Data Files Глава 20. Работа с базой данных была рассмотрена при описании создания базы данных. Сейчас же отметим, что, открывая окно свойств созданной базы данных, можно выполнить удаление или добавление файлов данных. При попытке удалить файл, содержащий данные, бу дет выдано сообщение об ошибке. Прежде чем произвести удаление файлов, не обходимо переместить всю имеющуюся в них информацию в другие файлы базы данных. Однако выполнить эту операцию средствами Enterprise Manager нельзя.

Поэтому придется обратиться к средствам Transact-SQL. Перенос информации из файла в другие файлы базы данных был рассмотрен в предыдущем разделе.

Рис. 20.12. Окно свойств базы данных, вкладка Data Files Следующая вкладка называется Transaction Log (рис. 20.13) и предназначена для управления файлами журнала транзакций. Как и предыдущая, эта вкладка дос тупна в момент создания базы данных. Работа с указанной вкладкой также была представлена и повторно рассматриваться не будет.

Четвертая вкладка окна свойств базы данных называется Filegroups (рис. 20.14).

Эта вкладка предназначена для управления группами файлов базы данных. Ос новную часть вкладки занимает таблица Filegroups, каждая строка которой соот ветствует отдельной группе файлов. В столбце Name таблицы указывается имя группы файлов. Количество же файлов в группе приводится в столбце Files. В столбцах Read-Only и Default находятся флажки. Устанавливая флажок в первом из столбцов, можно перевести соответствующую группу в режим "только для Часть IV. Разработка и сопровождение баз данных чтения". При этом данные, расположенные во входящих в группу файлах, мож но будет только прочитать, но не изменить. Флажок же в столбце Default может быть установлен только для одной группы из всех имеющихся. Выбор этого флажка предписывает сконфигурировать определенную группу в качестве груп пы файлов по умолчанию. Напомним, что в такой группе размещаются все дан ные, для которых явно не указано, в какой группе они должны располагаться.

Р и с. 2 0. 1 3. Окно с в о й с т в б а з ы данных, вкладка T r a n s a c t i o n Log Предпоследняя, пятая вкладка имеет имя Options (рис. 20.15) и позволяет управлять опциями конфигурации базы данных. Вкладку Options можно рас сматривать как графический интерфейс хранимой процедуры spdboption. Пе речислим, какие элементы управления доступны на вкладке:


• Restrict access. Установка этого флажка предписывает ограничить доступ пользователей к базе данных. При этом необходимо выбрать режим доступа:

• Members of db_owner, dbcreator, or sysadmin — установка переключателя в это положение соответствует переводу базы данных в состояние dbo use only. В этом режиме к базе данных разрешается доступ только членам фиксированных ролей dbowner, dbcreator И И sysadmin.

Л • Single user — в этом случае с базой данных сможет работать только один пользователь, и организация блокировок не требуется.

Глава 20. Работа с базой данных Рис. 20.14. Окно свойств базы данных, вкладка Filegroups Рис. 20.15. Окно свойств базы данных, вкладка Options Q36 Часть IV. Разработка и сопровождение баз данных П Read-only. Установка этого флажка предписывает сконфигурировать базу данных в режим "только для чтения". В этом режиме не требуется создание блокировок и транзакций, что позволяет повысить производительность рабо ты пользователей с данными. Часто режим "только для чтения" устанавлива ется для баз данных систем поддержки принятия решений, характеризую щихся отсутствием изменений данных.

О Model — с помощью этого раскрывающегося списка можно выбрать модель восстановления, которая будет поддерживаться для базы данных. В распоря жении пользователя имеются следующие модели:

Simple — простейшая модель, разрешающая восстановление только пол • ной или разностной резервной копии. В этом случае база данных может быть восстановлена только в том состоянии, в котором она была в момент создания последней резервной копии;

Full — в этом случае помимо полной и разностной резервной копии также • разрешается восстановление резервной копии журнала транзакций, что позволяет восстанавливать базу данных в состоянии, в котором она была непосредственно перед сбоем;

Bulk-Logged — данная модель дополнительно к возможностям предыдущей • модели позволяет регистрировать действия, которые в предыдущих версиях SQL Server были ^протоколируемыми, и их выполнение в базе данных де лало невозможным последующее восстановление журнала транзакций. К таким действиям относится выполнение команд SELECT INTO, BULK INSERT, CREATE INDEX, WRITETEXT, UPDATETEXT и выполнение утилиты bcp.exe.

• ANSI NULL default. Контролирует в соответствии со стандартом ANSI SQL 92 поддержку столбцом хранения значений NULL В случаях, когда при созда нии столбца явно не указано, разрешено ему или нет хранение NULL.

• Recursive triggers. Разрешает (или запрещает) рекурсивный вызов триггеров.

• Auto update statistics. Контролирует возможность автоматического обновле ния статистики для таблиц базы данных.

П Torn page detection. Установка флажка предписывает серверу выполнять ав томатическое обнаружение поврежденных страниц.

• Auto close. При установленном флажке сервер будет автоматически выгру жать из оперативной памяти базу данных, как только с ней заканчивает ра боту последний пользователь.

П Auto shrink. В случае установки флажка периодически будет осуществляться автоматическое уменьшение размера базы данных за счет уменьшения разме ра отдельных ее файлов.

• Auto create statistics. Разрешает автоматическое создание статистики для таб лиц базы данных.

О Use quoted identifiers. Контролирует поведение двойных кавычек. Если фла жок установлен, то двойные кавычки рассматриваются как ограничитель имен объектов, т. е. ведут себя аналогично квадратным скобкам. При сбро шенном же флажке заключенные в двойные кавычки значения рассматрива Глава 20. Работа с базой данных ются как обычные текстовые строки, т. е. двойные кавычки ведут себя ана логично одинарным кавычкам.

П Level — с помощью этого раскрывающегося списка можно изменить уровень совместимости, используемый для базы данных. Уровень совместимости (compatibility level) определяет, поведение какой версии SQL Server будет эмулироваться.

На этом рассмотрение вкладки Options можно закончить и перейти к следую щей вкладке.

Последняя вкладка окна свойств базы данных называется Permissions (рис. 20.16) и позволяет управлять правами пользователей и членов пользовательских ролей базы данных. Как видно из рисунка, всю вкладку занимает таблица, с помощью которой и осуществляется управление правами пользователей и ролей. Каждая строка таблицы соответствует отдельному пользователю или роли базы данных, тогда как каждый столбец описывает одно из прав. Устанавливая флажок в том или ином столбце (зеленая галочка), вы тем самым предоставляете пользовате лю или роли соответствующее право. Помимо предоставления права, можно также явно запретить пользователю выполнять те или иные действия. Для этого требуется установить в нужном столбце красный крестик. Это гарантирует, что отдельный пользователь или все члены роли не смогут никаким образом выпол нить указанное действие.

Рис. 20.16. Окно свойств базы данных, вкладка Permissions 938 Часть IV. Разработка и сопровождение баз данных Рассмотрим, какими же правами можно управлять с помощью вкладки Permissions:

• Create Table — создавать таблицы;

П Create View — создавать представления;

О Create SP — создавать хранимые процедуры;

• Create Default — создавать умолчания;

• Create Rule — создавать правила;

• Create Function — создавать определяемые пользователем функции;

• Backup DB — создавать полную или разностную резервную копию базы данных;

• Backup Log — создавать резервную копию журнала транзакций.

На этом работу с вкладкой Permissions, да и со всем окном свойств базы дан ных, можно считать рассмотренной.

Внесение изменений в базу данных Предыдущие разделы были посвящены рассмотрению управления различными свойствами базы данных, а также получению информации о ней. В этом же раз деле будет обсуждаться внесение изменений в структуру базы данных. При этом внимание будет уделено только средствам Transact-SQL. Изменение же базы данных средствами Enterprise Manager было рассмотрено в предыдущем разделе.

Для изменения базы данных средствами Transact-SQL применяется команда ALTER DATABASE, имеющая синтаксис:

ALTER DATABASE database { ADD FILE filespec [,...n] [TO FILEGROUP filegroup_name] I ADD LOG FILE filespec [,...n] I REMOVE FILE logical_file_name I ADD FILEGROUP filegroup_name I REMOVE FILEGROUP filegroup name I MODIFY FILE filespec I MODIFY NAME = new_dbname ~ I MODIFY. FILEGROUP filegroup_name {filegroup_property i NAME = new_filegroup_name} I SET optionspec I,...n] fWITH termiriationJ I COLLATE collation_narae } Рассмотрим назначение и использование параметров команды:

О database Имя базы данных, в которую необходимо внести изменения.

• ADD FILE С помощью этого параметра можно выполнить добавление в базу данных но вого файла данных. Добавляемый файл должен быть описан с помощью кон струкции fiiespec, синтаксис которой был рассмотрен в разд. "Создание базы данных" ранее в этой главе. Дополнительно с помощью параметра то FILEGROUP filegroup_name можно указать группу, в которой должен быть расположен добавляемый файл. Если имя группы файлов не указывается, то Глава 20. Работа с базой данных файл окажется расположенным в группе файлов по умолчанию (default file group). С помощью одной команды ALTER DATABASE МОЖНО добавить в базу данных более одного файла. Для этого достаточно перечислить описание файлов через запятую.

• ADD LOG FILE Параметр позволяет выполнять добавление в базу данных нового файла журнала транзакций. Как и файл данных, файл журнала транзакций должен быть описан с помощью конструкции f i l e s p e o. Можно указать множество файлов.

О REMOVE FILE logical_file_name Выполнение команды ALTER DATABASE С рассматриваемым параметром пред писывает удалить из базы данных один из файлов, логическое имя которого указывается с помощью параметра logical_fiie_name. При этом выполняет ся и физическое удаление файла с жесткого диска. Однако файл нельзя уда лить до тех пор, пока он не будет освобожден от всех данных. Выполнение этой операции было рассмотрено в разд. "Уменьшение размера базы данных" ранее в этой главе.

П ADD FILEGROUP filegroup_name Данный параметр позволяет добавить в базу данных новую группу файлов.

Напомним, что список групп файлов хранится в системной таблице sysfiiegroups. Таким образом, использование параметра ADD FILEGROUP приведет к вставке в указанную таблицу новой строки, описывающей группу файлов, указанную с помощью параметра f i l e g r o u p n a m e. После этого мож но будет размещать в группе файлы данных.

О REMOVE FILEGROUP filegroup_name Действие этого параметра обратно предыдущему — он используется для уда ления из базы данных группы файлов, имя которой указано с помощью па раметра fiiegroup_name. Заметим, что при удалении группы файлов выпол няется и удаление всех включенных в нее файлов. Однако удаление файлов разрешается только в том случае, если они не содержат никаких данных.

П MODIFY FILE filespec С помощью этого параметра можно внести изменения в описание файла ба зы данных. Для описания новых параметров файла применяется конструкция f ilespec2, имеющая синтаксис:

( NAME=logical_file_name [, NEWNAME=new_logical_name ] [, FILENAMESos_file_name' ] [, SIZE=size ] [, MAXSIZE={ max_size I UNLIMITED } ] [, FILEGROWTH=growth_increment ] ) Рассмотрим назначение параметров конструкции:

• NAME=logical_file_name — логическое имя файла, который необходимо изменить;

д40 - Часть IV. Разработка и сопровождение баз данных NEWNAME=new_logical_name — используется для изменения логического • имени файла;

• FiLENAME='os_file_name' — используется для изменения физического имени файла. Отметим, что данная возможность поддерживается только для файлов системной базы данных Tempdb. Однако изменение отобразит ся только при очередном старте SQL Server;

• sizE=size — позволяет изменить первоначальный размер файла;

• MAXSizE={max_size | ONLIMITED} — предназначен для изменения макси мального размера файла. Указание ключевого слова UNLIMITED разрешает снять ограничение на максимальный размер файла;


• FiLEGROWTH=growth_increment — позволяет изменять шаг прироста файла.

П MODIFY NAME = n e w _ d b n a m e Данный параметр позволяет изменять имя базы данных. Новое имя должно быть указано с помощью параметра newdbname.

• MODIFY FILEGROUP f i l e g r o u p _ n a m e Используя рассматриваемый параметр, можно вносить изменения в группу файлов. Имя изменяемой группы файлов должно быть указано с помощью параметра filegroup_name. Можно изменить либо имя группы файлов, вос пользовавшись параметром NAME=new_filegroup_name, либо изменить свой ства группы файлов. В последнем случае необходимо указать новое свойство базы данных с помощью параметра f i l e g r o u p p r o p e r t y, который может принимать следующие значения:

• READONLY — группа файлов переводится в режим "только для чтения";

• READWRITE — группа файлов переводится в режим "чтения-записи" (обычно применяется к группам файлов, установленных в режим только для чтения);

• DEFAULT — группа файлов конфигурируется в качестве группы файлов по умолчанию. В такой группе файлов будут размещаться все вновь созда ваемые файлы или данные таблиц, для которых явно не указана группа, в которой они должна располагаться.

• COLLATE collation_name При помощи данного параметра с помощью команды ALTER DATABASE МОЖ НО изменить сопоставление, которое будет использоваться по умолчанию для всех создаваемых таблиц. Однако такое изменение не затрагивает уже соз данных объектов, в т. ч. и системных таблиц.

П SET optionspec [,...n] [WITH termination] Данный параметр служит для изменения опций конфигурации базы данных.

Опции базы данных уже были рассмотрены в одном из предыдущих разделов этой главы, поэтому здесь мы приведем лишь структуру конструкций o p t i o n s p e o и termination, которые, соответственно, используются для указания изменяемой опции и определения метода применения изменения:

Глава 20. Работа с базой данных optionspec ::= state_option I cursor_option | auto_option | sql_option | recoveryoption State_pption ::= {SINGLEJJSER I RESTRICTED_OSER I MULTIJJSER} I {OFFLINE I ONLINE} I {READ-ONLY I READ_WRITE} cursor_option : := CURSOR_CLOSEON_COMMIT {ON I OFF} I CURSOR_DEFAULT {LOCAL I GLOBAL} auto_option ::= AUTO_CLOSE {ON I OFF} I AUTO_CREATE_STATISTICS {ON I OFF} I AUTO_SHRINK (ON | OFF} I AUTO_UPDATE_STATISTICS {ON I OFF} sql_option ::= ANSI NULL_DEFAULT {ON ! OFF} I ANSI_NULLS {ON I OFF} ! ANSI_PADDING {ON | OFF} I ANSIWARNINGS {ON I OFF} | ARITHABORT {ON I OFF} I CONCAT_NULL_YIELDS_NULL {ON I OFF} I NUMERIC_ROUNDABORT {ON | OFF} I QUOTEDIDENTIFIER {ON | OFF} I RECURSIVEJTRIGGERS {ON i OFF} recovery_option ::= RECOVERY {FULL | BULK^LOGGED | SIMPLE} I TORN_PAGE_DETECTION {ON | OFF) Конструкция termination, указываемая после ключевого слова WITH, предназначена для указания метода прерывания пользовательских транзак ций. Это необходимо при внесении изменений в свойства базы данных. Кон струкция termination имеет следующий синтаксис:

termination ::= ROLLBACK AFTER integer [SECONDS] I ROLLBACK IMMEDIATE I NO_WAIT Рассмотрим назначение параметров этой конструкции:

ROLLBACK [SECONDS] — Предписывает ВЫПОЛНИТЬ ОТКЭТ • AFTER integer пользовательских транзакций через указанное количество секунд. Соот ветственно, выполнение собственно изменений опций конфигурации ба зы данных также откладывается на указанное количество секунд;

• ROLLBACK IMMEDIATE — в этом случае все активные транзакции будут от качены незамедлительно после выполнения администратором команды ALTER DATABASE;

• NOWAIT — в данном случае отката транзакций не выполняется, но если на момент выполнения команды ALTER DATABASE будет иметься хоть одна ак тивная транзакция, то выполнение изменений опций конфигурации от меняется.

Мы рассмотрели теоретическую часть изменения базы данных. Для иллюстра ции сказанного рассмотрим несколько примеров, демонстрирующих использо вание КОМаНДЫ ALTER DATABASES. ДЛЯ Начала Добавим В базу данных Northwind группу файлов MyGroup, после чего создадим два файла данных, разместив их в созданной группе:

ALTER DATABASE Northwind ADD FILEGROUP MyGroup Мы создали группу файлов. Теперь же создадим два файла данных:

ALTER DATABASE Northwind ADD FILE (NAME=SecFilel, FILENAME='C:\SQL2000\secl', д42 Часть IV. Разработка и сопровождение баз данных SIZE=10 MB, MAXSIZE=25, FILEGROWTH=25%), (NAME=SecFile2, FILENAME='C:\SQL2000\sec2•, SIZE=10 MB, FILEGR0WTH=5 MB) TO FILEGROUP MyGroup Теперь же внесем изменения в добавленный файл s e c F i i e 2, установив для него максимальный размер, равный 50 Мбайт, шаг приращения 10%, а также задав для него новое логическое имя — TxtimgData.

ALTER DATABASE Northwind MODIFY FILE ( NAME=SecFile2, NEWNAME=TxtImgData, MAXSIZE=50 MB, FILEGROWTH=10%) В завершение переведем базу данных в режим доступа только одного пользова теля, разрешим рекурсивный вызов триггеров, а также изменим модель восста новления базы данных на Bulk-Logged:

ALTER DATABASE Northwind SET SINGLE_USER, RECURSIVEJTRIGGERS ON, RECOVERY BOLK_LOGGED WITH ROLLBACK AFTER 15 SECONDS Отсоединение и присоединение базы данных При работе с SQL Server 2000 разрешается выполнять отсоединение базы дан ных. Отсоединение (detach) является операцией, в результате которой из табли цы sysdatabases системной базы данных Master удаляется информация о неко торой базе данных. В итоге сервер перестает воспринимать базу данных. Эту операцию можно сравнить с удалением базы данных с тем различием, что при отсоединении базы данных не выполняется удаление ее файлов. Отсоединенная база данных впоследствии может быть присоединена (attach) к серверу.

Файлы отсоединенной базы данных могут копироваться как обычные файлы операционной системы. Их можно заархивировать, записать на компакт-диски и разослать в филиалы. Подобным образом можно также создавать резервные копии базы данных. В обычной ситуации файлы базы данных блокируются сер вером и к ним нельзя получить доступ обычными средствами. С файлами же отсоединенной базы данных можно выполнять любые операции, поддерживае мые для обычных файлов.

Для отсоединения базы данных существует системная хранимая процедура:

'dbname sp_detach_db [Sdbname =] [, [@skipchecks =] 'skipchecks'] С помощью первого параметра процедуры указывается имя базы данных, кото рую необходимо отсоединить. С помощью второго параметра можно предписать серверу выполнить обновление статистики для отсоединяемой базы данных. Для этого достаточно указать для параметра значение TRUE. Обновление статистики может быть полезным при копировании базы данных на носитель, доступный только для чтения (например, компакт-диск), т. к. впоследствии этого выпол Глава 20. Работа с базой данных нить не удастся. В этом случае предварительно можно перевести базу данных в режим "только для чтения" (read only).

с Замечание Нельзя отсоединить базу данных, если с ней работает хоть один пользователь.

Также нельзя отсоединять базу данных, сконфигурированную для репликации.

База данных также может быть отсоединена средствами Enterprise Manager. Для этого необходимо в контекстном меню базы данных выбрать команду All Tasks, а затем команду Detach Database. В ответ откроется окно Detach Database (рис. 20.17), с помощью которого можно разрешить обновление статистики для базы данных, для чего достаточно установить флажок Update statistics prior to detach. Также в окне отображается количество пользователей, работающих с ба зой данных, и статус участия базы данных в репликации.

Рис. 20.17. Окно Detach Database В качестве примера рассмотрим отсоединение базы данных pubs с выполнением обновления статистики:

EXEC sp_detach_db ' p u b s ', 'TRUE' Как уже было сказано, отсоединенная база данных может быть впоследствии присоединена, что подразумевает собой создание в таблице sysdatabases базы данных Master строки с описанием присоединяемой базы данных. При этом не выполняется создание файлов базы данных, а используются существующие файлы. Присоединение базы данных производится с помощью следующей хра нимой процедуры:

sp_attach_db [@dbname =] 'dbname', [Sfilenamel =] 'filename_n' [,...16] Первый параметр указывает имя, которое будет присвоено присоединяемой базе данных. Это имя может отличаться от первоначального названия базы данных, но быть уникальным в пределах сервера. С помощью следующего параметра 3 1 Эй. Часть IV. Разработка и сопровождение баз данных указывается имя первичного файла базы данных. Полный путь к остальным файлам содержится в таблице sysfiles, находящейся в первичном файле базы данных. Однако вполне может сложиться ситуация, когда файлы базы данных были перемещены с их начального места. В этом случае необходимо будет явно указать путь и имена всех файлов базы данных, перечислив их через запятую. Од нако следует учитывать ограничение процедуры s p a t t a c h d b — она позволяет указывать не более 16 файлов. Если же требуется радать большее количество фай лов, то следует использовать команду CREATE DATABASE С параметром FOR ATTACH.

(~ Замечание ^ Можно не указывать файлы журнала транзакций. В этом случае сервер автоматиче ски создаст для базы данных новый журнал транзакций, состоящий из одного файла и имеющий имя, основанное на имени базы данных, к которому будет добавлен суффикс Log.

В качестве примера рассмотрим присоединение отсоединенной в предыдущем примере базы данных pubs:

EXEC sp_attach_db 'pubs', 'G:\Program FilesXMicrosoft SQL Server\MSSQL$TRELON\Data\pubs.mdf' В данном примере мы указали только имя первичного файла базы данных, т. к.

местоположение файлов не менялось. В принципе, при желании можно явно определить и местоположение других файлов, но этого не требуется.

Для полноты картины рассмотрим выполнение той же операции средствами команды CREATE DATABASE с использованием параметра FOR ATTACH:

CREATE DATABASE pubs ON PRIMARY (FILENAME = 'G:\Program FilesNMicrosoft SQL Server\MSSQL$TRELON\Data\pubs.mdf') FOR ATTACH Хранимая процедура s p a t t a c h d b в основном предназначена для присоедине ния баз данных, состоящих из множества файлов. Если же база данных пред ставлена единственным файлом данных, то для ее присоединения можно ис пользовать следующую хранимую процедуру:

'dbname1, sp_attach_single_file_db [Sdbname =] [@physname =] 'physical_name' С помощью первого параметра процедуры указывается имя, которое будет при своено присоединяемой базе данных. С помощью второго же параметра задается путь и имя файлу данных, который и представляет базу данных. В ходе выпол нения процедуры автоматически будет создан журнал транзакций, представлен ный единственным файлом.

Присоединение базы данных средствами Enterprise Manager выполняется с по мощью окна Attach Database (рис. 20.18), открыть которое можно с помощью контекстного меню папки Databases, выбрав в нем команду All Tasks, а затем команду Attach Database.

Глава 20. Работа с базой данных Рис. 20.18. Окно Attach Database Удаление базы данных Предыдущие разделы были посвящены рассмотрению различных операций при работе с базой данных. Логическим же завершением манипуляций с базой дан ных является ее удаление. Для выполнения этой операции используется сле дующая команда:

DROP DATABASE database_name [,...n ] С помощью единственного параметра команды указывается имя базы данных, которую необходимо удалить. Однако за одну операцию можно удалить множе ство баз данных, просто перечислив их имена через запятую. При удалении ба зы данных происходит удаление строки таблицы sysdatabases, описывающей соответствующую базу данных. Также производится и физическое удаление всех файлов, из которых состояла база данных. Тем не менее, имея резервную копию базы данных, впоследствии можно восстановить ее снова.

с Замечание Команда DROP DATABASE должна выполняться в контексте базы данных Master.

Нельзя удалить системные базы данных Model, Tempdb, Msdb и Master.

31* Глава Работа с таблицами В любой системе управления базами данных таблицы играют огромную роль. Таб лицы используются для хранения всей информации, которую пользователи внесли в базу данных. С точки зрения пользователя таблица представляет собой двумер ный массив, каждая строка которого является экземпляром описываемого в таб лице типа объекта. Столбцы массива представляют собой атрибуты объекта. На пересечении конкретной строки и конкретного столбца находится атрибут кон кретного объекта. Рассмотрим это более подробно. На рис. 21.1 приведена табли ца authors базы данных pubs, открытая с помощью Enterprise Manager.

с Замечание База данных pubs поставляется фирмой Microsoft в составе инсталляционного ком плекта SQL Server 2000 и устанавливается автоматически. Эта база данных специ ально предназначена для проведения всяческих экспериментов.

Рис. 21.1. Таблица authors базы данных pubs Глава 21. Работа с таблицами Проектирование таблиц Прежде чем вы сможете работать с таблицами, их необходимо создать. Во время этой операции пользователь определяет имя таблицы, имена столбцов, тип хра нимых в них данных, значения по умолчанию, возможность хранения неопреде ленных значений, первичный и внешний ключи и некоторые другие свойства.

Создание таблиц в SQL Server 2000 возможно либо с помощью графического интерфейса Enterprise Manager, либо с помощью команд Transact-SQL. К сожа лению, мастера создания таблиц в SQL Server 2000 нет.

Прежде чем приступить к непосредственному созданию таблицы, необходимо решить, какие столбцы должны быть определены в таблице, как она сама будет связана с другими таблицами, какие данные предполагается хранить в столбцах таблицы и т. д. То есть сначала нужно разработать логическую модель таблицы, которая бы органично вписывалась в общую логическую модель базы данных.

Точнее, сначала должна быть разработана общая логическая модель базы дан ных, а уже потом конкретные таблицы. Основные требования и рекомендации по созданию таблиц были рассмотрены в главе 17. Предполагается, что пользо ватель имеет хорошо спланированную логическую модель таблицы, и осталось только реализовать ее физически. Именно этому и посвящена данная глава.

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

Ограничения целостности (constraints) — это механизм контроля значений, кото рые могут храниться в полях строки. В SQL Server 2000 поддерживаются сле дующие ограничения целостности:

• Check — с помощью логических условий налагает ограничение на значения, которые могут храниться в столбце;

• Null — задает возможность хранения неопределенных значений;

О Default — определяет значение по умолчанию;

• Unique — гарантирует уникальность значений в столбце;

• Primary Key — определяет первичный ключ;

О Foreign Key — определяет внешний ключ;

• No Action — предписывает не выполнять в зависимой таблице никаких дей ствий при удалении или обновлении строк в главной таблице. Это поведение соответствует поведению SQL Server 7.0;

• Cascade — в данном случае будет осуществляться каскадное изменение зна чений в зависимой таблице при внесении изменений в главную таблицу.

948 Часть IV. Разработка и сопровождение баз данных ( Замечание ~^ Последние два ограничения целостности являются нововведением в SQL Server 2000.

Рассмотрим более подробно использование каждого из вышеперечисленных ограничений целостности.

Ограничение целостности Check Ограничение целостности Check предназначено для создания ограничений на значения, которые могут храниться в поле строки. Ограничение устанавливается в виде логического условия, лишь при выполнении которого разрешается встав ка значения. Если условие не выполняется, то попытка вставки или изменения строки отклоняется. При определении логического условия можно использовать любые команды, функции и переменные, доступные в SQL Server 2000.

Например, если в столбце cost хранятся числовые значения и необходимо га рантировать, что они не будут превышать 100 и будут не менее 15, то условие будет выглядеть следующим образом:

cost=15 A D cost= N ИЛИ cost BETWEEN 15 and В приведенном примере логическое условие было определено с помощью кон стант. Однако в условии могут использоваться и другие столбцы таблицы. На пример, если в таблице имеется три числовых столбца и значение одного из них зависит от значений двух других, то с помощью ограничения целостности Check можно произвести проверку выполнения установленных правил. Предположим, что в поле mincost хранится себестоимость товара, в поле maxcost — макси мально разрешенная цена товара, а в поле cost — цена товара, установленная менеджером для конкретного покупателя. Необходимо ввести ограничение, ко торое бы автоматически контролировало значение в поле cost в пределах между mincost и maxcost. Логическое условие будет выглядеть следующим образом:

cost=mincost A D cost=maxcost N Ограничения целостности Check были введены в SQL Server 7.0. В более ранних версиях для контроля значений в столбцах использовались правила (rules).

В SQL Server 2000 правила были оставлены для обеспечения совместимости с предыдущими версиями. Однако правила должны определяться как отдельные объекты и затем привязываться к столбцам таблицы. При этом с каждым столб цом можно было связать лишь одно правило. Подробно использование правил было рассмотрено в разд. "Правила" главы 18. Ограничения целостности опреде ляются на уровне столбца и не могут быть отделены от него.

( Замечание ^ Компания Microsoft настоятельно рекомендует применять ограничения целостности Check и не прибегать к использованию правил. Весьма вероятно, что в будущих Глава 21. Работа с таблицами версиях SQL Server правила поддерживаться не станут. При создании новых таблиц и баз данных следует работать с ограничениями целостности.

Для одного столбца может быть определено множество ограничений целостно сти Check. Присваиваемые определенному полю значения будут автоматически проверяться ядром SQL Server 2000 на выполнение установленных ограничений.

Последовательность проверок соответствует порядку, в котором были созданы ограничения целостности Check.

Ограничение целостности Null В полях таблицы SQL Server 2000 можно хранить не только конкретные значе ния, но и неопределенные значения. Неопределенное значение это не то же самое, что пустое значение для текстовых строк или 0 — для числовых значе ний. Если в поле хранится неопределенное значение, можно считать, что в поле не хранится ничего. Неопределенное значение обозначается как NULL.

Если при вставке в таблицу новой строки не указываются значения для некото рых полей, то вставка строки будет возможна только в том случае, если для опущенных полей разрешено хранение значений NULL ИЛИ определены значения по умолчанию.

При создании столбцов таблицы пользователь может явно указать, будут ли в них храниться значения NULL. Однако задание возможности хранения неопреде ленного значения необязательно. В этом случае, при создании таблицы будут учитываться свойства соединения, в котором организуется таблица. Можно явно указать, будут ли столбцы вновь создаваемых таблиц, для которых явно не ука зана возможность хранения значений NULL, хранить такие значения или нет.

Для этого предназначены следующие команды:

OFF} — ПОСЛе ВЫПОЛНеНИЯ ЭТОЙ КОМЭНДЫ С • SET ANSI_NULL_DFLT_ON (ON I параметром ON все вновь создаваемые столбцы, для которых явно не разре шено (или запрещено) хранение неопределенных значений, будут иметь воз можность хранения таких значений;

П SET ANSI_NULL_DFLT_OFF OFF} — ПОСЛе ВЫПОЛНеНИЯ ЭТОЙ КОМаНДЫ {ON I для всех создаваемых столбцов хранение значений NULL будет запрещено.



Pages:     | 1 |   ...   | 23 | 24 || 26 | 27 |   ...   | 33 |
 





 
© 2013 www.libed.ru - «Бесплатная библиотека научно-практических конференций»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.