C# Windows 服务安装和还原需要的SQL Server 数据库库
2013-02-26 11:37
337 查看
制作msi安装文件的同时,还原备份的sql server 数据库。
在/article/9975638.html中自定义安装类中(8、自定安装类获取自定义界面输入的数据)
添加还原Sql Server数据库操作。下面方法就是在安装的过程中增加还原备份的Sql Server数据库。
在做类似操作,个人觉的记录日志是个很好方法,这样可以清楚的知道在哪一步出现了问题。代码中还原数据库要使用到备份数据库的逻辑文件名,否则还原出错。如果不知道可以通过RESTORE FILELISTONLY FROM DISK = '文件路径'。这样就可以获取到备份文件的逻辑文件名。
到此,安装包中还原数据库就完成了。
在/article/9975638.html中自定义安装类中(8、自定安装类获取自定义界面输入的数据)
添加还原Sql Server数据库操作。下面方法就是在安装的过程中增加还原备份的Sql Server数据库。
private void RestoreDB(string dbServer, string uName, string pwd, string targetdir, string dbName, string dbInstallPath) { File.AppendAllText(Path.Combine(targetdir, "log.txt"), "开始还原备份数据库……" + Environment.NewLine); string strConn = string.Format("Data Source = {0};DataBase=master;User ID = {1};PWD={2}", dbServer, uName, pwd); //数据恢复语句:restore database 数据库名 from disk='保存路径/dbName.bak' WITH MOVE 'dbName_Data' TO 'c:/tcomcrm20041217.mdf', --数据文件还原后存放的新位置 //dbName_Data为数据库逻辑文件名可以用RESTORE FILELISTONLY FROM DISK = '文件路径' StringBuilder sBuilder = new StringBuilder(); sBuilder.AppendFormat(@"RESTORE DATABASE {0} FROM DISK='{1}' ", dbName, Path.Combine(targetdir, string.Format("{0}.bak", dbName))); sBuilder.AppendFormat(@" WITH MOVE '{0}' TO '{1}' ", dbName, Path.Combine(dbInstallPath, string.Format("{0}.mdf", dbName))); sBuilder.AppendFormat(@" ,MOVE '{0}_log' TO '{1}' ", dbName, Path.Combine(dbInstallPath, string.Format("{0}.ldf", dbName))); SqlConnection conn = new SqlConnection(strConn); try { conn.Open(); File.AppendAllText(Path.Combine(targetdir, "log.txt"), "打开连接……" + Environment.NewLine); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandType = CommandType.Text; cmd.CommandText = sBuilder.ToString(); File.AppendAllText(Path.Combine(targetdir, "log.txt"), sBuilder.ToString() + Environment.NewLine); cmd.ExecuteNonQuery(); File.AppendAllText(Path.Combine(targetdir, "log.txt"), "执行还原操作……" + Environment.NewLine); } catch (Exception ex) { File.AppendAllText(Path.Combine(targetdir, "log.txt"), ex.Message + Environment.NewLine); throw new Exception("还原数据库出错"); } finally { if (conn != null && conn.State == ConnectionState.Open) { conn.Close(); conn.Dispose(); File.AppendAllText(Path.Combine(targetdir, "log.txt"), "释放资源。" + Environment.NewLine); } } }
在做类似操作,个人觉的记录日志是个很好方法,这样可以清楚的知道在哪一步出现了问题。代码中还原数据库要使用到备份数据库的逻辑文件名,否则还原出错。如果不知道可以通过RESTORE FILELISTONLY FROM DISK = '文件路径'。这样就可以获取到备份文件的逻辑文件名。
到此,安装包中还原数据库就完成了。
相关文章推荐
- C#安装Windows服务需要“设置服务登录”
- C# 创建、安装和卸载Windows服务程序
- C# .NET 0命令行安装Windows服务程序
- 安装C# Windows服务程序
- c#开发的程序安装时动态指定windows服务名称
- C#安装服务和卸载Windows服务 操作类
- WINDOWS服务安装(C#)(转帖)
- C#学习笔记19——Windows服务创建及安装
- 出现windows启动服务失败(无法从命令行或调试器启动,需要安装InstallUtil.exe)的解决办法
- C#检查Windows是否安装了某个服务的方法
- C#编写Windows服务及安装
- C# VS 2010创建、安装、调试 windows服务(windows service)
- C#Windows Service服务程序的安装/卸载、启动/停止 桌面客户端管理程序设计
- C#:安装Windows服务,动态指定服务名及描述(转载)
- C# 安装 Windows 服务
- Windows 安装补丁报错 0xc8000247 Windows update 当前无法检查更新,因为未运行服务。您可能需要重新启动计算机。
- C# VS 2010创建、安装、调试 windows服务(windows service)
- C# VS2010 windows服务的安装
- 安装 启动 停止 卸载 Windows服务 c#
- [导入]出现windows启动服务失败(无法从命令行或调试器启动,需要安装InstallUtil.exe)的解决办法