Просмотр свойств базы данных

Просмотр свойств базы данных. Часто бывает необходимо получить исчерпывающую информацию о структуре и параметрах базы данных.

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

Например, для получения информации о параметрах базы данных pubs можно выполнить следующую команду EXEC sp dbopt1on pubs Будет возвращен примерно следующий результат The following options are set published trunc. log on chkpt. torn page detection auto create statistics auto update statistics Как видно, возвращается список только тех параметров, которые были установлены. Для получения значения конкретного параметра необходимо указать не только имя базы данных, но и имя интересующего параметра конфигурации ЕХЕС spjboption pubs , ANSI null default В результате выполнения этой команды будет получен примерно следующий результат OptionName CurrentSetting ANSI null default off Если выполнить хранимую процедуру sp dboption вообще без аргументов, то она выдаст список всех доступных параметров конфигурации Settable database options ANSI null default ANSI nulls ANSI padding ANSI warnings 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. Помимо хранимой процедуры sp dboption для получения значения тех же и некоторых дополнительных параметров конфигурации можно использовать следующую команду DATABASEPROPERTY database name . property Аргумент database name должен содержать имя базы данных, свойства которой необходимо просмотреть.

Возможные значения аргумента property и их назначение перечислены в табл. 14.2. Таблица Аргументы команды DATABASEPROPERTY Аргумент IsAnsiNullDefault IsAnsiNullEnabled IsAnsiWarningEnabled IsAutoClose IsAutoShrink IsAutoUpdateStatistics IsBulkCopy IsCloseCursorOnCommit-Enabled IsDboOnly IsDetached IsEnergencyMode IsFulltextEnabled IsInLoad IsInRecovery IsInStandby IsLocalCursorsDefault IsNotRecovered IsNullConcat IsOffline IsQuotedldentifiersEnabled leReadOnly IsRecursiveTriggersEnabled IsShutDown Назначение Аналог аргумента ANSI null default процедуры sp dboption Аналог аргумента ANSI nulls процедуры sp dboption Аналог аргумента ANSI warning процедуры sp dboption Аналог аргумента autoclose процедуры sp dboption Аналог аргумента autoshrink процедуры sp dboption Аналог аргумента auto update statistic процедуры sp dboption Аналог аргумента select into bulk copy процедуры sp dboption Аналог аргумента cursor close on commit процедуры spjdboption Аналог аргумента dbo use only процедуры sp dboption База данных отделялась командой sp detach Разрешение работы с подозрительной базой Поддержка полнотекстового поиска База данных была загружена из резервной копии Выполняется восстановление базы данных База данных работает в режиме только для чтения Аналог аргумента default to local cursor процедуры sp dboption Восстановление базы данных завершилось с ошибкой Аналог аргумента concat null yields null процедуры sp dboption Аналог аргумента offline процедуры sp dboption Аналог аргумента quoted identifier процедуры sp dboption Аналог аргумента read only процедуры sp dboption Аналог аргумента recursive triggers процедуры sp dboption В базе при запуске сервера возникают ошибки продолжение Таблица продолжение Аргумент Назначение IsSingleUser Аналог аргумента single user процедуры sp dboption IsSuspect Имеются сомнения в целостности базы данных IsTruncLog Аналог аргумента trunc. log on chkpt. процедуры sp dboption Version Внутренний номер версии сервера SQL Server, на котором была создана база данных Результатом выполнения команды DATABASEPROPERTY будет либо значение О, соответствующее значению FALSE или OFF хранимой процедуры sp dbopt1 on, либо значение 1, соответствующее значению TRUE или ON. Исключением из правила является значение, возвращаемое для параметра Version.

Для этого параметра возвращается значение типа int, которое может принимать любое положительное значение.

