Исчезающая хранимая процедура
Итак, не уверен, что происходит. Но у меня есть хранимая процедура и она исчезает из моей БД в 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. Это просто исчезает!!!??!!
Любая помощь или предложения приветствуются!
Большое спасибо!
Ответы
Ответ 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