0

Linq to Sqlを使用してかなり長い C# プログラムを作成しましたが、データはプログラムのEXEの近くにあるMDFファイルに格納されています。私のプログラムの一部には、 MDFファイルとLDFファイルをユーザー指定のフォルダーにコピーするだけで、データベース ファイルをバックアップするためのフォームがあります。

ただし、データベースにクエリを実行してから、元のファイルをバックアップに置き換えようとすると、予想どおり、ファイルが別のプロセスで開かれるという例外が発生します。問題は、 SqlServerインスタンスでMDFファイルを閉じる方法がわからないことです。

私はLinq to Sqlの初心者で、ほとんどの作業は Visual Studio のウィザードに任せています。だから、私がやろうとしていることがばかげているように聞こえる場合は、事前に申し訳ありません! :D

私の場合のより良いプログラミング方法についての助けや提案は大歓迎です。

4

2 に答える 2

1

これはニーズに合わないかもしれませんが、Sql Server (適切な) の代わりに Sql Server Compact Edition ("SqlCE") を使用するようにアプリケーションを切り替えることを検討することをお勧めします。データベースを本質的にアプリケーションのバッキング ファイルとして使用しているように思えますが、これは実際には Sql Server の本来の目的ではありません。SqlCE は、この種のことのために特別に設計されており、デスクトップ上でうまく機能します。SqlCEへの接続を簡単に閉じて、他のファイルと同じようにSDFファイルを操作できます(Sql Server MDFファイルでやろうとしていることに失敗しました)。

更新: これは必要なもののように見えます:

USE master 
GO 
ALTER DATABASE YourDatabaseName 
SET OFFLINE WITH ROLLBACK IMMEDIATE 
GO 

この回答から)

于 2010-10-29T20:43:25.707 に答える
0

ファイルをコピーする前に、SQL サーバーを停止するか、データベースをオフラインにする必要があります。

于 2010-10-29T20:38:35.480 に答える