为什么SSMS会更改我的存储过程(重新格式化,将exec更改为EXECUTE等)

M74*_*4d3 5 sql-server parameters formatting ssms stored-procedures

SSMS突然重新格式化了我的存储过程-以前从未这样做过。这是我正在谈论的示例。这是我上周创建的存储过程的开始:

CREATE PROCEDURE [dbo].[usp_LoanDataNames]
(  
@LoanID varchar(max) = null,
@Columns varchar(max) = null,
@DataNames NVARCHAR(MAX) = '',
@SQL NVARCHAR(MAX) = ''
)
AS
Run Code Online (Sandbox Code Playgroud)

我今天之前创建的所有存储过程仍然具有该格式。但是,当我今天以与上面相同的格式创建一个新的存储过程,然后调出存储过程脚本时,它看起来像这样:

CREATE PROCEDURE [dbo].[usp_LoanDataNames2]
@LoanID VARCHAR (MAX)=NULL, @Columns VARCHAR (MAX)=NULL, @DataNames NVARCHAR (MAX)='', @SQL NVARCHAR (MAX)=''
AS
Run Code Online (Sandbox Code Playgroud)

这是与以前不同的格式。它将所有参数上移,以立即跟随存储过程的名称,并将它们全部放在同一行。另外(并且我也不必费心发布整个存储过程,因此也没有发布此部分),它更改ExecExecute。并且它改变了各种行上的缩进,并将许多小写单词改为大写。

如果我这样做,它甚至会更改格式:

CREATE PROCEDURE  [dbo].[usp_LoanDataNames] 
AS

DECLARE 
@LoanID varchar(max) = null,
@Columns varchar(max) = null,
@DataNames NVARCHAR(MAX) = '',
@SQL NVARCHAR(MAX) = ''
 )
Run Code Online (Sandbox Code Playgroud)

它将变为:

CREATE PROCEDURE [dbo].[usp_LoanDataNames2]
@LoanID VARCHAR (MAX)=NULL, @Columns VARCHAR (MAX)=NULL, @DataNames NVARCHAR (MAX)='', @SQL NVARCHAR (MAX)=''
AS
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?我们在这里使用某些标准,并且原始存储过程正在格式化我的公司喜欢的格式。问题是我不能再使用该格式,因为我创建或更改的每个存储过程现在都会自动重新格式化。有任何想法吗?

谢谢。

Ash*_*way 5

当您使用“始终加密”并启用选项“为始终加密启用参数化”时,会发生这种情况。

修理:

  1. 去: Query > Query Options > Execution > Advanced
  2. 取消选中Enable Parameterization for Alway Encrypted(位于列表末尾)

仅在处理临时查询而不是存储过程时,才应启用此选项。