我正在运行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
执行他的一个脚本,那么评论也会被删除。我认为必须有一个全局设置,我需要改变,但我不知道它可能在哪里。
答案 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连接上,这是因为“始终加密”设置为“启用”。禁用它时,我的注释保留在存储过程代码中。