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
知道为什么会这样吗?我们在这里使用了某些标准,原始存储过程是我公司喜欢的格式化。问题是我不能再使用该格式,因为我创建或更改的每个存储过程现在都会自动重新格式化。有什么想法吗?
谢谢。
答案 0 :(得分:3)
当您使用Always Encrypted并且选择"为Alway Encrypted启用参数化时会发生这种情况"启用。
修复:
Query > Query Options > Execution > Advanced
Enable Parameterization for Alway Encrypted
(位于列表末尾)在处理即席查询和非存储过程时,您应该只启用此选项。