我正在尝试编写一个存储过程,该操作将DROPs的列存储索引删除,确实存在索引创建脚本,与该索引相关联的表的SSDT表设计器确实显示了正确的索引,而Visual Studio是产生“过程:[dbo]。[TestProcedure]具有对对象[dbo]。[TestTable]。[TestIndex]的未解析的引用”。 “构建操作”设置被设置为在所有三个文件上构建,并且所有对象都在同一架构中。我正在使用带有Update 3和SSDT 14.0.6的Visual Studio Professional 2015 有什么方法可以解决以下代码所产生的参考警告?
我尝试了本文中提出的解决方案,但未能解决问题:SQL Server Data Tools (SSDT) warns of an unresolved table reference, but the table exists
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
答案 0 :(得分:1)
您可以使用动态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;