SSMS从我的存储过程中删除了前BEGIN注释

时间:2015-02-20 08:05:40

标签: sql-server stored-procedures ssms

我正在运行SSMS 12.0.2000.8

如果我使用SSMS查询编辑器创建存储过程(例如下面的那个),则在执行/保存时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执行他的一个脚本,那么评论也会被删除。我认为必须有一个全局设置,我需要改变,但我不知道它可能在哪里。

4 个答案:

答案 0 :(得分:3)

在观察到其他一些陌生感(即with execute as caller被添加到我的脚本中)之后,我做了一些谷歌搜索并发现了答案:

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

警告:您将丢失当前记忆的SQL Server /用户名/密码列表。

答案 1 :(得分:3)

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

如果这是“真”,我会丢失评论块。当“假”我的评论块回来了。

答案 2 :(得分:2)

我使用SQL Server 2008和SSMS 12.0.2000.8对此进行了测试,这是“脚本存储过程为”后的结果 - > “创建到” - > “剪贴板”:

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进行检查?

我还检查了选项,找不到与评论相关的任何内容,或者删除了类似的内容。

答案 3 :(得分:1)

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

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

Screen Shot of SSMS 18.4