none
使用SqlConnection連線遠端資料庫後,在資料庫內查詢sys.sysprocesses的Net_Address資料與客端Mac Address不一致 RRS feed

  • 問題

  • 最近使用C#做連線測試程式,只做SQLConnection連線遠端資料庫的動作
    我將程式
    在二台Win7的環境下執行連線後,去資料庫查詢連線的資訊(master.dbo.sysprocesses的Net_Address)
    確認Net_Address與客端的mac Address皆符合
    但我將程式拿到另外二台Windowns10環境下執行連線,去資料庫內查詢sys.sysprocesses的Net_Address資料與客端Mac Address卻都不一致
    四台測試環境都是桌上型電腦,在同一個網域下,都只使用一張網卡上網,並沒有無線網卡
    請教各位高手,是因為windows10有什麼機制造成Sql不會紀錄真實的mac Address嗎?還是連線時可以直接指定使用真實的MacAddress連線?



    • 已編輯 Toulin 2017年4月28日 下午 04:23
    2017年4月28日 下午 03:54

所有回覆

  • 看看這篇討論有沒有幫助:

    NET_ADDRESS in the master.dbo.sysprocesses table

    2017年4月28日 下午 09:33
  • 十分感謝您的回答,這篇討論解決我的疑惑了
    但我的問題還是無法解決,SQLConnection連線遠端資料庫時,不要使用Router的
    因為配合舊系統(VB6)使用MAC Address區分客戶線上連線數,所以希望C#的連線程式連線時,SQL資料庫可以紀錄真實的MAC Address
    註:Win10測試使用VB6連線時,SQL資料庫紀錄的是真實MAC Address
    2017年5月2日 上午 02:50
  • 經過剛剛的測試,發現在Win10環境下(沒有無線網卡),每次開啟程式連線,資料庫內master.dbo.sysprocesses紀錄的net_address都不一樣,這應該也不是上述說的router的MAC Address.
    難道客端若是Win10環境連線到SQL,
    master.dbo.sysprocesses紀錄的net_address已經不是mac Address?或是隨機變動?
    2017年5月2日 上午 06:45
  • 如果是 Windows 10,是支援 MAC Address 隨機化功能沒錯。

    可參考:在 Windows 10 行動裝置版中使用隨機硬體位址


    理直氣和,切記。

    個人

    2017年5月3日 上午 12:47
  • 十分感謝您的回答,但我的Win10都是裝在桌上型電腦,且沒有無線網卡,
    在 [網路和網際網路] 設定中只有目前使用的乙太網路,而乙太網路也沒有看到有可以設定「隨機硬體位址」的地方,是因為win10的乙太網路強制使用「隨機硬體位址」嗎?還是C#的SqlConnection在Win10連線時強制使用「隨機硬體位址」?
    下列是C#測試程式, 在win10下,每次開啟程式連線時,net_address 都會不一樣

    string cnnString = "Data Source=主機IP;Initial Catalog=Northwind;Persist Security Info=True;User ID=xx;Password=xxxx;App=testNetAddress";
    using (SqlConnection cn = new SqlConnection(cnnString))
    {
    DataTable data = new DataTable();
    string sql = "SELECT  spid,login_time,hostname,program_name,hostprocess,cmd, net_address " +
    "FROM master.dbo.sysprocesses where spid=@@spid";
    DB.QueryDataTable(data, sql, cn);
    gv.DataSource = data; //顯示在GridView上
    }


    • 已編輯 Toulin 2017年5月3日 上午 05:05
    2017年5月3日 上午 04:04