Exemplo n.º 1
0
        /// <summary>
        /// 断开数据库所有连接
        /// </summary>
        /// <param name="dbName"></param>
        public void KillAllProcess(string dbName)
        {
            QueryResults qr = sqlServer.EnumProcesses(-1);

            // 获取SPID和DBNAME字段列序号
            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 (string.Compare(strDBName, "test", true) == 0)
                {
                    sqlServer.KillProcess(lPID);
                }
            }
        }