Sql server 存储过程更改不反映dacpac脚本中的大小写敏感性

Sql server 存储过程更改不反映dacpac脚本中的大小写敏感性,sql-server,sql-server-data-tools,dacpac,Sql Server,Sql Server Data Tools,Dacpac,假设我有一个存储过程,如下所示 ALTER PROCEDURE [dbo].[spTest]( @ServiceId INT, @ReturnMessage VARCHAR(100) OUTPUT ) AS IF(SELECT COUNT(*) FROM Service WHERE ServiceID = @ServiceId)=0 BEGIN SET @ReturnMessage = 'available'; END 一旦我通过大写或小写对

假设我有一个存储过程,如下所示

ALTER PROCEDURE [dbo].[spTest](
    @ServiceId      INT,
    @ReturnMessage      VARCHAR(100) OUTPUT
)    
AS
IF(SELECT COUNT(*) FROM Service WHERE ServiceID = @ServiceId)=0
BEGIN
    SET @ReturnMessage = 'available';
END
一旦我通过大写或小写对任何单词进行更改,一旦我运行dacpac,该更改就不会反映在数据库中

EX:如果我更改为
可用
为大写

BEGIN
    SET @ReturnMessage = 'AVAILABLE';
END
上述变化并未反映在数据库中。如果我做了同样的事情,并在结尾添加了一些评论,如:

BEGIN
    SET @ReturnMessage = 'AVAILABLE'; --did a change
END

以上内容反映在数据库中,没有任何问题。为什么会发生这种情况,谁能解释一下。

下面的
/Publish
参数将决定关键字大小写和注释更改是否被视为更改。您可以在DACPAC发布中查看您的设置,并相应地更改发布设置

/p:IgnoreQuoteIdentifiers=(布尔值'True')
/p:IgnoreComments=(布尔值)


下面的
/Publish
参数将决定关键字大小写和注释更改是否视为更改。您可以在DACPAC发布中查看您的设置,并相应地更改发布设置

/p:IgnoreQuoteIdentifiers=(布尔值'True')
/p:IgnoreComments=(布尔值)


顺便说一下,
存在(选择1…
通常比
(选择计数…=0)更有效。注意,如果将任何值传递给
@ReturnMessage
,它不会被任何内容覆盖。如果您传递了
AVAILABLE
,而该行不存在-
AVAILABLE
将返回。它是否意识到除了字符串文字之外什么都没有发生更改,并且DB使用CI(不区分大小写)排序规则,因此此更改对行为没有影响(我从未测试过这种情况)似乎即使对于对象名也无法覆盖,除非所使用的CS排序规则存在(选择1…
通常比
(选择计数…=0
更有效)。注意,如果将任何值传递给
@ReturnMessage
,则不会被任何内容覆盖。如果您传递了
AVAILABLE
,而该行不存在-
AVAILABLE
将返回。它是否意识到除了字符串文字之外什么都没有发生更改,并且DB使用CI(不区分大小写)排序规则,因此此更改对行为没有影响(我从未测试过这种情况)似乎即使对于对象名也无法重写,除非使用CS排序规则是,但这不是keyword@VenkataramanR正如伊万所说,这不是一个keyword@IvanStarostin,谢谢你的关注。更新了我的答案。@thomsan,ivan是对的。更新了我的答案。@Venkataraman你能解释一下IgnoreQuoteIdentifiers是做什么的吗?是的,但这不是一个问题keyword@VenkataramanR正如伊万所说,这不是一个keyword@IvanStarostin,谢谢你的关注。更新了我的答案。@thomsan,ivan是对的。更新了我的答案。@Venkataraman你能解释一下IgnoreQuoteIdentifiers是做什么的吗?