При установке SQL Server всегда создаются четыре базы данных, содержащие системные таблицы:
- Master;
- Msdb;
- Model;
- Tempdb.
Любая база данных, в том числе и перечисленные системные базы, содержит 18 системных таблиц, которые хранят информацию, определяющую структуру и организацию этой базы данных. В табл. 2.1 перечислены эти таблицы с кратким описанием их назначения. Мы специально не останавливаемся на перечислении колонок таблиц. Вы можете воспользоваться средствами SQL Server Enterprise Manager, чтобы получить информацию о колонках. Просто обратитесь к окну свойств требуемой таблицы либо откройте ее для просмотра.
Таблица 2.1. Системные таблицы, содержащиеся в каждой базе данных
| Название таблицы | Описание |
| Sysallocations | Содержит сведения о размещении объектов внутри базы данных |
| Syscolumns | В таблице перечислены поля всех таблиц и представлений, принадлежащих этой базе данных. Здесь также содержится информация о параметрах хранимых процедур |
| Syscomments | Таблица содержит определения объектов баз данных |
| Sysconstraints | Содержит соответствия между ограничениями (constraints) и объектами, которым они принадлежат |
| Sysdepends | В этой таблице хранятся ссылки на объекты, которые были использованы при определении других объектов баз данных |
| Sysfilegroups | В таблице перечислены все группы файлов, принадлежащие этой базе данных |
| Sysfiles | Здесь перечислены все файлы базы данных |
| Sysforeignkeys | Содержит информацию, определяющую ограничение FOREIGN KEY |
| Sysfulltextcatalogs | В таблице перечислены все полнотекстовые каталоги, присоединенные к базе данных |
| Sysindexes | Таблица используется для хранения информации об индексах и таблицах базы данных |
| Sysindexkeys | Таблица хранит сведения о ключах и колонках индексов |
| Sysmembers | В таблице перечислены все участники ролей базы данных |
| Sysobjects | Сведения обо всех объектах, создаваемых в базе данных, содержатся в этой системной таблице |
| Syspermissions | Таблица содержит информацию о предоставленных либо отклоненных правах на доступ к объектам базы данных для ролей, пользователей и групп пользователей |
| Sysprotects | В таблицу заносятся сведения о разрешениях, которые предоставляются либо отзываются посредством команд GRANTиREVOKE |
| Sysreferences | Содержит соответствия между ограничением FOREIGN KEYи колонками, на которые оно ссылается |
| Systypes | Все типы данных, как стандартные, так и пользовательские, хранятся в этой таблице |
| Sysusers | В таблице содержится список всех пользователей базы данных. Список включает пользователей SQL Server и Windows NT, роли SQL Server и группы пользователей Windows NT |
Поскольку системные таблицы содержат сведения, необходимые для успешного функционирования сервера, пользователь не должен напрямую изменять хранящуюся в них информацию. По умолчанию прямой доступ к системным таблицам и использованию Transact-SQL-команд SELECT, INSERT, UPDATE и DELETE запрещен. Для изменения данных необходимо использовать системные хранимые процедуры. Другой альтернативой является применение приложений, использующих SQL-DMO API. Microsoft вообще не рекомендует изменять значения в системных таблицах напрямую, настойчиво рекомендуя использовать хранимые процедуры, что гарантирует правильность и надежность выполняемых операций. Имеющиеся хранимые процедуры охватывают все возможные ситуации управления базами данных, так что необходимость прямого доступа к системным таблицам практически исключена. Кроме того, использование в прикладных приложениях хранимых процедур позволяет гарантировать, что работоспособность программы сохранится даже при изменении структуры системных таблиц в следующих версиях SQL Server.