Re: Как распечатать все хранимые процедуры в БД?

From
Vit Karetny (2:5020/400)
To
Victor Wagner
Date
2006-04-03T15:20:04Z
Area
SU.DBMS.SQL
From: "Vit Karetny" <lgb@repco.ru>

  Милостивый государь г-н Victor Wagner!
Mon Apr 03 2006 15:25, Victor Wagner wrote to "Vit Karetny":

 VK>> Надо распечатать все хранимые процедуры из БД, желательно в
 VK>> текстовый файл накатом. Подскажите, как это сделать? 

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

 VW> Поэтому для более точной подсказке желательно указать тип используемого
 VW> SQL сервера и версию.

   У меня MS SQL Server 2000.
   Спасибо за наводку, тексты действительно нашлись в таблице sysobjects.
Вывод оттуда делает стандартная процедура sp_helptext. Так что окончательный
пакет для полного дампа процедур оказался несложным:

DECLARE @tablename sysname
DECLARE Tables CURSOR FOR
  SELECT name FROM sysobjects
    WHERE OBJECTPROPERTY(OBJECT_ID(name),'ISPROCEDURE') = 1
    ORDER BY name

OPEN Tables
FETCH Tables INTO @tablename
WHILE (@@FETCH_STATUS = 0) BEGIN
  EXEC sp_helptext @tablename
  FETCH Tables INTO @tablename
END
CLOSE Tables
DEALLOCATE Tables

  Кроме того, надо ещё настроить Query Analyzer на вывод в файл.

На сем позвольте закончить, примите уверения в совершеннейшем к Вам почтении.

--- ifmail v.2.15dev5.3
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)
SEEN-BY: 46/50 50/12 203 450/159 186 1024 451/30 454/9 461/43 132 640 469/999
SEEN-BY: 4614/20 4616/3 4625/8 4627/10 4641/444 5000/76 5000 5001/5001 5006/1
SEEN-BY: 5007/1 5010/53 70 5011/13 5012/23 46 5015/28 5019/31 5020/86 175 194
SEEN-BY: 5020/400 545 604 639 715 758 830 892 982 1042 1057 1200 1523 1604
SEEN-BY: 5020/1665 1909 1922 2013 2020 2238 4441 5021/3 29 5022/128 5025/3 750
SEEN-BY: 5026/10 14 45 5027/12 5029/32 5030/115 217 436 473 556 966 1063 1339
SEEN-BY: 5030/1900 5034/13 5035/38 5036/1 5040/47 5042/13 5045/7 5047/47
SEEN-BY: 5049/1 5051/15 5053/16 5054/1 8 9 28 35 37 45 63 67 5055/95 5057/1
SEEN-BY: 5059/9 5060/88 5061/15 5062/1 5066/18 5070/1222 5077/70 5080/68 1003
SEEN-BY: 5082/6 5083/21 5084/32 5085/13 5090/106 5093/27 5095/20 5096/18
SEEN-BY: 5099/133 6000/0 1 12 6009/1
PATH: 5020/400 4441 545 5054/1 37