1

Sybaseデータベースを復元し、それに対して自動テストを実行する自動スクリプトがあります。多くの場合、このデータベースに接続されたWebサーバーまたはインタラクティブクエリツールがあります。これらの接続により、「...ロードを実行するにはデータベースを排他的に使用する必要があります」というSybaseのロードが防止されます。

すべての接続をキック/キル/終了するにはどうすればよいですか?

即時ロールバックを備えたSQLServerの変更データベースsingle_userに似たものが欲しいのですが。これはローカルのSybaseインスタンスであるため、完全な管理者権限があります。

4

1 に答える 1

1

スクリプトがチェックする条件を正確に知らなくても、データベースの排他的使用を保証するために実行する必要がある2つのことがあります(i)「master..sp_dboption'your-db-name'、'single user'、false」を実行します。シングルユーザーモードにし、(ii)最初に「kill」コマンドを使用して既存のすべてのユーザーを強制終了します。
これは、ストアドプロシージャを配置するのは難しくありません。データベースを現在のデータベースとして使用するか、そのデータベースをロックして、すべての接続を強制終了してから、シングルユーザーモードに設定してみてください。次に、シングルユーザーモードが成功したかどうかを確認します。シングルユーザーモードに設定しているときに新しいユーザーが再度接続する可能性があるため、繰り返し試行できるようにする必要があります。

これはすべて実装するのは難しいことではありませんが、ASEシステムテーブルをある程度理解する必要があります。しかし、主に、ロードスクリプトが何を想定しているのか、そして何をチェックするのかを正確に把握する必要があると思います。

他の解決策もあるかもしれません。たとえば、ロードスクリプトの影響を受けるテーブルをロックできる場合は、それも解決策になる可能性があります(より単純な解決策)。ただし、ロードスクリプトが正確に何を実行し、何が期待されるかによって、これが可能な場合と不可能な場合があります。答えるのは質問1です。

HTH、

ロブV。

于 2012-05-28T11:17:56.647 に答える