SQL Server SSMS从存储过程中删除pre-BEGIN注解

mwecs4sa  于 2022-11-21  发布在  其他
关注(0)|答案(4)|浏览(95)

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

mutmk8jj

mutmk8jj1#

我遇到了同样的问题,发现它是由“工具”-〉“选项”-〉“SQL Server对象资源管理器”-〉“脚本"-〉”将用户定义的数据类型转换为基本类型“引起的。
如果为“真”,我会丢失我的评论块。如果为“假”,我的评论块会恢复。

4ioopgfo

4ioopgfo2#

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

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

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

bjp0bcyl

bjp0bcyl3#

我使用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检查程序中是否有注解?
我也检查了选项,找不到任何与评论有关的东西,或者剥离掉任何类似的东西。

vzgqcmou

vzgqcmou4#

虽然指定的解决方案对我不起作用,但它确实为我指明了正确的方向。
对我来说,这种行为只发生在单个SQLServer连接上,这是因为“始终加密”设置为“启用”。当我禁用它时,我的注解仍然保留在存储过程代码中。
Screen Shot of SSMS 18.4

相关问题