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

时间:2018-01-02 19:53:18

标签: sql-server stored-procedures parameters formatting ssms

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

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

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

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

这是一种与以前不同的格式。它将所有参数移动到紧跟存储过程名称,并将它们全部放在同一行上。另外(我没有发布整个存储过程,因此我没有发布此部分),它将Exec更改为Execute。它会更改各行的缩进,并将许多小写单词更改为大写。

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

CREATE PROCEDURE  [dbo].[usp_LoanDataNames] 
AS

DECLARE 
@LoanID varchar(max) = null,
@Columns varchar(max) = null,
@DataNames NVARCHAR(MAX) = '',
@SQL NVARCHAR(MAX) = ''
 )

它将改为:

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

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

谢谢。

1 个答案:

答案 0 :(得分:3)

当您使用Always Encrypted并且选择"为Alway Encrypted启用参数化时会发生这种情况"启用。

修复:

  1. 转到:Query > Query Options > Execution > Advanced
  2. 取消选中Enable Parameterization for Alway Encrypted(位于列表末尾)
  3. 在处理即席查询和非存储过程时,您应该只启用此选项。