2017-06-13 5 views
0

私のアプリケーションでバックアップおよび復元機能を作成しようとしています。今、私はこのコードを持っています。MSSQLLocalDb VB.NETでのデータベースバックアップ

Dim destdir As String = "C:\Desktop\Backup Database" 
    Dim dbname As String = "dbOffense" 
    'Metioned here your database name 
    Dim con As New SqlConnection(constr) 
    Dim cmd As New SqlCommand 
    Dim da As New SqlDataAdapter 
    Dim dt As New DataTable() 
    'Check that directory already there otherwise create 
    If Not System.IO.Directory.Exists(destdir) Then 
     System.IO.Directory.CreateDirectory("C:\Desktop\Backup Database") 
    End If 
    Try 
     'Open connection 
     con.Open() 
     'query to take backup database 
     cmd = New SqlCommand("backup database " + dbname + " to disk='" + destdir + "\\" + DateTime.Now.ToString("ddMMyyyy_HHmmss") + ".Bak'", con) 
     cmd.ExecuteNonQuery() 
     'Close connection 
     con.Close() 
     MessageBox.Show("Backup database successfully") 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 

そしてまた私の接続文字列:

<add name="ConString" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\dbOffense.mdf;Integrated Security=True;Connect Timeout=30;" 
     providerName="System.Data.SqlClient" /> 

.mdfファイルファイルがプロジェクトフォルダにあり、これは任意の助けであれば、それはCopy If Newerに設定されています。

アプリケーションでバックアップ機能をクリックするたびにエラーが発生します。それはそれで

dbOffense does not exist 

を言う、私は、接続文字列にdatabase=dbOffenseを追加しようとしたが、それは私が立ち往生しています。そこから

Unable to attach the .mdf file as database dbOffense because the .mdf file copy in the bin/Debug folder is in use. 

を言います。私は何をすべきか?

+0

なぜデータベースファイルバックアップして復元するときは?コピー時にファイル名を指定することはできます。 –

+0

データベースファイルを実際にコピーするのではなく、.bakファイルを作る予定でした。もし私がそれをしたら、どうやってそれをするのですか? – NoobCoder

答えて

1

ファイルをコピーするには、(以下のコードは、既存のファイルを上書きすることができます):

System.IO.File.Copy(existing file path here, destination file path here, True) 

はあなたがしたいファイルに任意のファイル拡張子を与えることができ、覚えておいてくださいなど:

System.IO.File.Copy(C:\abc.accdb, C:\Backup\abc.db123, True) 

また、これを見てください:

Copy Data from a table in one Database to another separate database

+0

データベースが使用中であるというエラーが表示されました。 VB.NETを使用してプロセスをどのように停止する必要がありますか? MSSQLLocalDbところで。 – NoobCoder

関連する問題