【问题标题】:When using SSMS, can you specify the database within a SQL Script?使用 SSMS 时,您可以在 SQL 脚本中指定数据库吗?
【发布时间】:2020-07-24 09:07:52
【问题描述】:

我在多个 Azure 数据库上工作,在 SSMS 中使用 AzureAD - Universal with MFA。

我通常有许多不同的脚本在运行,比较不同数据库之间的结果,然后一个小时左右,连接被服务器终止,如果我尝试重新运行它,它告诉我没有'不识别表,因为它不再知道要连接到哪个数据库。

有没有办法在 SSMS 中指定数据库,如果我在脚本之前尝试USE dbDocument,它会告诉我Msg 40508, Level 16, State 1, Line 1 USE statement is not supported to switch between databases. Use a new connection to connect to a different database.

有没有办法解决这个问题,而不必右键单击有问题的数据库并点击 NEW QUERY?

【问题讨论】:

  • 不,我不相信有办法
  • 谢谢,这不太可能,只是想知道是否有人有更好的方法。由于必须将 AzureAD Universal 与 MFA 身份验证一起使用,因此我仅限于使用 SSMS,除非您知道任何好的免费客户端。我使用的是 Heidi,但不支持它。

标签: sql-server azure-sql-database ssms


【解决方案1】:

Azure SQL 数据库不支持 USE 语句。一种解决方案是根据您要使用的数据库将您的工作分成几个不同的步骤,并为每个步骤连接到正确的数据库。

如果您想在多个 Azure 数据库上执行相同的查询,则可以使用以下选项之一:

【讨论】:

    【解决方案2】:

    看着this MS doc,我怀疑这根本不可能......

    如果提供了当前数据库以外的数据库,USE语句不切换数据库,返回错误码40508。要更改数据库,您必须直接连接到数据库。本页顶部将 USE 语句标记为不适用于 SQL 数据库,因为即使您可以批量拥有 USE 语句,它也不会执行任何操作。

    【讨论】:

    • 想想,这完全是垃圾。您不必再次连接,只需右键单击数据库并点击 NEW QUERY。请注意,我说的是同一 Azure 服务器中的新数据库。无论哪种方式,您都不能在查询之前指定数据库,这很愚蠢。
    • @aSystemOverload 当您右键单击数据库并点击“新查询”时,它会打开一个新连接。这就是您获得新 session_id 的原因。
    • @aSystemOverload,是的,USE 实现是垃圾。但我同意 allmhuran——单击“新查询”确实会发出与 DB 的新连接。您可能想的是,您与 SQL Server 的连接保持不变,这是真的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    相关资源
    最近更新 更多