【发布时间】:2020-03-30 06:49:07
【问题描述】:
在我的部署后脚本文件中,我正在执行最初在 db 项目本身中创建的存储过程:
数据库项目:
但是每当我发布数据库项目时,我都会收到以下错误
过程 st_company_register,第 56536 行 INSERT 失败,因为 以下 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'
这是我的数据库项目设置,其中有 ANSI_PADDING:
有什么想法吗?
【问题讨论】:
-
“虽然程序本身的 ANSI_PADDING 设置为 ON,如下所示” - 这个选项真的设置了吗?我只能看到 ANSI_NULLS。
-
是的,正确!让我再检查一下,虽然 ANSI_Padding 标记在数据库设置上,但该过程不是使用该选项创建的
-
1.将“SET ANSI_PADDING ON”放入您的 SP。 2.根据“此设置仅影响新列的定义。创建列后,SQL Server根据创建列时的设置存储值。现有列不受以后更改此设置的影响。” ,我会检查 SP 中使用的当前列 ANSI_PADDING 设置。
-
其实在程序上面插入这个会产生编译错误,这个语句在这个上下文中是不允许的
-
您可以将“SET ansi_padding on”放在您的程序主体中。它不应该产生错误。
标签: sql sql-server continuous-deployment sql-server-data-tools database-project