SSMS 从我的存储过程中删除开始前的注释

SSMS removing pre-BEGIN comments from my stored procedures

我是 运行 SSMS 12.0.2000.8

如果我使用 SSMS 查询编辑器创建一个存储过程(例如下面的那个),当我 execute/save 它时 BEGIN 之前的注释被删除:

CREATE PROCEDURE myproc
/* Say goodbye to this comment */
    @var1 int -- this comment will disappear too
AS
BEGIN
   /* This comment is safe */
   select 'hello' -- this too shall endure
END

同事运行同版本的SSMS,没有出现过这样的问题。如果我使用 sqlcmd.exe 执行他的脚本之一,那么评论也会被删除。我想一定有一个我需要更改的全局设置,但我不知道它可能在哪里。

在观察到一些其他的奇怪之处(即 with execute as caller 被添加到我的脚本中)之后,我进行了一些谷歌搜索并找到了答案:

delete \Users\[user]\AppData\Roaming\Microsoft\SQL Server Management Studio.0\sqlstudio.bin

警告: 您将丢失当前记忆的列表 SQL Servers/usernames/passwords.

我用 SQL Server 2008 和 SSMS 12.0.2000.8 测试了这个,这是 "Script stored procedure as" - > "Create to" -> "Clipboard":

CREATE PROCEDURE [dbo].[myproc]
/* Say goodbye to this comment */
    @var1 int -- this comment will disappear too
AS
BEGIN
   /* This comment is safe */
   select 'hello' -- this too shall endure
END
GO

在使用脚本工具之前,您是否尝试过使用 sp_helptext 检查程序中是否包含注释?

我也检查了选项,在那里找不到与评论相关的任何内容,或者剥离类似的内容。

我遇到了同样的问题,发现它是由工具 -> 选项 -> SQL 服务器对象资源管理器 -> 脚本 -> 将用户定义的数据类型转换为基本类型引起的。

当这是 "True" 时,我失去了我的评论块。当 "False" 我的评论区回来了。

虽然指定的解决方案对我不起作用,但它确实为我指明了正确的方向。

对我来说,该行为仅发生在单个 SQL 服务器连接上,这是因为“始终加密”设置为“启用”。当我禁用它时,我的注释保留在存储过程代码中。

Screen Shot of SSMS 18.4