Если значение параметра не определено, то команда вернет значение NULL. Приведем пример использования команды DATABASEPROPERTY для получения информации о режиме слияния двух значений NULL, установленном для базы данных pubs SELECT DATABASEPROPERTY pubs , IsNullConcat Сервер вернет примерно следующий результат О 1 row s affected Для получения некоторой общей информации о базе данных можно использовать следующую хранимую процедуру spjielpdb dbname name Эта хранимая процедура выдает информацию о текущем размере базы данных с точностью до десятков килобайт, имя учетной записи, являющейся владельцем базы данных, идентификационный номер базы данных, дату создания базы данных и ее текущий статус.

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

Для получения информации о файлах базы данных из хранимой процедуры spjielpdb происходит вызов хранимой процедуры sp helpfile, которая и выдает информацию о параметрах файла.

Поэтому формат результата выполнения этих хранимых процедур одинаков. Более подробно формат данных будет рассмотрен ниже. Для получения информации о базе данных pubs можно использовать следующую команду ЕХЕС spjielpdb pubs Объем информации, возвращаемый этой командой, достаточно велик, поэтому возможности привести эту информацию в книге нет. Однако вы можете выполнить указанную команду в Query Analyzer и посмотреть, что же будет выдано в ответ. Для получения информации о конкретном файле базы данных можно использовать следующую хранимую процедуру sp helpfile filename name Эта процедура выдает информацию о файле в следующих столбцах О Name - логическое имя файла в базе данных О Filename- физическое имя файла в операционной системе, которое включает полный путь к файлу О Filegroup- имя группы файлов, к которой принадлежит файл О Si ze - текущий размер файла О Maxsize- максимальный размер файла, установленный при его создании О Growth - шаг прироста размера файла О Usage- тип использования файла возможно одно из двух значений data only файл используется для хранения данных или log on!у файл используется для хранения журнала транзакций. Для получения информации о группе файлов можно использовать следующую хранимую процедуру sp helpfilegroup Ofilegroupname name Эта хранимая процедура выполняется в контексте базы данных, информацию о которой необходимо получить.

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

Для получения информации о группе файлов PRIMARY базы данных pubs можно использовать следующую команду ЕХЕС sp helpf11egroup primary Будет получен примерно следующий результат groupname groupid fllecount PRIMARY 1 1 f11e in group fileid filename size maxsize growth pubs 1 pubs.mdf 2688 KB Unlimited Ш В столбце Filename будет указан полный путь к файлу. Для просмотра информации об использовании пространства внутри базы данных можно применить следующую, системную хранимую процедуру sp spaceused objname objname, updateusage updateusage Аргумент objname содержит имя таблицы базы данных, о которой необходимо получить информацию.

Аргумент updateusage управляет выполнением команды DBCC UPDATEUSAGE и может принимать значения TRUE или FALSE. Если процедура sp spaceused запускается без аргументов, то будет выведена информация об использовании пространства в текущей базе данных.

В результате выполнения sp spaceused в контексте базы данных pubs будет получен примерно следующий результат database name pubs reserved data database s1ze 3.63 MB Index size unallocated space 1.10 MB unused 2584 KB 1120 KB 1288 KB 176 KB Как видно, результат состоит из двух наборов. В столбце database name указано имя базы данных, о которой выводится информация, в столбце database s1 ze - первоначальный размер базы данных, а в столбце unal I ocated space- пространство, которое было освобождено при сжатии.

В столбце reserved отображается сумма зарезервированного для базы данных пространства database size - unallocated space data index size unused. В столбце data указан объем памяти, занимаемый данными, а в столбце index size- объем памяти, занимаемый индексами.

Размер свободного пространства в базе данных выводится в столбце unused.

Чтобы получить информацию об использовании пространства в таблице titleauthor, можно использовать следующую команду ЕХЕС sp spaceused titleauthor В результате процедура выдаст примерно следующее name rows reserved data index size unused titleauthor 25 48 KB 8 KB 40 KB 0 KB В столбце name указано имя таблицы, о которой выводится информация, а в столбце rows - число строк данных, которое введено в таблице.

Объем памяти, выделенный в базе данных для таблицы, указывается в столбце reserved data index s1ze unused. В столбце data указан объем памяти, занимаемой данными, хранящимися в таблице, а в столбце i ndex si ze - объем памяти, отведенный для индекса.

