2

SQLサーバーを使用するアプリケーションがあります。このアプリケーションは、シングルユーザーモードを使用してDBを非常に頻繁に復元します。以下は、データベースをシングルユーザーモードで復元し、データベースをマルチユーザーモードに戻すために実行されるSQLです。

alter database [test-db] set single_user with rollback immediate;   
use master;restore database [test-db] from database_snapshot = 'snapshot_test-db';
alter database [test-db] set multi_user;

test-dbをシングルユーザーモードに切り替えた後、タスクマネージャーの4〜5個のバックグラウンドプロセスがジャンプし、アプリケーションは同じセッションを使用してデータベースに対してそれ以上のアクション(データベースの復元とデータベースの変更)を実行できなくなります。これらのバックグラウンドプロセスは、それら自体の間でデッドロックされています。以下のsp_who2の出力を参照してください。

13、BACKGROUND、sa、。、。、master、BRKR EVENT HNDLR、0,27,11 / 28 16:13:40、、13、0
14、BACKGROUND、sa、。、。、master、BRKR TASK、0、 0,11 / 28 16:13:40、、14、0
15、sleeping、sa、。、。、master、TASK MANAGER、0,2,11 / 28 16:13:40、、15、0
16、BACKGROUND 、sa、。、23、test-db、TASK MANAGER、16,5,11 / 28 16:13:40、、 16、0
17、BACKGROUND、sa、。、。、master、BRKR TASK、0,0、 11/28 16:13:40、、17、0
18、BACKGROUND、sa、。、。、master、BRKR TASK、0,36,11 / 28 16:13:40、、18、0
19、sleeping、sa、。、。、master、TASK MANAGER、0,0 、11/28 16:13:40、、19、0
20、BACKGROUND、sa、。、23、test-db、TASK MANAGER、0,1,11 / 28 16:13:40、、20、0
21、背景、sa、。、23、test-db、TASK MANAGER、0,1,11 / 28 16:13:40、、21、0
22、BACKGROUND、sa、。、。、msdb、DELETE、6094,835、 11/28 16:13:40、、22、0
23、BACKGROUND、sa、。、21、test-db、TASK MANAGER、0,0,11 / 28 16:13:40、、23、0
24、sleeping、sa、。、。、master、TASK MANAGER、0 、0,11 / 28 16:13:40、、24、0
25、sleeping、sa、。、。、master、TASK MANAGER、0,0,11 / 28 16:13:40、、25、0
26、眠っている、sa、。、。、master、TASK MANAGER、0,41,11 / 28 16:13:40、、26、0
27、BACKGROUND、sa、。、。、master、TRACE QUEUE TASK、3047,1680、 11/28 16:13:40、、27、0
28、sleeping、sa、。、。、master、TASK MANAGER、0,5,11 / 28 16:13:40、、28、0
29、sleeping、sa、。、。、master、TASK MANAGER、0,0 、11/28 16:13:40、、29、0
30、sleeping、sa、。、。、master、TASK MANAGER、0,0,11 / 28 16:13:40、、30、0
31、sleeping、 sa、。、。、master、TASK MANAGER、0,0,11 / 28 16:13:40、
、31、0 51、RUNNABLE、DY-EPO46 \ Administrator、DY-EPO46、。、master、SELECT INTO、110 、64,11 / 28 16:30:44、Microsoft SQL Server Management Studio-クエリ、51,0
52、sleeping、DY-EPO46 \ Administrator、DY-EPO46、。、master、AWAITING COMMAND、156,14,11 / 28 16:16:39、Microsoft SQL Server Management Studio、
52、0 53、sleeping、DY-EPO46 \ Administrator、DY-EPO46、。、test-db、AWAITING COMMAND、16,16,11 / 28 16:30:40、Microsoft SQL Server Management Studio-クエリ、53,0

この問題を検索したところ、人々が同様の問題に直面していることがわかりましたが、この問題の根本的な原因とデバッグ手順を見つけることができませんでした。SQLサーバーの停止は、これらのバックグラウンドプロセスを開始するための解決策として提供されていますが、DBを復元するコードが非常に頻繁に実行され、この問題が頻繁に発生するため、この場合は実行できません。

また、SQLServerエージェントが実行されていないことも確認しました。サーバーで実行されているSQLサービスは、SQLサーバー、SQL Serverブラウザー、およびSQLServerVSSライターです。

4

0 に答える 0