如何使用SSDT创建索引

时间:2016-09-28 19:10:28

标签: sql-server-data-tools

在SSDT中创建SQL函数可以顺利运行。当我修改函数的SQL时,我可以生成DACPAC,然后发布DACPAC并自动更新数据库。我的函数SQL看起来像:

CREATE FUNCTION [dbo].[foo]
(
...
)
RETURNS int
AS
BEGIN   
...   
END

这是一个名为foo.sql的文件,其构建操作为Build。

当我需要添加数据库索引时,我将一个索引文件添加到我的项目中并输入:

CREATE NONCLUSTERED INDEX [idxFoo]
ON [dbo].[tblFoo] ([id])
INCLUDE ([fooVal])

如果我尝试构建它,我会收到几个SQL71501错误。

我被迫将公共文件集中的所有索引添加到PostDeploy。

2 个答案:

答案 0 :(得分:0)

请确保在项目中定义了所有引用的对象。

所有引用对象的定义必须存在于数据库项目中。这是因为数据库项目旨在将数据库模式表示为有效的独立实体。这样就可以让工具验证你的对象是否正确 - 即它们中包含的任何引用都引用了存在的对象。

答案 1 :(得分:0)

我找到了很多关于包括DACPAC参考项目的参考资料 - 我做了。这适用于大多数项目,但不适用于索引。我不知道为什么。

我需要将表定义添加到索引中“缺少”引用对象的项目中。为了让脚本创建表,我使用了VS Sql Server对象资源管理器。右键单击表格并选择查看代码(包括表格的现有索引和其他元素)。 NOT 脚本As-> (仅限表创建sql)如果您不这样做,SQLPackage.exe将删除项目中未定义的索引。