我们有一个自动化脚本来恢复 Sybase 数据库,然后针对它运行我们的自动化测试。我们经常有一个连接到这个数据库的网络服务器或交互式查询工具。这些连接通过“...必须独占使用数据库来运行负载”来阻止 Sybase 负载。
如何踢/杀死/终止所有连接?
我想要类似于 Sql Server 的 alter database single_user 并立即回滚。这是一个本地 Sybase 实例,因此我们拥有完全的管理员权限。
我们有一个自动化脚本来恢复 Sybase 数据库,然后针对它运行我们的自动化测试。我们经常有一个连接到这个数据库的网络服务器或交互式查询工具。这些连接通过“...必须独占使用数据库来运行负载”来阻止 Sybase 负载。
如何踢/杀死/终止所有连接?
我想要类似于 Sql Server 的 alter database single_user 并立即回滚。这是一个本地 Sybase 实例,因此我们拥有完全的管理员权限。
在不知道脚本检查的确切条件的情况下,您需要做两件事来保证数据库的独占使用 (i) 运行 "master..sp_dboption 'your-db-name', 'single user', false" 以将其置于单用户模式,并且 (ii) 首先使用“kill”命令杀死所有现有用户。
这并不难放入存储过程中——杀死所有使用您的数据库作为当前数据库或在该数据库中锁定的连接,然后尝试将其设置为单用户模式。然后检查单用户模式是否成功——您应该允许重复尝试,因为当您将其设置为单用户模式时,新用户可能再次连接。
这一切都不难实现,但您需要对 ASE 系统表有所了解。但首先,我认为你需要弄清楚你的加载脚本假设的情况以及它检查的内容。
可能还有其他解决方案:例如,如果您可以锁定受加载脚本影响的表,那也可能是一个解决方案(并且是一个更简单的解决方案)。但这可能会也可能不会,这取决于加载脚本的确切作用和预期。所以这将是第一个问题要回答。
高温下,
罗布·V。