SQL Server 2012 Express Edition での運用環境でクロスデータベース クエリで奇妙な問題が発生しました。私の開発環境ではこれを作成できないので、名前付きインスタンスとしてデフォルト設定でインストールされたサーバーの構成に何かがあると考えています。
これはクエリ実行のパフォーマンスの問題ではありません。これはデータベース接続の問題です。
次のクエリを使用します (MyTable には約 100 行あります)。
SELECT COUNT(*) FROM MyDatabase..MyTable
実行時間は約 4 秒です。クライアント統計によると、クライアント処理時間は 0 で、「サーバー応答の待機時間」が実行時間の残りの 4 秒を占めています。
最初USE MyDatabase
にクエリを実行してから実行すると、すぐに実行されます。それらを順番に実行すると:
USE MyDatabase
GO
SELECT COUNT(*) FROM MyDatabase..MyTable
USE MyDatabase
ステートメントの実行には長い時間がかかるため、それでもさらに時間がかかります。テーブル名がデータベース名で完全修飾されているかどうかは問題ではなく、シノニムを使用しても状況が変わります。過去に似DBCC CHECKDB(<dbname>)
たようなものに出くわして修復したようですが、今回は適切に動作させることができません。接続のwait_type
inは、SPID ステータスの一般的なものです。システムの修復と再起動を試みましたが、うまくいきませんでした。この種のことは、認証の問題に根ざしているように思えますが、それを修正するために何をすべきかわかりません.sys.dm_exec_requests
IO_COMPLETION
suspended
追加した:
たまにDatabase 'MyDatabase' is being recovered. Waiting until recovery is finished
メッセージが来ます。SQL Server 2012 インストール ツールも使用して完全修復を実行しました。何か案は?