先串連到master庫中,執行 select name from master..sysdatabases 就可以了。
sp_helpdb也可以列出資料名,但不是全部,sp_helpdb是會根據目前使用者角色找出相應的資料庫,而用sysdatabases表則只要有許可權訪問該表就能查出所有資料庫資訊。
預設情況下,sqlserver提供的6個資料庫中,除了model資料庫外,其他若干個資料庫還可能擁有guest使用者。
exec sp_helpdb得到的記錄包括:目前使用者擁有存取權限的資料庫(包括預設的幾個guest訪問資料庫)。
任何使用者(只要能串連到sqlserver)查詢master資料庫中的表sysdatabases可以得到所有的資料庫名稱,因為該表的guest使用者不可刪除。
樣本:
public ArrayList GetMSSQLDBNameList(string DSN,string UID,string PWD)
{
ArrayList DBNameList = new ArrayList();
SqlConnection Connection = new SqlConnection(String.Format("Data Source={0};Initial Catalog=master;User ID={1};PWD={2}",DSN,UID,PWD));
DataTable DBNameTable = new DataTable();
SqlDataAdapter Adapter = new SqlDataAdapter("select name from master..sysdatabases", Connection);
Adapter.Fill(DBNameTable);
int i = 0;
foreach (DataRow Row in DBNameTable.Rows)
{
DBNameList.Add(Row[i]);
i++;
}
return DBNameList;
}