来自C#的错误路径备份目录SQL Server [英] Error Path Backup Directory SQL Server from C#

查看:83
本文介绍了来自C#的错误路径备份目录SQL Server的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的朋友,

我只是尝试使用C#制作备份SQL Server

I just try to make a backup SQL Server using C#

但是对于位置,我只是将其放入文本编辑器

but for the location I just put it into text editor

这是我的代码:

使用系统;
使用System.Collections.Generic;
使用System.ComponentModel;
使用System.Data;
使用System.Data.SqlClient;
使用System.Drawing;
使用System.IO;
使用System.Linq;
使用System.Text;
使用System.Threading.Tasks;
使用System.Windows.Forms;

命名空间AutoBackup
{
   公共局部类Form1:Form
    {
       字符串路径= Path.Combine(Environment.CurrentDirectory,@"SettingAutoBackup \ AutoBackup.txt");
       公共Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(对象发送者,EventArgs e)
        {
            var数据=文件
            //.ReadAllLines("G:\\Project Steven \\ HIS LIS自动执行存储过程\\记事本值\\ Text_To_C_Sharp \\ test.txt)
            .ReadAllLines(路径)
            .Select(x => x.Split('='))
            .哪里(x => x.Length> 1)
            .ToDictionary(x => x [0] .Trim(),x => x [1]);

           字符串dir = data ["LocationHIS"];
           字符串数据库= data ["DatabaseHIS"];

           字符串connectionString =数据源= SVR-01;初始目录=测试;用户ID = sa;密码= xxx" ;;
            SqlConnection con =新的SqlConnection(connectionString);
           试试
            {
                //string cmd =备份数据库测试到磁盘='C:\\ Backup \\ Test_'"; + DateTime.Now.ToString("yyyyMMdd-HH-mm-ss")+".bak'"; ->很好

               字符串cmd =备份数据库测试到磁盘=" + Path.Combine(dir,数据库)+ DateTime.Now.ToString("yyyyMMdd-HH-mm-ss")+.bak"; ->它不起作用,什么都没有 这个脚本发生

               使用(SqlCommand命令=新的SqlCommand(cmd,con))
                {
                   如果(con.State!= ConnectionState.Open)
                    {
                        con.Open();
                    }
                    command.ExecuteNonQuery();
                    con.Close();
                    MessageBox.Show(数据库备份成功完成");
                }
            }

            catch(异常例外)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
 }

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace AutoBackup
{
    public partial class Form1 : Form
    {
        string path = Path.Combine(Environment.CurrentDirectory, @"SettingAutoBackup\AutoBackup.txt");
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var data = File
            //.ReadAllLines("G:\\Project Steven\\HIS LIS automatic execute Store Procedure\\Notepad Value\\Text_To_C_Sharp\\test.txt")
            .ReadAllLines(path)
            .Select(x => x.Split('='))
            .Where(x => x.Length > 1)
            .ToDictionary(x => x[0].Trim(), x => x[1]);

            string dir = data["LocationHIS"];
            string database = data["DatabaseHIS"];

            string connectionString = "Data Source= SVR-01; Initial Catalog=test; User Id=sa; Password=xxx";
            SqlConnection con = new SqlConnection(connectionString);
            try
            {
                //string cmd = "BACKUP DATABASE test TO DISK= 'C:\\Backup\\Test_" + DateTime.Now.ToString("yyyyMMdd--HH-mm-ss") + ".bak'"; --> It works fine

                string cmd = "BACKUP DATABASE test TO DISK='" + Path.Combine(dir,database)+ DateTime.Now.ToString("yyyyMMdd--HH-mm-ss")+".bak'"; --> it doesn't work, nothing happen with this script

                using (SqlCommand command = new SqlCommand(cmd, con))
                {
                    if (con.State != ConnectionState.Open)
                    {
                        con.Open();
                    }
                    command.ExecuteNonQuery();
                    con.Close();
                    MessageBox.Show("database backup done successefully");
                }
            }

           catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
 }

有人可以帮助我吗

此致

史蒂夫·亨利

推荐答案

您好steve_henry,

Hi steve_henry,

谢谢您在这里发布.

对于您的问题,请按如下所示更改.txt文件中的路径.

For your question, please change the path in .txt file like following.

DatabaseHIS=Test
LocationHIS=C:\Backup\

我给您的代码发短信. cmd是可以正常工作的代码. cmd是无效的代码.

I text the your code. cmd is the code which works fine. cmd is the code which does not work.

  //string cmd = "BACKUP DATABASE test TO DISK= 'C:\\Backup\\Test_" + DateTime.Now.ToString("yyyyMMdd--HH-mm-ss") + ".bak'"; --> It works fine

                string cmd2 = "BACKUP DATABASE test TO DISK='" + Path.Combine(dir,database)+ DateTime.Now.ToString("yyyyMMdd--HH-mm-ss")+".bak'"; --> it doesn't work, nothing happen with this script

我创建一个messageBox来显示路径.请尝试一下.

I make a messageBox to show the path. Please have a try.

我希望这会有所帮助.

最好的问候,

温迪


这篇关于来自C#的错误路径备份目录SQL Server的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