修复 SQL Server 2005 Mgmt Studio 自定义键盘加速器快捷方式中的参数处理吗?

StackOverflow https://stackoverflow.com/questions/85179

  •  01-07-2019
  •  | 
  •  

我长期以来一直是存储过程键盘加速器的粉丝,如中所述 本文. 。然而,当我们从 SQL 2000 迁移到 2005,并从查询分析器迁移到 Management Studio 时,参数的处理发生了变化。在 QA 中,逗号分隔的参数会自动读取为两个单独的参数。在 SSMS 中——至少对我来说——它被解读为一个参数,其中有逗号。同样,如果我传入一个带有单引号的参数,我会收到语法错误, 除非我逃避引号 (' -> '')。在上面链接的文章中,作者暗示 SSMS 不应该出现这种情况,但即使使用她的确切示例,在我尝试过的每个 SSMS 安装中,逗号分隔的参数仍然被解释为一个参数(其中 3 个)它们),针对我尝试过的每个 SQL Server 安装(其中 4 个)运行。

例如,在 SSMS 中输入以下内容,

Person,4

然后选择它并运行快捷方式,我收到错误消息“无效的对象名称'Person,4'。

有人知道如何解决这个问题吗?有人使用这些快捷方式吗?在过去的两年里,我多次用谷歌搜索这个问题,但没有成功。

编辑:可能是 SSMS 特定版本的问题。我在下面有一个后续帖子。

有帮助吗?

解决方案 2

蒂姆的建议并没有解决我的开发电脑上的问题,但它确实说服了我从另一台电脑上重试。当使用不同 PC 的 SSMS 登录开发 PC 的数据库并完全尝试 Tim 描述的内容时,我遇到了 Tim 描述的相同行为。

我还能够在我过去尝试过的其他电脑上重新复制参数解析问题。我希望 Tim 能让我知道他安装的 SSMS 的版本和内部版本号,因为我目前的理论是问题出在我和我的同事在开发 PC 上的特定内部版本 - 版本字符串是“Microsoft SQL Server Management Studio 9.00.1399.00”。我们对该版本的所有安装都是一年多前进行的,所以我不知道我可以追溯到它来自哪个磁盘。

没有问题的实际上是我们的开发服务器,它安装了“Microsoft SQL Server Management Studio 9.00.3042.00”。我不知道这是否可以通过修补或其他方法来消除,但目前看来 1399 将整个选择作为单个参数读取,而 3042 则进行了一些预解析。我最近还发现,当我在 3042 中传递包含“--”(注释标记)的字符串时,“--”之后的所有内容都会被忽略,而在 1399 中,它都包含在第一个参数中。

其他提示

在阅读您的问题然后阅读您引用的文章之前,我从未尝试过此操作,因此请对此持保留态度。

也就是说,我可以使用 SSMS 让该进程在我的计算机上运行,​​并且我还可以复制您所描述的错误。

为了使其按预期工作,我在主数据库中创建了存储过程,分配了键盘快捷键并重新启动了 SSMS。然后,我用单引号键入了databasename.schema_name.table_name,后跟一个逗号,然后是一个整数值(我测试的存储过程是本文中的GetRows 示例)。我仍然连接到主数据库。

这没有发生任何事故。

为了得到您提到的相同错误,我删除了对架构名称或数据库名称的引用,并收到了与您相同的错误。

也许您需要在表名之前添加数据库名称和模式名称?

我也使用 SSMS 版本 9.00.3042.00,这可能解释了它在我的计算机上运行的原因。

同意蒂姆的观点。我刚刚升级到 SQL Server 05 sp2,并且我确认此错误已得到修复。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top