Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Начальник задал задачу, подскажите!  [new]
devious
Member

Откуда:
Сообщений: 369
Поставлена задача, написать запрос который проверит все хранимые процедуру в Microsoft SQL server 2000, и покажет те в которых есть упоминание о коннекте к другой базе, процедур немерянно и копаться руками очень очень долго. Я вот сижу и не пойму возможно ли написать такой запрос? Спасите :)
2 дек 05, 09:24    [2133568]     Ответить | Цитировать Сообщить модератору
 Re: Начальник задал задачу, подскажите!  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Смотрим в табличку syscomments.
2 дек 05, 09:28    [2133579]     Ответить | Цитировать Сообщить модератору
 Re: Начальник задал задачу, подскажите!  [new]
devious
Member

Откуда:
Сообщений: 369
а не поможете глупому с запросом ?
2 дек 05, 09:36    [2133612]     Ответить | Цитировать Сообщить модератору
 Re: Начальник задал задачу, подскажите!  [new]
попробуй
Guest
очень быстро надо?

use <WORK_DBNAME>

select o.id, o.xtype, o.name
  from dbo.syscomments        as c
    inner join dbo.sysobjects as o on o.id = c.id
  where c.text like '%<USED_DB_NAME>..%'

select o.id, o.xtype, o.name
  from dbo.syscomments        as c
    inner join dbo.sysobjects as o on o.id = c.id
  where c.text like '%<USED_DB_NAME>.dbo.%'

select o.id, o.xtype, o.name
  from dbo.syscomments        as c
    inner join dbo.sysobjects as o on o.id = c.id
  where c.text like '%<USED_DB_NAME>.<SOME_OTHER_USED_SCHEMA>.%'

Есть только одна проблема поле text разрезвается по 8000 :)... и если попадется на такую границу... то:

-- для поиска по разрезанным кускам
select distinct o.id, o.xtype, o.name
  from dbo.syscomments         as c1
    inner join dbo.syscomments as c2 on c2.id = c1.id
                                    and c2.number = c1.number + 1
    inner join dbo.sysobjects  as o  on o.id = c1.id
  where right(c1.text, 100) + left(c2.text, 100) like '%бла-бла-бла%'

А вообще, каждый второй датабазер в своей жизни писал процедурки поиска по телам SQL-объектов... (я тоже когда-то ваял, но использую правда чужую и свою потерял... чужую дать не могу :)
2 дек 05, 09:38    [2133621]     Ответить | Цитировать Сообщить модератору
 Re: Начальник задал задачу, подскажите!  [new]
devious
Member

Откуда:
Сообщений: 369
спасибо огромное, я вот пока еще не дошел до этого :)
2 дек 05, 09:44    [2133647]     Ответить | Цитировать Сообщить модератору
 Re: Начальник задал задачу, подскажите!  [new]
serg08
Member

Откуда:
Сообщений: 141
Учитывая , что обращение к другой базе может быть и забито в строку для
ExecuteSql, то единственным способом вижу через Enterprice manager извлечение скриптов прцедур и поиск текста в скриптах.
Не помню есть ли системная процедура извлечения скриптов всех процедур.
2 дек 05, 09:51    [2133679]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить