Падение индексов или изменение

Я пытаюсь удалить ограничение pk и индексировать индекс в целевой таблице в informatica, эти приведенные ниже инструкции работают в первый раз успешно.

IF EXISTS (SELECT Name FROM sysindexes WHERE Name = 'xyz') DROP INDEX [xyz] ON [dbo].[Table_Name]; IF EXISTS (SELECT Name FROM sysindexes WHERE Name = 'xyz') ALTER TABLE [dbo].[Table_Name] DROP CONSTRAINT [xyz]; 

Но если я запускаю тот же запрос во второй раз, он дает ошибку:

Невозможно удалить индекс dbo.Table_Name.xyz, поскольку он не существует или у вас нет разрешения

Мне нужен синтаксис If ... Else like if, если существует drop else end или success something.

Вероятная причина этого заключается в том, что у вас может быть более одного индекса с именем xyz в вашей базе данных. Оператор IF EXISTS SELECT не учитывает, какая таблица xyz .

Вы можете проверить это условие самостоятельно, выполнив инструкцию select самостоятельно.

Попытайтесь изменить свой запрос следующим образом, чтобы ограничить область действия:

 If Exists ( Select * From sys.indexes Where name = 'xyz' And Object_Id = Object_Id('dbo.Table_Name') ) Drop Index xyz On dbo.Table_Name; 

Один из способов обойти эту проблему – обмануть парсер:

 IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE SCHEMA_NAME = 'dbo' AND TABLE_NAME = 'Table_Name' AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND CONSTRAINT_NAME = 'xyz') BEGIN EXEC('ALTER TABLE [dbo].[Table_Name] DROP CONSTRAINT [xyz]') END 
Interesting Posts

Расчет зарплаты в sql-сервере

Как установить параметр кодировки для SQL Server Bulk statement?

Сценарии сценариев SQL Server

Значение кнопки радио в базе данных SQL

Полнотекстовый индекс, не возвращающий результаты из pdf filestream

вставить в select не существует sql server несколько столбцов первичный ключ voilation

SQL Server: рекурсивный расширенный запрос для двух условных логик Не показывает отношения иерархии

Ошибка при использовании BCP и скрытого пути для экспорта данных из SQL

SQL Server: как вы можете превратить серию последовательных начальных и конечных дат в единый начальный диапазон?

Sql Server STUFF – он должен работать с позицией> 8000?

Хранимая процедура выпадает случайно

Запрос на еженедельный отчет

База данных: отношение «один ко многим» (или «один к одному»)

Как сделать несколько столбцов агрегата в сводной таблице с использованием одного столбца в SQL Server?

SQL-запрос для отображения данных db

Давайте будем гением компьютера.