| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > как отличить пользователькую поцедуру от системной |
| Автор: 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 , но запрос вытягивает так же некоторое кол-во системных проседур, а надо только пользовательские |
| Автор: TaNK 11.7.2008, 08:05 | ||||
а так? вытянет все системные процедуры
|
| Автор: Evropeec 11.7.2008, 10:38 | ||||
нет так не пойдёт, у меня системные процедуры первые буквы имеют "sp_*" и "xp_*", но это тоже не выход. У меня так, у тебя по другому, у третьего еще как-нибудь. Да и от версии тоже менятся будут. Пока остановились на пространстве имён, если ничего другого не найдём. |
| Автор: TaNK 11.7.2008, 10:58 | ||||
| а какой сервой то? Добавлено через 5 минут и 42 секунды на SQL2000 можно так
или так
|
| Автор: Evropeec 11.7.2008, 11:45 |
| Сервер SQL2005. в таблице sys.objects есть поле is_ms_shipped по идее там значения 0=юзер, 1=система. Подходит для триггеров и view, а вот для процедур нет, у системных тоже стоит 0. |
| Автор: TaNK 11.7.2008, 11:55 | ||
а поля category или status есть? |
| Автор: Evropeec 11.7.2008, 12:09 | ||||
Нет, ничего такого нет. Но по идее то должно быть где-нибудь, ведь сервер обсолютно правильно выполняет
|
| Автор: Magnifico 11.7.2008, 16:11 | ||
|