Объем свободного пространства указывается в столбце unused Для получения информации о журнале транзакций Transact-SQL предлагает команду DBCC SQLPERF, выдающую информацию об использовании журналов транзакций в каждой из баз данных, созданных на сервере.

Для получения информации об использовании журналов транзакций нужно выполнить следующую команду DBCC SQLPERF LOGSPACE В результате будет выдана следующая информация DatabaseName LogSize MB Log Space Used Status Samp! e 3 1.9921875 33.039215 0 Sample 2 1.9921875 34.264706 0 Sample 1 1.9921875 33.553921 0 Distribution 0.9921875 56.98819 0 Abba 0.9921875 38.877953 0 Northwi nd 0.9921875 46.948818 0 Pubs 0.9921875 55.610237 0 Msdb 2.4921875 35.442791 0 Tempdb 0.4921875 85.079521 0 Model 0.7421875 45.328949 0 Master 1.2421875 34.709118 0 12 row s affected DBCC execution completed.

If DBCC printed error messages, contact your system administrator.

Вся информация о файлах и группах файлов базы данных хранится в системных таблицах.

Хранимые процедуры обращаются к этим таблицам и возвращают пользователю результат в удобном виде. Хотя в некоторых случаях бывает проще напрямую считать данные из системных таблиц, чем выполнять хранимые процедуры, Microsoft настоятельно советует не прибегать к прямому обращению к системным таблицам, так как их структура может быть изменена в следующих версиях, и поэтому программы, успешно работающие с одной из версий SQL Server, могут работать неправильно или вообще не работать со следующими версиями этой СУБД. При использовании хранимых процедур Microsoft гарантирует, что совместимость будет сохранена.

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

Список файлов базы данных хранится в системной таблице sysfiles. Каждая строка этой таблицы соответствует одному файлу базы данных.

Таблица sysfiles является виртуальной и не может быть изменена непосредственно с помощью команд DELETE, UPDATE или INSERT. Тем не менее, пользователи могут считывать данные из этой таблицы, используя команду SELECT. Структура таблицы sysf i I es приведена в табл. 14.3. Таблица. Структура системной таблицы sysfiles Имя столбца Тип данных Назначение Field Smallint Идентификационный номер ID файла в базе данных GroupID Smallint ID группы файлов, к которой принадлежит файл Size Int Текущее количество страниц в файле Maxsize Int Максимальный размер файла.

Значение -1 означает, что размер файла не ограничен Growth Int Шаг приращения Status Int Текущий статус файла Perf Int Зарезервировано Name Nchar 128 Логическое имя файла Filename Nchar 260 Физическое имя файла Таблица sysf lies описывает подробную структуру файлов. Более компактное описание файлов хранится в таблице sysfilesl, которая содержит столбцы status, field, name и filename, назначение которых аналогично.

Для просмотра информации о файлах базы данных с помощью таблицы sysfilesl можно выполнить следующую команду SELECT FROM sysfilesl В итоге будет возвращен следующий результат status fileid name filename 3 1 pubs data pubs.mdf 49218 2 pubsjog data pubs log.ldf 2 row s affected Описание групп файлов, созданных в базе данных, хранится в системной таблице sysfilegroups. Каждая строка этой таблицы соответствует одной группе.

Структура этой таблицы приведена в табл. Таблица. Структура таблицы sysfilegroups Имя столбца Тип данных Назначение GroupID Allocpolicy Status Groupname Smallint Smallint Ins Sysname Идентификационный номер группы файлов Зарезервировано Текущий статус группы 0x8- READONLY, 0x10 - Имя группы файлов DEFAULT Например, для получения информации о группах файлов, определенных в базе данных pubs, можно использовать следующий запрос SELECT FROM sysfilegroups Будет возвращен примерно следующий результат groupld allocpolicy status groupname 1 0 16 PRIMARY 1 row s affected