首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

C# 程式碼範例:掃描內網 SQL Server 實例並列出資料庫結構

     編輯:關於SqlServer

功能概覽

示範三項核心功能:

  1. 列舉內網可用的 SQL Server 實例
  2. 連線指定資料庫並取得結構描述集合
  3. 列出指定資料庫的所有使用者資料表名稱

完整程式碼 (C#)

protected void Button1_Click(object sender, EventArgs e)
{
    // 1. 列舉內網 SQL Server 實例
    System.Data.Sql.SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;
    DataTable dt1 = instance.GetDataSources();
    Response.Write("目前內網可用的SqlServer<br/>");
    foreach (DataRow dr in dt1.Rows)
    {
        Response.Write(dr[0].ToString() + "<br/>");
    }
    Response.Write("==========================<br/>");

    // 2. 取得資料庫結構描述
    string strConn = "Data Source=192.168.0.36;Initial Catalog=NorthWind;Persist Security Info=True;User ID=sa;PassWord=sa";
    using (System.Data.SqlClient.SqlConnection conn = new SqlConnection(strConn))
    {
        conn.Open();
        DataTable dt2 = conn.GetSchema();
        Response.Write("資料庫的結構描述集合<br/><table border='1'>");
        foreach (DataRow row in dt2.Rows)
        {
            Response.Write("<tr>");
            foreach (DataColumn col in dt2.Columns)
            {
                Response.Write("<td>" + col.ColumnName + "</td><td>" + row[col] + "</td>");
            }
            Response.Write("</tr>");
        }
        Response.Write("</table><br/>");

        // 3. 列出使用者資料表
        string[] restrictions = new string[4];
        restrictions[3] = "BASE TABLE"; // 只取資料表,不含檢視
        DataTable dt3 = conn.GetSchema("Tables", restrictions);
        Response.Write("==========================<br/>某資料庫下的使用者資料表名<br/>");
        foreach (DataRow dr in dt3.Rows)
        {
            Response.Write(dr["TABLE_NAME"].ToString() + "<br/>");
        }
    }
}

關鍵點說明

  • SqlDataSourceEnumerator.Instance.GetDataSources():發現網路上可見的 SQL Server 實例。
  • SqlConnection.GetSchema():取得資料庫中繼資料,不帶參數回傳結構描述集合清單;帶 "Tables" 與限制陣列可篩選資料表/檢視。
  • 限制陣列四個元素分別對應:Catalog、Owner、TableName、TableType。

參考來源

freeliver54 部落格

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved