Текст системных представлений в SQL Server 2005 - PullRequest
1 голос
/ 11 января 2009

Я ищу для просмотра текста системных представлений и процедур в SQL Server 2005 с помощью проводника объектов или sp_helptext.

На самом деле я пришел из SQL Server 2000, где у нас есть функция получения кода представления и хранимой процедуры с помощью диспетчера SQL Server 2000 Enterprise напрямую, но я все еще не могу найти эту функцию в SQL Server 2005 Management Studio и все еще ищет ту же функцию для получения текста представления и процедуры в SQL Server 2005.

Пожалуйста, помогите мне в этом.

Ответы [ 4 ]

3 голосов
/ 11 января 2009

У вас есть доступ к SQL Server Management Studio? Теперь это sys.sp_helptext, и его можно просмотреть на главном компьютере -> Программируемость -> Хранимые процедуры -> Системные хранимые процедуры в браузере объектов и выполнить с помощью

exec sys.sp_helptext ObjectName

Всю информацию, которую вы ищете, можно найти в таблице syscomments , в которой хранятся определения всех представлений, правил, значений по умолчанию, триггеров, ограничений CHECK, ограничений DEFAULT и хранимых процедур. Операторы определения SQL хранятся в столбце «текст».

select text from syscomments  where id =
OBJECT_id('objectname')
order by colid
1 голос
/ 11 января 2009

Эта публикация Stackoverflow содержит сценарий обратного инжиниринга базы данных, который (помимо прочего) обратный инженерам просматривает определения. Из сценария

-- This generates view definitions 
--
select definition + char(10) + 'go' + char(10)
  from sys.sql_modules c
  join sys.objects o
    on c.object_id = o.object_id
  join #views o2
    on o.object_id = o2.object_id

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

select o.name
      ,o.object_id
  into #views
  from sys.objects o
  join sys.schemas s
    on s.schema_id = o.schema_id
 where o.type in  ('V')
   and s.name = @schema

Чтобы получить хранимые процедуры, замените 'P'; чтобы получить функции, заменяющие 'FN' или 'TF'

В базе данных master определения системных хранимых процедур находятся в sys.system_views, 'sys.system_objects , 'sys.system_columns и sys.system_sql_modules. Запросы в сценарии обратного проектирования могут быть легко адаптированы для получения определений элементов системы с помощью этих таблиц.

0 голосов
/ 11 января 2009

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

SELECT * FROM sysobjects
WHERE name LIKE 'dm_%'
order by name

К сожалению, если вы запустите sp_helptext для них, это не даст вам много. Например,

exec sp_helptext   N'sys.dm_os_sys_info'

Возвращает:

CREATE VIEW sys.dm_os_sys_info AS
    SELECT *
    FROM OpenRowset(TABLE SYSINFO)

Все те, которые я пробовал, дали один и тот же результат.

0 голосов
/ 11 января 2009

Если вы просто хотите увидеть текст, который определяет процедуру:

Щелкните правой кнопкой мыши хранимую процедуру и выберите «Изменить». Это покажет SQL, который определяет хранимую процедуру.

Или: щелкните правой кнопкой мыши, сохраненная процедура сценария как, CREATE To, новое окно редактора запросов.

Другие ответы более продвинуты, но я подумал, может быть, вы задали простой вопрос:)

...