Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Вопросы и ответы по MS SQL Server" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
MS SQL Server - дело тонкое...
Информационный Канал Subscribe.Ru |
#206<< #207 |
СОДЕРЖАНИЕ СОВЕТЫ Недокументированные системные хранимые процедуры SQL Server 2000
По материалам статьи
Alexander Chigrik:
SQL Server 2000 Undocumented Stored Procedures
В этой статье я хочу рассказать вам про некоторые полезные недокументированные системные хранимые процедуры, поставляемые вместе с SQL Server 2000. sp_MSget_qualified_name Эта хранимая процедура используется для получения имени объекта с именем его владельца по переданному id объекта. Синтаксис: sp_MSget_qualified_name object_id, qualified_name где object_id – id объекта, тип int. qualified_name – имя объекта с именем его владельца, тип nvarchar(512). Ниже приведен пример, как можно получить имя объекта с именем его владельца для таблицы authors базы pubs.
USE pubs DECLARE @object_id int, @qualified_name nvarchar(512) SELECT @object_id = object_id('authors') EXEC sp_MSget_qualified_name @object_id, @qualified_name OUTPUT SELECT @qualified_name GO Результирующий набор данных:--------------------------------------
[dbo].[authors] sp_MSdrop_object Эта хранимая процедура используется для удаления объекта с переданным id объекта, именем объекта и именем владельца объекта (объектом может быть таблица, представление, хранимая процедура или триггер). Если передан id объекта, то имя объекта и имя владельца объекта необязательны. Синтаксис: sp_MSdrop_object [object_id] [,object_name] [,object_owner] где object_id – id объекта, тип int, значение по умолчанию - NULL. object_name – имя объекта, тип sysname, значение по умолчанию - NULL. object_owner – имя владельца объекта, тип sysname, значение по умолчанию - NULL. Ниже приведен пример удаления таблицы titleauthor из базы pubs.
USE pubs DECLARE @object_id int SELECT @object_id = object_id('titleauthor') EXEC sp_MSdrop_object @object_id GO sp_gettypestring Эта хранимая процедура возвращает тип символьного столбца для переданных id таблицы и id столбца. Синтаксис: sp_gettypestring tabid, colid, typestring где tabid – id таблицы, тип int. colid – id столбца, тип int.typestring – строка с описанием типа символьного столбца, тип nvarchar(255). Это возвращаемый параметр.
Ниже приведен пример того, как получить тип символьного столбца для 2 столбца таблицы authors базы pubs.
USE pubs DECLARE @tabid int, @typestring nvarchar(255) SELECT @tabid = object_id('authors') EXEC sp_gettypestring @tabid, 2, @typestring output SELECT @typestring GO
Результирующий набор данных: varchar(40) sp_MSgettools_path Эта хранимая процедура возвращает путь к утилитам и инструментам SQL Server 2000. Синтаксис: sp_MSgettools_path install_path где install_path – путь установки, тип nvarchar(260). Это возвращаемый параметр. Ниже приведен пример того, как получить путь к утилитам и инструментам SQL Server 2000.
USE master DECLARE @install_path NVARCHAR(260) EXEC sp_MSgettools_path @install_path OUTPUT SELECT @install_path GO
Результирующий набор данных: C:\Program Files\Microsoft SQL Server\80\Tools sp_MScheck_uid_owns_anything Эта хранимая процедура возвращает список объектов, владельцем которых является определенный пользователь. Синтаксис: sp_MScheck_uid_owns_anything uid где uid – id пользователя (User ID), тип smallint. id пользователя является уникальным в базе данных. Ниже приведен пример того, как получить список объектов, владельцем которых является пользователь 1 базы pubs.
USE pubs EXEC sp_MScheck_uid_owns_anything 1 GO sp_columns_rowset Эта хранимая процедура возвращает полное описание столбца, включая длину, тип, имя и т.д. Синтаксис: sp_columns_rowset table_name [, table_schema ] [, column_name] где table_name – имя таблицы, тип sysname. table_schema – схема таблицы, тип sysname, значение по умолчанию - NULL. column_name – имя таблицы, тип sysname, значение по умолчанию - NULL. Пример:
USE pubs EXEC sp_columns_rowset 'authors' GO sp_fixindex Эта хранимая процедура может быть использована для исправления ошибок в системной таблице путем пересоздания индекса. Синтаксис: sp_fixindex dbname, tabname, indid где dbname – имя базы данных, тип sysname. tabname – имя системной таблицы, тип sysname. indid - id индекса, тип int. Примечание. Перед использованием этой хранимой процедуры база данных должна находиться в режиме монопольного использования. Для получения дополнительной информации воспользуйтесь этой ссылкой: http://www.windows2000faq.com/Articles/Index.cfm?ArticleID=14051 Пример:
USE pubs EXEC sp_fixindex pubs, sysindexes, 2
GO
sp_MSforeachdb Иногда требуется выполнить одни и те же действия для всех таблиц в базе данных. Для этой цели можно создать курсор, а можно использовать хранимую процедуру sp_MSforeachdb, чтобы достичь того же результата, затратив меньше усилий. Например, вы можете использовать эту хранимую процедуру, чтобы выполнить CHECKDB для всех баз данных на вашем сервере. EXEC sp_MSforeachdb @command1="print '?' DBCC CHECKDB ('?')" sp_MSforeachtable Иногда требуется выполнить одни и те же действия для всех таблиц в базе данных. Для этой цели можно создать курсор, а можно использовать хранимую процедуру sp_MSforeachdb, чтобы достичь того же результата, затратив меньше усилий. Например, вы можете использовать эту хранимую процедуру, чтобы перестроить все индексы в базе данных. EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?')" sp_MShelpcolumns Эта хранимая процедура возвращает полную схему таблицы, включая длину, тип, имя столбцов, а также информацию, является ли этот столбец вычисляемым. Синтаксис: sp_MShelpcolumns tablename [, flags] [, orderby] [, flags2] где tablename – имя таблицы, тип nvarchar(517). flags - flags имеет тип int, значение по умолчанию - 0. orderby - orderby имеет тип nvarchar(10), значение по умолчанию - NULL. flags2 - flags2 имеет тип int, значение по умолчанию - 0. Чтобы получить полное описание столбцов таблицы authors базы pubs, выполните:
USE pubs EXEC sp_MShelpcolumns 'authors' GO sp_MShelpindex Эта хранимая процедура возвращает информацию об имени, статусе, степени заполнения индексов, а также именах индексированных столбцов и файловых группах указанной таблицы. Синтаксис: sp_MShelpindex tablename [, indexname] [, flags] где tablename – имя таблицы, тип nvarchar(517). indexname – имя индекса, тип nvarchar(258), значение по умолчанию - NULL. flags - flags имеет тип int, значение по умолчанию - NULL. Чтобы получить описание индексов таблицы authors базы pubs, выполните:
USE pubs EXEC sp_MShelpindex 'authors' GO sp_MShelptype Эта хранимая процедура возвращает много полезной информации о системных и пользовательских типах данных. Синтаксис: sp_MShelptype [typename] [, flags] где typename – имя типа данных, тип nvarchar(517), значение по умолчанию - NULL. flags - flags имеет тип nvarchar(10), значение по умолчанию - NULL. Чтобы получить информацию обо всех встроенных и пользовательских типах данных в базе pubs, выполните:
USE pubs EXEC sp_MShelptype GO sp_MSindexspace Эта хранимая процедура возвращает в килобайтах размер индексов определенной таблицы. Синтаксис: sp_MSindexspace tablename [, index_name] где tablename – имя таблицы, тип nvarchar(517). index_name – имя индекса, тип nvarchar(258), значение по умолчанию - NULL. Чтобы определить объем, занимаемый индексами таблицы authors базы pubs, выполните:
USE pubs EXEC sp_MSindexspace 'authors' GO sp_MSkilldb Эта хранимая процедура устанавливает базу данных в режим SUSPECT и использует DBCC DBREPAIR, чтобы удалить ее. Эту процедуру следует запускать из контекста базы master. Пользуйтесь ею очень осторожно. Синтаксис: sp_MSkilldb dbname где dbname – имя базы данных, тип nvarchar(258). Чтобы удалить базу pubs, выполните:
USE master EXEC sp_MSkilldb 'pubs' GO sp_MStablespace Эта хранимая процедура возвращает количество строк в таблице и объем, занимаемый таблицей и ее индексами. Синтаксис: sp_MStablespace name [, id] где name – имя таблицы, тип nvarchar(517). id - id имеет тип int, значение по умолчанию - NULL. Чтобы определить объем, занимаемый таблицей authors в базе pubs, выполните:
USE pubs EXEC sp_MStablespace 'authors' GO Результирующий набор данных: Rows DataSpaceUsed IndexSpaceUsed ----------- ------------- -------------- 23 8 32 sp_tempdbspace Эта хранимая процедура используется для определения общего объема, занимаемого базой данных tempdb. Используется без параметров. Синтаксис: sp_tempdbspace Пример: EXEC sp_tempdbspace Результирующий набор данных: database_name database_size spaceused ------------- ----------------------- ----------------------------- tempdb 9.750000 .562500 sp_who2 Эта хранимая процедура возвращает информацию о текущих пользователях и процессах SQL Server 2000, как и процедура sp_who, но предоставляет более подробную информацию. sp_who2 возвращает CPUTime, DiskIO, LastBatch и ProgramName в дополнение к информации, возвращаемой процедурой sp_who. Синтаксис: sp_who [loginame] где loginame – логин пользователя. Если не передан, то процедура возвращает информацию по всем активным пользователям SQL Server. Следующий пример возвращает информацию для логина 'sa': EXEC sp_who2 'sa' Статьи на русском языке
Microsoft нацелилась на программистов-любителей
Save Your Password Самые популярные темы недели
Суррогатные или естественные
Toggleitem в Reporting Services
|
#206<< #207 |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Адрес подписки |
Отписаться |
В избранное | ||