Подтвердить что ты не робот

Исчезающая хранимая процедура

Итак, не уверен, что происходит. Но у меня есть хранимая процедура и она исчезает из моей БД в SQL 2k.

Я могу добавить его еще раз, а затем попытаться выполнить его из своего веб-приложения, и я получаю исключение, говорящее, что хранимая процедура не может быть найдена. Итак, больно вернуться к управлению и обновиться, и его снова стало!?!

здесь находится конфиг для сохраненного proc:

set ANSI_NULLS OFF
set QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[USP_Equipment_Delete]
    @EquipmentID int
AS

DELETE FROM [dbo].[Equipment]
WHERE
    [EquipmentID] = @EquipmentID

Ни одна другая хранимая процедура не исчезает. Это единственный. У меня там легко 100. Все они используют один и тот же класс SQLHelper. Это просто исчезает!!!??!!

Любая помощь или предложения приветствуются!

Большое спасибо!

4b9b3361

Ответ 1

Вы создавали этот или другой сохраненный proc и в конце вашего кода, возможно, после комментария, где вы его не видели, у вас есть падение этого процесса.

Взгляните на свой db, используя:

select syo.name
from syscomments syc
    join sysobjects syo on
        syo.id = syc.id
where syc.[text] like '%DROP PROC%'

Ответ 2

У меня была та же проблема, и я просто исправил ее:

В файле script отсутствовал оператор "GO" между окончанием хранимой процедуры и началом следующего оператора "IF EXIST THEN DROP".

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

Кажется нам так очевидно сейчас, но в то время это не имело никакого смысла. Мы обнаружили, что он запускает профилировщик SQL в отношении базы данных клиентов, которая имеет проблему в поле.

Ответ 3

Вы using правильная база данных?

Try

using [database name]

перед выполнением хранимой процедуры, просто чтобы убедиться.

Ответ 4

Есть ли у вас ПРОЦЕДУРА CREATE? Вы не можете выполнить ALTER процедуру, если она не существует.

Ответ 5

Возможно, код для доступа к хранимой процедуре использует другой контекст, отличный от dbo. Не забудьте добавить dbo.USP_Equipment_Delete в код, используя его.

Ответ 6

Убедитесь, что в "Начальном каталоге" в строке подключения установлена ​​правильная база данных.

Поместите базу данных в однопользовательский режим (и убедитесь, что вы единственный пользователь) и проверьте, не исчезла ли процедура каждый час?

Ответ 7

Возможно, есть работа, которая периодически восстанавливает старую резервную копию?

Ответ 8

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

Решение: пользователь базы данных должен иметь права на удаление, создание и изменение в базе данных, в которой будут созданы "Хранимые процедуры".

Ответ 9

Если он есть, то этот запрос должен вернуть запись:

SELECT * FROM sysobjects 
WHERE id = OBJECT_ID('USP_Equipment_Delete') 
      AND OBJECTPROPERTY(id, N'IsProcedure') = 1