Неразрешенная ссылка на индекс, несмотря на его существование - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь написать хранимую процедуру, которая DROPs индексирует хранилище столбцов, сценарий создания индекса существует, конструктор таблицы SSDT для таблицы, связанной с рассматриваемым индексом, отображает правильный индекс, и все же Visual Studioвыдача «Процедура: [dbo]. [TestProcedure] имеет неразрешенную ссылку на объект [dbo]. [TestTable]. [TestIndex]».Параметр «Build Action» настроен на сборку всех трех файлов, и все объекты находятся в одной схеме.Я использую Visual Studio Professional 2015 с обновлением 3 и SSDT 14.0.6 Можно ли как-то разрешить справочное предупреждение, полученное с помощью приведенного ниже кода?

Я попробовал решение, предложенное в этомопубликовать, но это не решило проблему: Инструменты данных SQL Server (SSDT) ​​предупреждают о неразрешенной ссылке на таблицу, но таблица существует

TestTable.sql

CREATE TABLE [dbo].[TestTable]( [Id] INT NOT NULL PRIMARY KEY )

TestIndex.sql

CREATE CLUSTERED COLUMNSTORE INDEX [TestIndex] 
ON [dbo].[TestTable]

TestProcedure.sql

CREATE PROCEDURE dbo.TestProcedure
AS
DROP INDEX TestIndex ON dbo.TestTable

1 Ответ

0 голосов
/ 30 декабря 2018

Вы можете использовать динамический SQL:

CREATE PROCEDURE dbo.TestProcedure
AS
BEGIN
  EXEC('DROP INDEX IF EXISTS TestIndex ON dbo.TestTable');
END;

В качестве альтернативы можно добавить только IF EXISTS:

CREATE PROCEDURE dbo.TestProcedure
AS
BEGIN
  DROP INDEX IF EXISTS TestIndex ON dbo.TestTable;
END;
...