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

问题描述 投票:0回答:5

我正在运行 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
执行他的脚本之一,注释也会被删除。我认为一定有一个我需要更改的全局设置,但我不知道它可能在哪里。

sql-server stored-procedures ssms
5个回答
4
投票

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

当这是“True”时,我会失去我的评论块。当“False”时,我的评论块又回来了。


3
投票

在观察到其他一些奇怪的地方(即

with execute as caller
被添加到我的脚本中)之后,我做了一些谷歌搜索并发现了答案:

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

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


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 检查注释是否在过程中?

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


1
投票

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

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

SSMS 18.4 的屏幕截图


0
投票

我使用的是 SSMSVersion 20.2.30.0,当打开编辑器时,您可以检查编辑中 IntelliSense 下的“切换完成模式”吗? 当我发现我的评论/标题消失时,我的被检查了。

© www.soinside.com 2019 - 2024. All rights reserved.