0

私は自分の C# アプリケーションを持っており、自分のアプリケーションを使用してデータベースを復元したいと考えています。私のSQLコードは次のようなものです:

alter database SSDPrototypeV3 set offline with rollback immediate
restore database SSDPrototypeV3
from disk = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup\dustinepogi.bak'
alter database SSDPrototypeV3 set online

アプリケーションでこれを実行すると、 db が正常に復元されます。しかし、SQLクエリ(selectステートメントなど)を実行しようとすると、特にselectステートメントを実行したテーブルで、無効なオブジェクト名があると表示されます。しかし、閉じた後にアプリケーションをリロードすると、完全に復元されます。どうすればこの問題を解決できますか?

4

2 に答える 2

1

あなたが使用していると仮定しますSqlClient(そして接続プーリングを使用しています):

  • 最初にマスターに切り替える
  • 復元を行います
  • clean your connection pool : using SqlConnection.ClearAllPools(プロバイダのすべてのプールをクリア) またはClearPool(特定の接続文字列に関連付けられたプールのみをクリア)
  • 元のデータベースに対してコマンドを実行します

そして、うまくいけば、あなたが行く

于 2013-05-12T17:14:33.150 に答える
0

データベース接続には、すべてのクエリが実行される現在のデータベースがあります。接続文字列の最初のデータベースパラメータは、接続が開かれたときに使用される現在のデータベースを決定します。

現在のデータベースは、データベースをオフラインにしmasterたときの状態に戻ると思います。SSDPrototypeV3これを修正するには、次の 2 つのオプションがあります。

  • use SSDPrototypeV3またはを実行して、現在のデータベースを元に戻します。
  • 接続を閉じて再度開きます。
于 2013-05-12T15:54:23.090 に答える