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

2024-07-03

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 to 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

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

谢谢。


当您使用 Always Encrypted 并启用了“为 Always Encrypted 启用参数化”选项时,就会发生这种情况。

To fix:

  1. Go to: Query > Query Options > Execution > Advanced
  2. 取消勾选Enable Parameterization for Alway Encrypted(它位于列表的末尾)

仅当您使用即席查询时才应启用此选项,并且不是存储过程.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 从 ASP.NET 插入到 MS Access

    我们正在尝试建立一个专门用于内联网的服务台票务系统 决定使用 Visual Studio 2008 Express 的 ASP NET C 如果需要的话 我们有一个完整版本 没什么花哨的 几页抓取 NTLM 信息 系统信息并将其与问题一起存
  • 如何设置两种不同的格式样式并将它们映射到 Eclipse 中的不同快捷方式

    每次在 Eclipse 中打开文件时 我都想将源代码格式化为 Allman 风格的缩进 每次保存时 它都应该格式化为办公室中指定的样式 我可以手动执行此操作并有两个热键 Ctrl Alt PgUp 我的方式 Ctrl Alt Page Do
  • SQL:使用 1 个查询更新一行并返回列值

    我需要更新表中的一行 并从中获取列值 我可以这样做 UPDATE Items SET Clicks Clicks 1 WHERE Id Id SELECT Name FROM Items WHERE Id Id 这会生成 2 个对该表的计划
  • 与选择顶部相反

    Transact SQL 有一个方便的SELECT TOP 4 whatever FROM 我想做一个 SELECT 查询 返回表中的最后 n 个条目 而不是第一个条目 这是我用来返回在表中输入的前四个项目的查询 使用 SELECT TOP
  • 如何在 WPF 数据网格中显示相关表中的数据

    我只是在寻找使用 WPF Datagrid Linq 的方法 并且试图找出如何显示数据网格中相关表中的数据 例如我有3张表 客户 id 姓名 产品 id 名称 订单 id 客户 ID 产品 ID 我已经在数据库表中建立了关系 我已将表添加为
  • 使用 php 5.5 与 MS SQL 数据库通信的驱动程序

    与 MS SQL 数据库通信时 我无法找到支持 PHP 5 5 的驱动程序 我有发现Mssql最高支持5 3 http php net manual en mssql requirements php 此扩展在使用 PHP 5 3 或更高版
  • 选择重叠的时间范围

    T SQL 日期时间问题 我有一组时间范围 在这些时间范围内 可能存在一组重叠的时间范围 我称之为 阻塞 时间 封锁的时间不会超过一天 我想要做的就是分割时间以排除被阻止的时间 基本上给我没有 被阻止 的时间范围 可以安全地假设阻塞时间不能
  • SQL 查询、执行计划和“并行性”

    因此 我 仍然 正在经历一些缓慢的遗留 SQL 视图 用于计算 有时 大量数据的一些平均值和标准差 我最终得到的是视图连接视图连接视图等 所以我想我会检查查询的执行计划 它立即提示缺少索引 然后我实施了该索引 但它仍然慢得令人难以忍受 慢到
  • SQL 查询、执行计划和“并行性”

    因此 我 仍然 正在经历一些缓慢的遗留 SQL 视图 用于计算 有时 大量数据的一些平均值和标准差 我最终得到的是视图连接视图连接视图等 所以我想我会检查查询的执行计划 它立即提示缺少索引 然后我实施了该索引 但它仍然慢得令人难以忍受 慢到
  • ASP.Net SQL 连接字符串配置

    我正在尝试学习 ASP Net 并遵循 mvc 教程 http www asp net mvc tutorials mvc music store part 4 http www asp net mvc tutorials mvc musi
  • SQL Server 2012:插入和触发器之间的 DATETIME 差异

    我们遇到了一个非常奇怪的问题 当打电话时GETUTCDATE 第二个语句中的返回值比第一个语句稍早 我们的场景如下 我们插入一个表来跟踪用户当前状态 该表有一个触发器 可以将用户过去状态的关联历史表插入到DATETIME字段和插入调用GET
  • 无法让链接服务器在 Sql Azure 中工作

    我们正在使用 Azure 的试用版 我们正在尝试从我们内部的 SQL Server 2012 执行跨服务器查询 我们似乎已经将我们本地的 2012 年与 Azure 联系起来了 当我进入Server Object gt Linked Ser
  • SQL Server:连接表时删除重复列

    我有 4 个表 其中一列在所有表中都很常见 有没有一种方法可以创建一个视图 在该视图中我可以通过同一列连接所有表 而我只看到一次公共列 假设我有 table1 Cust ID Order ID Product Name Table2 Cus
  • SQL Server 2005 的未知优化?

    我在听 SO 播客 他们提到了 SQL Server 2008 的 Optimize For Unknown 他们还提到 SQL Server 2005 有类似的东西 有人知道这是什么吗 正如 Mladen Prajdic 提到的 OPTI
  • MySQL 存储过程准备语句(动态 SQL)参数化

    我正在尝试编写一个 MySQL 搜索函数 该函数构建动态 sql 值并通过准备好的语句执行它 显然 为了安全起见 我想通过参数传递用户输入 搜索词 但我不知道如何将一个参数与多个参数匹配 查询中的标记 可能最好地表达我的意思 CREATE
  • 如何在存储过程内部调用存储过程?

    我正在 SQL Server 2008 中定义一种用户定义的表类型 这是代码 CREATE TYPE dbo PayElementTable AS TABLE EffDate varchar 30 NULL PayEle varchar 5
  • 如何避免 Struts 2 中 setProperty 的 ognl.OgnlException: target is null

    我想为来自用户界面的数据创建一个没有 setter 和 getter 属性的操作类 相反 我想使用ServletActionContext getRequest getParameterMap 在我自己的构建器类中构造该对象 我已经创建了我
  • 在 PL/SQL 过程中,如何将表名作为参数传递?

    CREATE PROCEDURE A tab IN table AS BEGIN INSERT INTO tab VALUES 123 END A 我怎样才能指定参数tab是表名吗 你不能 相反 您需要将其作为 VARCHAR2 字符串传递
  • TSQL 时间序列模式数据挖掘

    获取一个包含以下 3 个字段的 SQL 表 Id TimeStamp Item UserId 我想确定最常见的序列Item for a UserId在一次会议中 会话将简单地由时间阈值来定义 即 如果 X 分钟内没有完整的条目 则任何未来的
  • IF 语句中间的 GO 命令

    我正在寻找有关创建表的信息 仅当它们在当前数据库中不存在时 以便能够在可能或可能没有它们的不同数据库中创建它 并发现这两个有用的主题 SQL Server 检查表是否存在 https stackoverflow com questions

随机推荐