部署后脚本中的执行过程-SSDT

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了部署后脚本中的执行过程-SSDT相关的知识,希望对你有一定的参考价值。

在我的部署后脚本文件中,我正在执行最初在db项目本身中创建的存储过程:

数据库项目:

enter image description here

但是每当我发布数据库项目时,都会出现以下错误

过程st_company_register,第56536行插入失败,因为以下SET选项的设置不正确:“ ANSI_PADDING”。校验SET选项正确用于索引视图和/或索引在计算列和/或过滤索引和/或查询通知上和/或XML数据类型方法和/或空间索引操作。

以下为步骤:

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO


    Create PROCEDURE [dbo].[st_company_register]
               @languageID int,
               @company_typeID int,
               @company_name nvarchar(100)
--Untill the end of proc

这是执行代码:

 exec [dbo].[st_company_register]
           @languageID =1,
           @company_typeID =4,
           @company_name =N'Company Name'

这是我的db项目设置,其ANSI_PADDING处于:

enter image description here

有什么想法吗?

答案

为了避免在执行存储过程时出现此问题在部署后脚本中,只需用Set ANSI_PADDING ON包装执行语句,如下所示:

Set ANSI_PADDING ON

exec [dbo].[Proc]
           @languageID =1,
           @company_typeID =4,
           @company_name =N'Company Name'

Set ANSI_PADDING OFF

以上是关于部署后脚本中的执行过程-SSDT的主要内容,如果未能解决你的问题,请参考以下文章

部署 SQL SSDT 项目时如何跟踪数据更改

如何在不耗尽内存的情况下部署包含 130,000 多个条目的脚本

SSDT/VS2015 数据库部署——发布忽略嵌套视图

简化 SSDT 数据库项目到 localdb 的部署

VS 2013 数据库项目:基于构建配置运行的部署后脚本

适用于 Oracle 数据库的 SSDT 等效项