Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как отличить пользователькую поцедуру от системной 
V
    Опции темы
Evropeec
Дата 10.7.2008, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



как отличить пользователькую поцедуру от системной?

пытался делать через SMO в цыкле

            For Each myProc In mydbP.StoredProcedures
                    If Not myProc.IsSystemObject Then
......

, но эта проверка "myProc.IsSystemObject" работает очень долго

делаю так

select * 
from sys.objects o 
where o.[type]='P' 
order by name

, но запрос вытягивает так же некоторое кол-во системных проседур, а надо только пользовательские

 smile 
PM MAIL   Вверх
TaNK
Дата 11.7.2008, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(Evropeec @ 10.7.2008,  17:19)
как отличить пользователькую поцедуру от системной?

пытался делать через SMO в цыкле

            For Each myProc In mydbP.StoredProcedures
                    If Not myProc.IsSystemObject Then
......

, но эта проверка "myProc.IsSystemObject" работает очень долго

делаю так

select * 
from sys.objects o 
where o.[type]='P' 
order by name

, но запрос вытягивает так же некоторое кол-во системных проседур, а надо только пользовательские

 smile

а так? вытянет все системные процедуры
Код

select * 
from sysobjects o 
where o.[name] like 'dt_%'  and o.[type] = 'p' 
order by name



--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Evropeec
Дата 11.7.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



Цитата


а так? вытянет все системные процедуры

Код

 select * 
from sysobjects o 
where o.[name] like 'dt_%'  and o.[type] = 'p' 
order by name





нет так не пойдёт, у меня системные процедуры первые буквы имеют "sp_*" и "xp_*", но это тоже не выход. У меня так, у тебя по другому, у третьего еще как-нибудь. Да и от версии тоже менятся будут. Пока остановились на пространстве имён, если ничего другого не найдём. 
PM MAIL   Вверх
TaNK
Дата 11.7.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



а какой сервой то?

Добавлено через 5 минут и 42 секунды
на SQL2000 можно так
Код

select * 
from sysobjects o 
where o.category = 2 and o.[type] = 'p' 
order by name
  
или так 
Код

select * 
from sysobjects o 
where o.status < 0 and o.[type] = 'p' 
order by name


Это сообщение отредактировал(а) TaNK - 11.7.2008, 10:58


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Evropeec
Дата 11.7.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



Сервер SQL2005. 
в таблице sys.objects есть поле is_ms_shipped по идее там значения 0=юзер, 1=система. Подходит для триггеров и view, а вот для процедур нет, у системных тоже стоит 0. 
PM MAIL   Вверх
TaNK
Дата 11.7.2008, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(Evropeec @ 11.7.2008,  11:45)
Сервер SQL2005. 
в таблице sys.objects есть поле is_ms_shipped по идее там значения 0=юзер, 1=система. Подходит для триггеров и view, а вот для процедур нет, у системных тоже стоит 0.

а поля category или status есть? 


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Evropeec
Дата 11.7.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



Цитата

а поля category или status есть?  


Нет, ничего такого нет.
Но по идее то должно быть где-нибудь, ведь сервер обсолютно правильно выполняет 
Код

         If Not myProc.IsSystemObject Then
 , т.е. у него где-то хранится, что эта процедура системная или не системная.

PM MAIL   Вверх
Magnifico
Дата 11.7.2008, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 10
Всего: 17



Код

select * from sys.all_objects o
where  o.[type] = 'p'  and is_ms_shipped =0



--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0507 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.