zoukankan      html  css  js  c++  java
  • C# 还原数据库操作

            /// <summary>
            /// 还原数据库
            /// </summary>
            /// <param name="strDbName">还原后的数据库名称</param>
            /// <param name="strFileName">数据库备份文件</param>
            /// <param name="dbDataName">源数据库文件</param>
            /// <param name="dbLogName">源数据库Log文件</param>
            /// <param name="dbPath">还原后保存的地址</param>
            /// <param name="serverName">服务器地址</param>
            /// <param name="userName">用户名</param>
            /// <param name="password">密码</param>
            /// <returns></returns>
            public static bool RestoreDB(string strDbName, string strFileName,string dbDataName,string dbLogName,string dbPath, string serverName, string userName, string password)
            {
    
                SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass();
                try
                {
                    svr.Connect(serverName, userName, password);
                    SQLDMO.QueryResults qr = svr.EnumProcesses(-1);
                    int iColPIDNum = -1;
                    int iColDbName = -1;
                    for (int i = 1; i <= qr.Columns; i++)
                    {
                        string strName = qr.get_ColumnName(i);
                        if (strName.ToUpper().Trim() == "SPID")
                        {
                            iColPIDNum = i;
                        }
                        else if (strName.ToUpper().Trim() == "DBNAME")
                        {
                            iColDbName = i;
                        }
                        if (iColPIDNum != -1 && iColDbName != -1)
                            break;
                    }
    
                    for (int i = 1; i <= qr.Rows; i++)
                    {
                        int lPID = qr.GetColumnLong(i, iColPIDNum);
                        string strDBName = qr.GetColumnString(i, iColDbName);
                        if (strDBName.ToUpper() == strDbName.ToUpper())
                            svr.KillProcess(lPID);
                    }
    
                    SQLDMO.Restore res = new SQLDMO.RestoreClass();
                    res.Action = 0;
                    res.Files = strFileName;
                    res.RelocateFiles = @"[" + dbDataName + "],[" + System.IO.Path.Combine(dbPath, strDbName + "_Data.mdf") + "],[" + dbLogName + "],[" + System.IO.Path.Combine(dbPath, strDbName + "_log.ldf") + "]";
                    res.Database = strDbName;
                    res.ReplaceDatabase = true;
                    res.SQLRestore(svr);
                    return true;
                }
                catch (Exception err)
                {
                    throw (new Exception("恢复数据库失败,请关闭所有和该数据库连接的程序!" + err.Message));
                }
                finally
                {
                    svr.DisConnect();
                }
            }

    需要引用COM里的SQLDMO

  • 相关阅读:
    html不点击提交,自动post
    wpf slider刻度
    visual studio 的 code snippet(代码片段)
    更换手机号之前
    post提交
    动态修改settings
    获取文件数据流+叠加byte数组(给byte数组加包头包尾)
    装箱与拆箱
    ue4中窗口打开web地址
    C++通过Callback向C#传递数据,注意问题
  • 原文地址:https://www.cnblogs.com/Shadow3627/p/3027252.html
Copyright © 2011-2022 走看看