sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2014 Express Localdb(.mdf)ファイルをプログラムでバックアップする方法

    それは誰かを助けるかもしれません。

    バックアップ

    try
    {
        var dlg = new System.Windows.Forms.FolderBrowserDialog();
        var result = dlg.ShowDialog(this.GetIWin32Window());
    
        if (result.ToString() == "OK")
        {
            var dbfileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "LibraryManger.mdf");
            var backupConn = new SqlConnection { ConnectionString = eb.GetConnectionString() };
            backupConn.Open();
    
            var backupcomm = backupConn.CreateCommand();
            var backupdb = [email protected]"BACKUP DATABASE ""{dbfileName}"" TO DISK='{Path.Combine(dlg.SelectedPath,"LibraryManagement.bak")}'";
            var backupcreatecomm = new SqlCommand(backupdb, backupConn);
            backupcreatecomm.ExecuteNonQuery();
            backupConn.Close();
    
            MessageBox.Show($"Database backup has successfully stored in {Path.Combine(dlg.SelectedPath, "LibraryManagement.bak")}", "Confirmation");
        }
    }
    catch (Exception ex)
    {
        if(ex.Message.Contains("Operating system error"))
        {
            MessageBox.Show("Please chose a public folder.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
        }
        else
            MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
    }
    

    復元

    復元する前に、既存の接続を閉じる必要があります

    try
    {
        if (eb != null)
        {
            eb.DisposeConnection();
            eb = null;
        }
    
        var dlg = new OpenFileDialog();
        dlg.InitialDirectory = "C:\\";
        dlg.Filter = "Database file (*.bak)|*.bak";
        dlg.RestoreDirectory = true;
    
        if (Equals(dlg.ShowDialog(), true))
        {
            using (var con = new SqlConnection())
            {
                con.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;Database=Master;Integrated Security=True;Connect Timeout=30;";
                con.Open();
                var dbfileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "LibraryManger.mdf");
                    using (var cmd = new SqlCommand())
                    {
                        cmd.Connection = con;
                        cmd.CommandText = [email protected]"RESTORE DATABASE ""{dbfileName}"" FROM DISK='{dlg.FileName}'";
    
                        cmd.ExecuteNonQuery();
                    }
                    con.Close();
                }
    
            MessageBox.Show($"Database backup has successfully restored.", "Confirmation");
            eb = new EntityBroker.EntityBroker();
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
    }
    


    1. SQL Serverエラー照合の競合が原因で値の照合が解決されないため、の暗黙的な変換。

    2. MySQLの空のIN句パラメータリスト

    3. MySQLインストールの保護

    4. データベースから対応するエントリを削除すると、サーバーから物理ファイルを削除できますか?