Sybase:在加载之前启动所有连接

时间:2012-05-22 22:38:15

标签: sybase

我们有一个自动脚本来恢复Sybase数据库,然后针对它运行我们的自动化测试。我们经常有一个连接到此数据库的Web服务器或交互式查询工具。这些连接阻止Sybase加载“...必须独占使用数据库来运行加载”。

如何启动/终止/终止所有连接?

我想要类似于Sql Server的alter database single_user,并且立即回滚。这是本地Sybase实例,因此我们拥有完全的管理权限。

1 个答案:

答案 0 :(得分:1)

在不确切知道脚本检查的条件的情况下,您需要做两件事来保证数据库的独占使用(i)运行“master..sp_dboption'wour-db-name','single user', false“将其置于单用户模式,以及(ii)首先使用”kill“命令终止所有现有用户。
这不难放入存储过程 - 使用数据库作为当前数据库或在该数据库中锁定所有连接,然后尝试将其设置为单用户模式。然后检查单用户模式是否成功 - 您应该允许重复尝试,因为新用户可能在您将其设置为单用户模式时再次连接。

这一切都不难实现,但您需要对ASE系统表有所了解。但主要是,我认为你需要确切地知道你的加载脚本假定是什么情况以及它检查的内容。

可能还有其他解决方案:例如,如果您可以锁定受加载脚本影响的表,那么这也可能是一个解决方案(而且更简单)。但这可能是也可能不可能,具体取决于加载脚本的确切作用和期望。那么这就是问题#1的回答。

HTH,

Rob V。