Как администратор баз данных SQL Server, важно знать о различных инструментах и методиках, доступных для управления и устранения проблем ваших баз данных. Хотя SQL Server предоставляет широкий спектр встроенных системных хранимых процедур, также существуют некоторые полезные неофициальные хранимые процедуры, которые могут пригодиться в определенных ситуациях. В этой статье мы рассмотрим несколько из этих неофициальных хранимых процедур и то, как их использовать.
sp_fixindex
Хранимая процедура sp_fixindex может использоваться для исправления повреждений в системной таблице путем пересоздания индекса. Это может быть особенно полезно, когда возникают проблемы с повреждением в вашей базе данных. Вот пример использования:
EXEC sp_fixindex 'pubs', 'sysindexes', 2sp_lock2
При работе с блокировками в SQL Server часто рекомендуется использовать системную хранимую процедуру sp_lock. Однако существует улучшенная версия под названием sp_lock2, которая предоставляет дополнительную информацию, такую как имя таблицы и владелец. Вот пример использования:
EXEC sp_lock2sp_who2
Хранимая процедура sp_who2 возвращает подробную информацию о текущих пользователях и процессах SQL Server. Она предоставляет дополнительную информацию, такую как время CPU, дисковый ввод-вывод, последний пакет и имя программы по сравнению с хранимой процедурой sp_who. Вот пример использования:
EXEC sp_who2sp_tempdbspace
Хранимая процедура sp_tempdbspace может использоваться для получения общего размера и использованного пространства базы данных tempdb. Это может быть полезно для контроля использования пространства базы данных tempdb. Вот пример использования:
EXEC sp_tempdbspacesp_MShelpcolumns
Хранимая процедура sp_MShelpcolumns возвращает полную схему таблицы, включая длину, тип, имя и указание, является ли столбец вычисляемым. Вам нужно указать имя таблицы в качестве параметра для работы с этой хранимой процедурой. Вот пример использования:
USE pubs
GO
EXEC sp_MShelpcolumns 'authors'
GOsp_MShelpindex
Хранимая процедура sp_MShelpindex возвращает информацию о имени, статусе, коэффициенте заполнения, именах столбцов индекса и используемом сегменте для заданной таблицы. Вам нужно указать имя таблицы в качестве параметра для работы с этой хранимой процедурой. Вот пример использования:
USE pubs
GO
EXEC sp_MShelpindex 'authors'
GOsp_MShelptype
Хранимая процедура sp_MShelptype возвращает полезную информацию о системных типах данных и пользовательских типах данных. Вы можете указать имя типа данных в качестве параметра, или вы можете запустить хранимую процедуру без параметров, чтобы получить информацию о всех встроенных и пользовательских типах данных. Вот пример использования:
USE pubs
GO
EXEC sp_MShelptypesp_MStablespace
Хранимая процедура sp_MStablespace возвращает количество строк и использованное пространство таблицы и ее индексов. Вам нужно указать имя таблицы в качестве параметра для работы с этой хранимой процедурой. Вот пример использования:
USE pubs
GO
EXEC sp_MStablespace 'authors'
GOsp_MSindexspace
Хранимая процедура sp_MSindexspace возвращает размер в килобайтах, который используют индексы в определенной таблице. Вам нужно указать имя таблицы и имя индекса в качестве параметров для работы с этой хранимой процедурой. Вот пример использования:
USE pubs
GO
EXEC sp_MSindexspace 'authors'
GOsp_MStablerefs
Хранимая процедура sp_MStablerefs возвращает все зависимости для заданной таблицы. Вам нужно указать имя таблицы в качестве параметра для работы с этой хранимой процедурой. Вот пример использования:
USE pubs
GO
EXEC sp_MStablerefs 'titleauthor'
GOsp_MSforeachtable
Иногда вам может потребоваться выполнить одни и те же действия для всех таблиц в базе данных. Хранимая процедура sp_MSforeachtable может использоваться для этой цели. Она позволяет выполнить команду для каждой таблицы в базе данных. Вот пример использования для перестроения всех индексов в вашей базе данных:
EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?')"sp_MSkilldb
Хранимая процедура sp_MSkilldb устанавливает базу данных в состояние подозрения и позволяет dbcc dbrepair уничтожить ее. Это следует использовать с осторожностью и только из контекста базы данных master. Вот пример использования:
USE master
GO
EXEC sp_MSkilldb 'pubs'
GOЭто всего лишь несколько примеров полезных неофициальных хранимых процедур, доступных в SQL Server. Хотя они неофициальные, они могут быть ценными инструментами в определенных ситуациях. Однако важно отметить, что неофициальные функции могут не иметь официальной поддержки со стороны Microsoft, поэтому используйте их на свой страх и риск и всегда тщ