应客户需求,要求实现一个版本一键升级的功能,咨询过同事之后弄了个demo出来,后台代码如下:

  //DBConnModelInfo:连接字符串的对象 (包含数据库实例名,数据库名,登陆名,登陆密码)

  public bool DBVersionSaveData(DBConnModelInfo mdl)
        {
            bool result = false;

try
            {
                int timeout = 60000; //设置执行超时时间,单位毫秒
                string prversion = WebConfig.Version;//程序版本
                string dbversion = new BSystemParameter().GetDBVersion();//数据库版本
                
                //升级脚本的物理路径
                string root = "DataBase\\Update";
                string folder = prversion;
                string rootpath = Path.Combine(root, folder);
                string dirpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, rootpath);

string filepath = Path.Combine(dirpath, "Update.sql");//升级脚本
                string logpath = Path.Combine(dirpath, "Update.txt");//存放执行结果
                string destfilename = string.Format("Update_{0}.sql", mdl.InitialCatalog);//要执行升级的脚本(升级脚本的副本,不改变原升级脚本)
                string destfilepath = Path.Combine(dirpath, destfilename);

if (System.IO.File.Exists(destfilepath))
                {
                    Tools.DeleteFile(@destfilepath);//删除文件
                }
                //将升级脚本的内容复制到副本
                if (!System.IO.File.Exists(destfilepath))
                {
                    using (StreamWriter sw = new StreamWriter(destfilepath, true, Encoding.Unicode))
                    {
                        sw.WriteLine(string.Format("Use [{0}]", mdl.InitialCatalog));//mdl.InitialCatalog 数据库名
                        sw.WriteLine("Go");

string[] rals = System.IO.File.ReadAllLines(@filepath);
                        foreach (string s in rals)
                        {
                            sw.WriteLine(s);
                        }
                    }
                }
                //执行升级脚本
                if (System.IO.File.Exists(destfilepath))
                {
                    Process p = new Process();
                    p.StartInfo.FileName = "osql.exe"; //执行脚本的方式
                    /* -S:数据库实例名  -U:登录名 -P:密码 -i:升级的脚本路径 -o:执行后结果存放路径  */
                    string args = string.Format(@"-S {0}  -U {1} -P {2} -i ""{3}"" -o ""{4}""", mdl.DataSource, mdl.UserID, mdl.Password, destfilepath, logpath);
                    p.StartInfo.Arguments = args;
                    p.StartInfo.UseShellExecute = false;
                    p.StartInfo.CreateNoWindow = true;
                    p.Start();
                    p.WaitForExit(timeout);
                    p.Close();

result = true;
                }                
            }
            catch (Exception ex)
            {
                Tools.Log(this.GetType().Name, new StackFrame(1).GetMethod().Name, ex);//错误日志
                result = false;
            }
            
            return result;
        }

asp.net 版本一键升级,后台直接调用升级脚本的更多相关文章

  1. ASP.NET前台JS与后台CS函数如何互相调用

    摘要: 在实际的Web开发中,我们可能会常常遇到后台调用前台JS代码或者前台JS调用后台代码的情况.今天就把比较实用的前后台相互调用的方法总结出来和大家分享. 在实际的Web开发中,我们可能会常常遇到 ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)

    开发工具:VS2015(2012以上)+SQL2008R2以上数据库  您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB  升级后界面效果如下: 任务调度系统界面 http: ...

  3. ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(转)

    开发工具:VS2015(2012以上)+SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下: 日程管理   http://ww ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入

    系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...

  5. ASP.NET MVC搭建项目后台UI框架—2、菜单特效

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  6. ASP.NET MVC搭建项目后台UI框架—3、面板折叠和展开

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  7. ASP.NET MVC搭建项目后台UI框架—4、tab多页签支持

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  8. ASP.NET MVC搭建项目后台UI框架—6、客户管理(添加、修改、查询、分页)

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  9. ASP.NET MVC搭建项目后台UI框架—8、将View中选择的数据行中的部分数据传入到Controller中

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

随机推荐

  1. IBM LOTUS DOMINO 9 部署SSL证书

    前言 随着SHA1算法在2016年12月31日以后,将被强制淘汰,所有新的SSL证书都必须支持SHA256算法,所以我们必须将IBM Domino Server升级到9.0以上才可以支持SHA256算 ...

  2. Python环境安装与基础语法(3)——进制、运算符和优先级、原码、补码

    进制 转十进制:基本运算方法(权算方式) 0b1111——>1*2**3 + 1*2**2 + 1*2**1 + 1*2**0 0x7F——>7*16**1 + F*16**0 转二进制: ...

  3. 201871010104-陈园园 《面向对象程序设计(java)》第七周学习总结

    201871010104-陈园园 <面向对象程序设计(java)>第七周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  4. C#基础表达式语句详解(下)

    书接上文: 4.选择语句:if语句和switch语句 4.1If语句:statement:两种格式:A与B A:If(boolean-expression)embedded-statement(嵌入式 ...

  5. JWT 学习资料

    学习资料 网址 官方网站 https://jwt.io/ debugger https://jwt.io/#debugger 相关的类库 https://jwt.io/#libraries (java ...

  6. python-下载网页链接

    from urllib.request import urlretrieve url = 'http://images.jupiterimages.com/common/detail/27/68/22 ...

  7. Window包管理工具scoop

    自定义安装路径安装 scoop安装应用路径 目标目录是D:\Program Files\Scoop,在PowerShell命令控制台中运行: [environment]::setEnvironment ...

  8. matlab的plot3()函数、mesh()函数和surf()函数

    1.plot3()函数 例1:绘制一条空间折线. x=[0.2,1.8,2.5]; y=[1.3,2.8,1.1]; z=[0.4,1.2,1.6]; figure(1);plot3(x,y,z); ...

  9. 水晶报表报错:log4net初始值问题

    运行水晶报表的程序一直出错,报错如下: System.TypeInitializationException: “CrystalDecisions.ReportSource.ReportSourceF ...

  10. [LeetCode] 660. Remove 9 移除9

    Start from integer 1, remove any integer that contains 9 such as 9, 19, 29... So now, you will have ...