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

Откуда:
Сообщений: 360
Возникла проблема, имеется SQL Server 2000 на компе за которым никто не работает вообще, на донном сервере есть самописная процедра, и периодически она исчезает, есть ли способ отловить этот момент когда и кто этому помагает?

и еще вот такой код не выполняется

IF EXISTS(SELECT * FROM sysobjects WHERE [NAME]='MyProc') DROP PROCEDURE MyProc

go

CREATE   PROCEDURE MyProc

Msg 2714, Level 16, State 3, Procedure MyProc, Line 77
There is already an object named 'MyProc' in the database.

но при этом в этот момент она там есть
9 ноя 09, 04:51    [7899452]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
GimTonik
но при этом в этот момент она там есть

В схеме dbo ?
9 ноя 09, 04:55    [7899453]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
GimTonik
Member

Откуда:
Сообщений: 360
Roman S. Golubin
GimTonik
но при этом в этот момент она там есть

В схеме dbo ?


ну да
9 ноя 09, 05:21    [7899464]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
GimTonik

IF EXISTS(SELECT * FROM sysobjects WHERE [NAME]='MyProc') 
DROP PROCEDURE MyProc



так вы её и удаляете своим скриптом
9 ноя 09, 06:36    [7899482]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
GimTonik
Member

Откуда:
Сообщений: 360
Knyazev Alexey
GimTonik

IF EXISTS(SELECT * FROM sysobjects WHERE [NAME]='MyProc') 
DROP PROCEDURE MyProc



так вы её и удаляете своим скриптом



А если вопорс прочитать по внимательнее? Я ее пытаюсь так удалить для создания новой но она не удаляется а выдает сообщение There is already an object named 'MyProc' in the database.
9 ноя 09, 06:38    [7899483]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
GimTonik
There is already an object named 'MyProc' in the database.


а кто вам сказал, что именно процедура там есть? а не какой-то левый объект...например:

use tempdb
go

Create table MyProc (id int)
go

Create procedure MyProc 
as
select GETDATE()
go
9 ноя 09, 06:51    [7899489]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
проверяйте наличие процедуры лучше так:

IF EXISTS (SELECT OBJECT_ID('MyProc', 'P')) ...
9 ноя 09, 06:52    [7899494]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
Knyazev Alexey
проверяйте наличие процедуры лучше так:

IF EXISTS (SELECT OBJECT_ID('MyProc', 'P')) ...
Имхо проще так:
IF OBJECT_ID('MyProc', 'P') IS NOT NULL
    DROP PROC NyProc
9 ноя 09, 09:22    [7899659]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
GimTonik
Member

Откуда:
Сообщений: 360
да процедура то ладно, я это просто привел как пример странности поведения, т.е. то что в тот момент когда я выполняю этот код она там есть это факт.

основная проблема то что эта процедура куда то исчезает, в логах сервака никаких упоминаний об этом нет. и получается что те кто за настройку сервака отвечает делают не виннные глазки и говорят мы ни че не делали
9 ноя 09, 09:59    [7899843]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
GimTonik
да процедура то ладно, я это просто привел как пример странности поведения, т.е. то что в тот момент когда я выполняю этот код она там есть это факт.

основная проблема то что эта процедура куда то исчезает, в логах сервака никаких упоминаний об этом нет. и получается что те кто за настройку сервака отвечает делают не виннные глазки и говорят мы ни че не делали

1. вы есть сиквел админ?
2. "те кто за настройку сервака отвечает" - есть сиквел админы?
3. если на п.1 ответ "нет", а на п.2 ответ "да", то создайте процедуру при них и пусть они следят "кто и чего"
9 ноя 09, 10:09    [7899903]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
Glory
Member

Откуда:
Сообщений: 104760
GimTonik
да процедура то ладно, я это просто привел как пример странности поведения, т.е. то что в тот момент когда я выполняю этот код она там есть это факт.

основная проблема то что эта процедура куда то исчезает, в логах сервака никаких упоминаний об этом нет. и получается что те кто за настройку сервака отвечает делают не виннные глазки и говорят мы ни че не делали

А откуда у них права на такие действия, вы себя не спрашивали ?
9 ноя 09, 10:10    [7899910]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
Sinner
Member

Откуда:
Сообщений: 453
а что будет, если сделать

exec MyProc
?

_________________________________________
Спасибо за понимание.
9 ноя 09, 11:19    [7900340]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
По-хорошему, должно быть так:

IF EXISTS(SELECT * FROM sysobjects WHERE id = object_id('[схема].MyProc')) 
  DROP PROCEDURE [схема].MyProc

go

CREATE   PROCEDURE [схема].MyProc
..

Если у вас могут быть экзотические ситуации, когда MyProc может быть вовсе не процедурой, то нужно писать доп. проверки.
9 ноя 09, 12:00    [7900603]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
GimTonik
Member

Откуда:
Сообщений: 360
и я и они там админы (они с серваком в основном работают я под сиквел тока пишу и получается что раз процедуру я писал значит мой косяк), процедуру эту крутит джаб каждые три минуты, и в один момент она "куда-то" девается предъявить им ничего не могу так где доказательства,
9 ноя 09, 12:03    [7900628]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
GimTonik
и я и они там админы (они с серваком в основном работают я под сиквел тока пишу и получается что раз процедуру я писал значит мой косяк), процедуру эту крутит джаб каждые три минуты, и в один момент она "куда-то" девается предъявить им ничего не могу так где доказательства,
Ну дык. Тогда удалять и создавать надо в транзакции.
9 ноя 09, 12:04    [7900647]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
GimTonik
и я и они там админы (они с серваком в основном работают я под сиквел тока пишу и получается что раз процедуру я писал значит мой косяк), процедуру эту крутит джаб каждые три минуты, и в один момент она "куда-то" девается предъявить им ничего не могу так где доказательства,

куда-то девается - это означает, что её физически нет?
профайлер запустите и смотрите что у вас там происходит.
9 ноя 09, 12:27    [7900828]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
GimTonik
Member

Откуда:
Сообщений: 360
Дедушка
GimTonik
и я и они там админы (они с серваком в основном работают я под сиквел тока пишу и получается что раз процедуру я писал значит мой косяк), процедуру эту крутит джаб каждые три минуты, и в один момент она "куда-то" девается предъявить им ничего не могу так где доказательства,

куда-то девается - это означает, что её физически нет?
профайлер запустите и смотрите что у вас там происходит.


совершенно верно, причем периодичности нет, неделя месяц....
9 ноя 09, 12:41    [7900982]     Ответить | Цитировать Сообщить модератору
 Re: Отловить кто удаляет процедуру  [new]
ADx
Guest
А еще есть трассировка ...
9 ноя 09, 13:11    [7901257]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить