2017-11-04 9 views
-2

私のデータベースの3つのテーブルでSSMSの 'Select Top 1000 Rows'機能を使用すると、データベースがオフラインであるというエラーが表示されます。ただし、エラーメッセージのデータベース名がクエリのデータベースの名前と一致しません。SSMS Select Top 1000 *クエリが失敗します

SELECT TOP 1000 ... 
FROM [vc-live].[dbo].[Errors] 

Msg 942, Level 14, State 4, Line 2 
Database 'vc-live-old' cannot be opened because it is offline. 

明示的なusingステートメント([master]または[vc-live])を追加すると、クエリは正常に実行されます。

vc-live-oldのデータベースは、SSMSでオフラインになっていますが、sys.master_filesにオンラインで表示されるという奇妙な点があります。

おそらく疑わしいので、データベースを、ロールバック直後のシングルユーザーモードにしてから、alter文を使用して元に戻しました。

データベースにアクセスするアプリケーションはうまく動作していますが、アプリケーションの性質上、データの消失は心配しません。しかし、データベースエンジンの再起動時に何が起きるか心配です。

DBは2012 SP2です。

この予期しない動作についてのご意見はありますか?

+1

おそらく、 '[VC-ライブ] [DBO] [エラー]' 3部構成の名前の参照を持つビューです失われたデータベース –

+0

テーブルです。この動作には3つのテーブルがあります。他のすべてのテーブルは、 'Select Top 1000 Rows'で正常に動作します。 – Leslie

答えて

0

https://dba.stackexchange.com/questions/48237/renaming-sql-server-database-unusual-result

1000年のクエリがキャッシュされたSELECT TOPための実行計画。上記のリンクのアドバイスに従って、DBCC FREEPROCCACHEを使用して問題を修正しました。あなたはより多くのフィネスでコマンドを使用する場合は

はまた、このポストは良かった:。。https://sqlserverperformance.wordpress.com/2009/12/28/fun-with-dbcc-freeproccache/

関連する問題