C#获得网络中所有SQL Server服务器数据库名称

转载于http://blog.csdn.net/hzjsoft2003/article/details/6186853

region   得到所有本地网络中可使用的SQL服务器列表
///   <summary>
///   得到所有本地网络中可使用的SQL服务器列表
///   </summary>
///   <param   name= "p_strServerList "> 服务器列表 </param>
///   <returns> </returns>
public   static   bool   GetServers(ref   string   []   p_strServerList)
{
       try
      {
            SQLDMO.Application   sqlApp   =   new   SQLDMO.ApplicationClass();  
            SQLDMO.NameList   sqlServers   =   sqlApp.ListAvailableSQLServers();  
            if(sqlServers.Count   >   0)
            {
                 p_strServerList   =   new   string[sqlServers.Count];
                 for(int   i=0;i <sqlServers.Count;i++)  
                {  
                    string   srv   =   sqlServers.Item(i   +   1);  
                    if(srv   !=   null)  
                   {  
                       p_strServerList[i]   =   srv;                                                  
                   }  
               }   
           }
          return   true;
     }
     catch(Exception   ex)
     {
          throw   ex;
     }
}

#endregion

#region   得到指定SQL服务器所有数据库的列表
///   <summary>
///   得到指定SQL服务器所有数据库的列表
///   </summary>
///   <param   name= "p_strDataBaseList "> 数据库列表 </param>
///   <param   name= "p_strServer "> 服务器名 </param>
///   <param   name= "p_strUser "> 用户名 </param>
///   <param   name= "p_strPWD "> 密码 </param>
///   <returns> </returns>
public   static   bool   GetDataBases(ref   string   []   p_strDataBaseList,   string   p_strServer,   string   p_strUser,   string   p_strPWD)
{
      try
     {
          int   i   =   0;

          SQLDMO.Application   sqlApp   =   new   SQLDMO.ApplicationClass();  
          SQLDMO.SQLServer   srv   =   new   SQLDMO.SQLServerClass();                                  
          srv.Connect(p_strServer,p_strUser,p_strPWD);   

          if(srv.Databases.Count   >   0)
         {
             p_strDataBaseList   =   new   string[srv.Databases.Count];

             foreach(SQLDMO.Database   db   in   srv.Databases)  
            {  
                 if(db.Name!=null)  
                {
                     p_strDataBaseList[i]   =   db.Name;
                }
                i   =   i   +   1;
           }
        }
        return   true; 
   } 
   catch(Exception   ex)
   {
         throw   ex;
    }
}

#endregion

#region   得到所有的存储过程
///   <summary>
///   得到所有的存储过程
///   </summary>
///   <param   name= "p_strProcedureList "> 存储过程列表 </param>
///   <param   name= "p_strServer "> 服务器名 </param>
///   <param   name= "p_strUser "> 用户名 </param>
///   <param   name= "p_strPWD "> 密码 </param>
///   <param   name= "p_strDataBase "> 数据库名 </param>
///   <returns> </returns>
public   static   bool   GetProcedures(ref   string   []   p_strProcedureList,   string   p_strServer,   string   p_strUser,   string   p_strPWD,   string   p_strDataBase)
{
       try
      {
            SQLDMO.SQLServer   srv   =   new   SQLDMO.SQLServerClass();                                   
            srv.Connect(p_strServer,p_strUser,p_strPWD);  

            for(int   i=0;i <srv.Databases.Count;i++)  
           {  
                if(srv.Databases.Item(i+1, "dbo ").Name   ==   p_strDataBase)  
                {  
                     SQLDMO._Database   db=   srv.Databases.Item(i+1, "dbo ");  
                     if   (db.StoredProcedures.Count   >   0)
                    {
                         p_strProcedureList   =   new   string[db.StoredProcedures.Count];

                         for(int   j=0;j <db.StoredProcedures.Count;j++)  
                         {  
                             p_strProcedureList[j]   =   db.StoredProcedures.Item(j+1, "dbo ").Name;  
                         }  
                         break;  
                    }  
              }
         }

        return   true;
   }
   catch(Exception   ex)
   {
        throw   ex;
    }
}
#endregion

#region   得到所有的Tables集合
///   <summary>
///   得到所有的Tables集合
///   </summary>
///   <param   name= "p_strProcedureList "> Tables集合 </param>
///   <param   name= "p_strServer "> 服务器名 </param>
///   <param   name= "p_strUser "> 用户名 </param>
///   <param   name= "p_strPWD "> 密码 </param>
///   <param   name= "p_strDataBase "> 数据库名 </param>
///   <returns> </returns>
public   static   bool   GetTables(ref   string   []   p_strTableList,   string   p_strServer,   string   p_strUser,   string   p_strPWD,   string   p_strDataBase)

      try
      {
            SQLDMO.SQLServer   srv   =   new   SQLDMO.SQLServerClass();                                   
            srv.Connect(p_strServer,p_strUser,p_strPWD);   

            for(int   i=0;i <srv.Databases.Count;i++)  
            {  
                 if(srv.Databases.Item(i+1, "dbo ").Name   ==   p_strDataBase)  
                 {  
                      SQLDMO._Database   db=   srv.Databases.Item(i+1, "dbo ");  
                      if   (db.Tables.Count   >   0)
                      { 
                           p_strTableList   =   new   string[db.Tables.Count];

                           for(int   j=0;j <db.Tables.Count;j++)  
                          {  
                               p_strTableList[j]   =   db.Tables.Item(j+1, "dbo ").Name;  
                          }  
                          break;  
                     }  
               }
         }

         return   true; 
     }
     catch(Exception   ex)
     {
         throw   ex; 
     }
}
#endregion

#region   得到所有的Views集合
///   <summary>
///   得到所有的Views集合
///   </summary>
///   <param   name= "p_strProcedureList "> Views集合 </param>
///   <param   name= "p_strServer "> 服务器名 </param>
///   <param   name= "p_strUser "> 用户名 </param>
///   <param   name= "p_strPWD "> 密码 </param>
///   <param   name= "p_strDataBase "> 数据库名 </param>
///   <returns> </returns>
public   static   bool   GetViews(ref   string   []   p_strViewList,   string   p_strServer,   string   p_strUser,   string   p_strPWD,   string   p_strDataBase)
{
     try
     {
          SQLDMO.SQLServer   srv   =   new   SQLDMO.SQLServerClass();                                  
          srv.Connect(p_strServer,p_strUser,p_strPWD);  

          for(int   i=0;i <srv.Databases.Count;i++)  
         {  
              if(srv.Databases.Item(i+1, "dbo ").Name   ==   p_strDataBase)  
              {  
                   SQLDMO._Database   db=   srv.Databases.Item(i+1, "dbo ");  
                   if   (db.Views.Count   >   0)
                   {
                        p_strViewList   =   new   string[db.Views.Count];

                        for(int   j=0;j <db.Views.Count;j++)  
                        {  
                             p_strViewList[j]   =   db.Views.Item(j+1, "dbo ").Name;   
                        }  
                        break;  
                  }  
           }
      }

      return   true;
   }
   catch(Exception   ex)
   {
        throw   ex;
    }
}
#endregion

原文地址:https://www.cnblogs.com/ajun/p/2511671.html