2012-10-22 65 views
2

我得到使用DB名称:使用SMO检索SQL服务器,数据库,表信息

SqlDataSourceEnumerator sdse = SqlDataSourceEnumerator.Instance; 
DataTable table = sdse.GetDataSources(); 

下面我得到分贝的列表然后使用。

static void Main(string[] args) 
     { 
      { 
       //Connect to the local, default instance of SQL Server. 
       Server srv; 
       srv = new Server("LAPTOP\\SQLEXPRESS"); 
       //The connection is established when a property is requested. 

       Console.WriteLine(srv.Databases.ToString()); 
       foreach (Database db in srv.Databases) 
       { 
        Console.WriteLine(db); 
       } 
       Console.ReadLine(); 
      } 
     } 

的问题是,我只得到了系统数据库,没有其他人,即使他们存在。我不知道要更改什么来获取所有数据库的信息。任何援助将不胜感激。

TH

回答

3

虽然较晚,但我刚收到你们的问题的答复按您的要求。你为什么不尝试这段代码片段:

Server srvMgmtServer = default(Server); 
srvMgmtServer = new Server("LAPTOP\\SQLEXPRESS"); 
ServerConnection srvConn = default(ServerConnection); 
srvConn = srvMgmtServer.ConnectionContext; 
srvConn.LoginSecure = true; 

foreach(Database db in srvMgmtServer.Databases; 
{ 
    Console.WriteLine(db.Name); 
} 
+0

如何连接远程连接sql服务器? – Harshal

+1

相同的方法只能在服务器构造函数中使用远程服务器名称。例如“remoteServerName \ sqlServerInstance” –