C# 使用FileDialog拣选路径,实现数据库的备份与还原

C# 使用FileDialog选取路径,实现数据库的备份与还原
如题,之前使用openFileDialog和saveFileDialog选取路径作为数据库的备份或还原路径 ,并实现了数据库的还原备份功能。

现在遇到了问题:我把程序布设到别的电脑上,使用该备份还原功能时,使用FileDialog打开的对话框还是当前电脑的本地路径,这时候备份还原功能就会出现问题,如出现异常:“+ 已引发:“无法打开备份设备 'C:\Users\Administrator\Desktop\2111.bak'。出现操作系统错误 5(拒绝访问。)。
BACKUP DATABASE 正在异常终止。”(System.Data.SqlClient.SqlException) 异常消息 = "无法打开备份设备 'C:\\Users\\Administrator\\Desktop\\2111.bak'。出现操作系统错误 5(拒绝访问。)。\r\nBACKUP DATABASE 正在异常终止。", 异常类型 = "System.Data.SqlClient.SqlException"  



我能不能用FileDialog实现类似于SQL数据库的备份还原功能那样的,打开服务器所在电脑的路径,而不是程序本身电脑的本地路径呢?

目前代码如下:


saveFileDialog1.InitialDirectory = Application.StartupPath + "\\";//默认路径为D://
            saveFileDialog1.FilterIndex = 1; //默认值为第一个
            saveFileDialog1.RestoreDirectory = true; //重新定位保存路径
            saveFileDialog1.Filter = "备份文件 (*.bak)|*.bak|所有文件 (*.*)|*.*";//筛选器,定义文件类型



是不是应该该saveFileDialog1.InitialDirectory =  ?    该怎么改呢
------解决思路----------------------
有能备份到当前运行的电脑上的写法么?
------解决思路----------------------
saveFileDialog只能帮你确定文件路径,你获得路径后,需要通过stream保存到这儿路径
------解决思路----------------------
可以,左边栏应该有预设的保存位置吧,比如“我的文档”、本地机器、网络路径...
其实你要的只是一个UNC路径,类似\\192.168.1.123\abc之类的
只要有权限写入就行
------解决思路----------------------
https://msdn.microsoft.com/zh-cn/library/system.windows.forms.filedialog.customplaces.aspx

或者你自己枚举服务器预设的目录结构,绑定到树上面
------解决思路----------------------
引用:
Quote: 引用:

saveFileDialog只能帮你确定文件路径,你获得路径后,需要通过stream保存到这儿路径



我现在想得到的是数据库所在服务器的磁盘路径(用于保存备份出的数据库文件),但是saveFileDialog打开的对话框是本地的而不是服务器的,有什么方法可以实现么?        就只备份到数据库所在的服务器上


txtpath文本框用于输入备份的数据库文件路径,通过指定文件路径,然后执行BACKUP 语句,应该是自动备份到数据库所在机器的磁盘吧。
传送门
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                string strg = Application.StartupPath.ToString();
                strg = strg.Substring(0, strg.LastIndexOf("\\"));
                strg = strg.Substring(0, strg.LastIndexOf("\\"));
                strg += @"\Data";
                string sqltxt = @"BACKUP DATABASE db_MrCy TO Disk='" + strg + "\\" + txtpath.Text +".bak"+ "'";
                SqlConnection conn = BaseClass.DBConn.CyCon();
                conn.Open();
                SqlCommand cmd = new SqlCommand(sqltxt, conn);
                cmd.ExecuteNonQuery();
                conn.Close();
                if (MessageBox.Show("备份成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK)
                {
                    this.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }

        }