如何使用 SSDT 创建索引
How to create Indexes with SSDT
在 SSDT 中创建 SQL 函数工作顺利。当我修改函数的 SQL 时,我可以生成 DACPAC,然后发布 DACPAC,数据库会自动更新。我的函数 SQL 看起来像:
CREATE FUNCTION [dbo].[foo]
(
...
)
RETURNS int
AS
BEGIN
...
END
这是一个名为 foo.sql 的文件,其中包含构建操作。
当我需要添加数据库索引时,我在我的项目中添加了一个索引文件并放入:
CREATE NONCLUSTERED INDEX [idxFoo]
ON [dbo].[tblFoo] ([id])
INCLUDE ([fooVal])
如果我尝试构建它,我会遇到几个 SQL71501 错误。
我被迫将公共文件集中的所有索引添加到 PostDeploy。
请确保所有引用的对象都在项目中定义。
所有引用对象的定义必须存在于您的数据库项目中。这是因为数据库项目旨在将数据库模式表示为有效的独立实体。这样一来,工具就可以验证您的对象是否正确——即其中包含的任何引用都指向存在的对象。
我找到了很多参考资料,包括对项目的 DACPAC 参考资料——我确实这样做了。这适用于大多数项目,但不适用于索引。我不知道为什么。
我需要将 Table 定义添加到索引中 "missing" 引用对象的项目中。为了获得创建 table 的脚本,我使用了 VS Sql Server Object Explorer。右键单击 table 和 select 查看代码 (包括 table 的现有索引和其他元素)。 NOT Script As->(table create sql only) 如果不这样做,SQLPackage.exe 将删除未定义的索引在你的项目中。
在 SSDT 中创建 SQL 函数工作顺利。当我修改函数的 SQL 时,我可以生成 DACPAC,然后发布 DACPAC,数据库会自动更新。我的函数 SQL 看起来像:
CREATE FUNCTION [dbo].[foo]
(
...
)
RETURNS int
AS
BEGIN
...
END
这是一个名为 foo.sql 的文件,其中包含构建操作。
当我需要添加数据库索引时,我在我的项目中添加了一个索引文件并放入:
CREATE NONCLUSTERED INDEX [idxFoo]
ON [dbo].[tblFoo] ([id])
INCLUDE ([fooVal])
如果我尝试构建它,我会遇到几个 SQL71501 错误。
我被迫将公共文件集中的所有索引添加到 PostDeploy。
请确保所有引用的对象都在项目中定义。
所有引用对象的定义必须存在于您的数据库项目中。这是因为数据库项目旨在将数据库模式表示为有效的独立实体。这样一来,工具就可以验证您的对象是否正确——即其中包含的任何引用都指向存在的对象。
我找到了很多参考资料,包括对项目的 DACPAC 参考资料——我确实这样做了。这适用于大多数项目,但不适用于索引。我不知道为什么。
我需要将 Table 定义添加到索引中 "missing" 引用对象的项目中。为了获得创建 table 的脚本,我使用了 VS Sql Server Object Explorer。右键单击 table 和 select 查看代码 (包括 table 的现有索引和其他元素)。 NOT Script As->(table create sql only) 如果不这样做,SQLPackage.exe 将删除未定义的索引在你的项目中。