将 SQL 脚本与数据库相关联

Associate SQL Script with Database

我一直在使用 DBeaver 作为 SQL Server Management Studio 的替代品,我非常喜欢它。我唯一想不通的是如何将脚本与数据库相关联。例如,在 SSMS 中,我可以在对象资源管理器中右键单击一个数据库(我们称它为 A),然后单击 "New Query"(或 ctrl+n)打开一个在数据库 A 中处于活动状态的脚本。如果我打开另一个脚本在不同的数据库 (B) 中,该脚本与数据库 B 相关联。当我切换回原始脚本时,我又回到了数据库 A,而无需从数据库列表中手动 select 或执行USE 声明。显然,切换回第二个脚本将使数据库 B 再次处于活动状态。

不幸的是,在 DBeaver 中,所有脚本似乎只有一个活动数据库。有没有办法在 DBeaver 中将其设置为以这种方式像 SSMS 一样运行?

编辑:DBeaver 将单个数据库称为 catalog/schema。这就是我试图与各个脚本相关联的内容。

我正在使用 DBeaver 社区,并且我使用了多个数据库。您只需要 select 数据库从下拉菜单更改 DB,它用于当前打开的脚本。

我目前没有连接我公司的系统,从网上找一张示例图片。

我不知道 DBeaver 有这个功能,但您总是可以在脚本前加上 USE DBNAME 语句...

更新

版本6.3.1(2019-12-22)现在默认支持!这是 6.3.1 描述的第一个注释:

  • SQL editor:
    • Active database/schema change now affects current editor only

注意:这似乎确实改变了一些行为,例如来自数据库导航器的 "Set active" 以及 "Auto-sync xx with navigator." 这两个曾经影响活动的 database/schema。现在它们与当前连接相关联。

原答案

对于将来发现此问题的任何人,我确实找到了一个可以提供所需行为的解决方法。答案是使用项目。不幸的是,这意味着创建到服务器的重复连接。

这里还有一个问题。如果要为特定脚本设置模式,则应避免通过 "Database Navigator." 设置模式,但是,如果要更改活动项目中已有脚本的模式,这将起作用。如果脚本不在活动项目中,并且您通过数据库导航器设置活动模式,它将更改与该服务器关联的所有打开脚本的活动模式。为了简单起见,我尽量避免使用 Database Navigator。

避免数据库导航器不会丢失所有内容。默认情况下,"Projects" window 是数据库导航器旁边的选项卡。如果展开(单击名称旁边的 +)[Project Name] -> Connections -> [Connection Name],您将在此处看到 databases/schema 的列表。使用它作为您的新数据库导航器,一切就绪。