none
sql 2005 遠端連線的問題 =_= (已爬文) RRS feed

  • 問題

  • 家裡架了台 server 2003 裝了 sql server express 2005

    想從外地連到家裡的 server 上共用名字叫「web」的資料庫,新增或修改資料

    看了文章,我已將 「服務和連接的介面區組態」>>「遠端連接」>>

    改為「本機和遠端連接」>>使用 tcp/ip 與具名管道(還是只要設定 「只使用 tcp/ip」就好了?我兩種情形都分別試過)

    也在安全性 >>登入 >>新增登入 >增加了一個使用者 net 密碼 456 (在本機測試連線ok)

    它的其它設定:
     sql server 驗證
    伺服器角色(sysadmin)
    使用者對應 >> 設定 web >> db_owner 及 public 打勾

    我是用 vb studio 2005 拉個 sqldatasource 來測試連線
    資料來源:Microsoft SQL Server (SqlClient)
    伺服器名稱:  222.157.92.X
            222.157.92.X\SQLEXPRESS

    IP 是正確的(上www.DNSstuff.com查的)~而 IP 分享器也有開 1433 port

    結果,我伺服器名稱用222.157.92.X連的話,錯誤訊息是
    「使用者 net 登入失敗, 未結合受信任的 SQL 連線」

    用而222.157.92.X\SQLEXPRESS連的話,錯誤訊息是
    (在底下圖片說明裡)

    http://i.turboimagehost.com/p/187793/sqlhelp.jpg.html

    請問我是哪裡做錯了呢?


     

     

    2006年11月3日 上午 04:59

解答

  • Hi: 您好,

    在此筆者要說明幾件事情,請您做為參考:
    1. SQL Server 2005 Express Edition 依據 Microsoft 的設計,並不適合用於在 InterNet 的TCP/IP網路連線之用。

    2. 任何將資料庫的 TCP/IP 通訊埠直接暴露 InterNet 上的作法,違反安全機制的作法。
    建議使用VPN。

    若您仍決定要將 TCP/IP 通訊埠直接暴露 InterNet 上。可以參考以下的作法:
    1. 請先使用 『SQL Server 組態管理員』中啟用網路存取,並指定正確的 TCP/IP 之通訊埠
    2. 在 IP分享器、防火牆上開啟正確的通訊埠。

    3. 若您已經正確的開啟 TCP/IP 之通訊埠。
    請執行以下程式,檢視與確認系統所使用 通訊埠。
    Use master
    Go
    Xp_readerrorlog

    應該可以看到 『Server is listening on [ 'any' <ipv4> ****].』
    **** 就是您所指定 TCP/IP 之通訊埠。

    4. SQLExpress 預設並未使用 TCP/IP 1433 。

    參考文件:
    如何:在 SQL Server 組態管理員中啟用網路存取 (SQL Server Express) 
    http://msdn2.microsoft.com/zh-tw/library/ms165718.aspx

    如何設定 SQL Server 執行個體接聽特定 TCP 通訊埠或動態通訊埠
    http://support.microsoft.com/kb/823938/zh-tw

    請問 SQL Server 2005 安裝好後,為何無法利用 TCP/IP 對外連線呢?
    http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=805435&SiteID=14

    SQL Server Express Edition 的功能、特性與管理問題。
    http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=805338&SiteID=14


    希望對您有幫助 ...

    Best Regards
    Derrick Chen 德瑞克

    2006年11月3日 上午 07:55

所有回覆

  • 防火牆的設定?
    2006年11月3日 上午 05:28
    版主
  • 檢查幾件事:

    • Windows Server 2003 的防火牆有沒有打開 port 1433 ?
    • 你的 SQL Server 有設定驗證模式為 "Windows 和 SQL Server 驗證" 嗎 ?
    • 你確定你有安裝 SQLEXPRESS 這個 instance ? 如果有,你的 SQLEXPRESS 那個伺服器有打開 remote access 嗎 ?
    2006年11月3日 上午 06:01
    版主
  • 您好:
    請依照樓上幾位的建議進行檢查,順便使用組態管理員開啟 SQL Server Browser 服務,並啟用 TCP/IP 通訊協定

    相信您應該是將 SQL Server 2005 Express 安裝成具名執行個體,因此連線時要使用 222.157.92.X\SQLEXPRESS

    2006年11月3日 上午 06:14
    版主
  • 對不起,我忘了說 我還有灌 sql server 2000 Standard

    所以,我之前的測試,我自己是把它理解為

    HOME  >>> 是 SQL 2000
    HOME/SQLEXPRESS  >>> 是 SQL 2005 EXPRESS

     

    您好,請問您說的 remote access 是在何處設定?可否說明一下,我會再做檢查

    另外,我沒有裝防火牆軟體,而 windows 內建的防火牆,我一開始就是關閉的

    另外,我的防毒軟體是 NOD32 (v2.5.1.30 沒附防火牆功能)

    而 SQL 驗證模式的確已設為: "Windows 和 SQL Server 驗證" 

    附圖說明:
    http://i.turboimagehost.com/p/188024/sq1.jpg.html

     

     

    還有,像 Alex 您說的 sqlexpress 2005 遠端設定 >> tcp/ip 連線 或具名管道 

    那個我有在一開始所 PO 的文,裡面的附圖有說明,我已經有設定了 。

    還是你說的是別的地方呢?

    2006年11月3日 上午 06:45
  •  

    重新編輯一直出錯,所以我用回覆的,不好意思

     

    像 Alex 您說的 

    sqlexpress 2005 遠端設定 >> tcp/ip 連線 或具名管道,
    那個我有在一開始所 PO 的文,裡面的附圖有說明,我已經有設定了 。
    而 sql server Browser 從組態管理員去看,是「正在執行」

    還是你指的是別的地方呢?

    2006年11月3日 上午 07:02
  • Hi: 您好,

    在此筆者要說明幾件事情,請您做為參考:
    1. SQL Server 2005 Express Edition 依據 Microsoft 的設計,並不適合用於在 InterNet 的TCP/IP網路連線之用。

    2. 任何將資料庫的 TCP/IP 通訊埠直接暴露 InterNet 上的作法,違反安全機制的作法。
    建議使用VPN。

    若您仍決定要將 TCP/IP 通訊埠直接暴露 InterNet 上。可以參考以下的作法:
    1. 請先使用 『SQL Server 組態管理員』中啟用網路存取,並指定正確的 TCP/IP 之通訊埠
    2. 在 IP分享器、防火牆上開啟正確的通訊埠。

    3. 若您已經正確的開啟 TCP/IP 之通訊埠。
    請執行以下程式,檢視與確認系統所使用 通訊埠。
    Use master
    Go
    Xp_readerrorlog

    應該可以看到 『Server is listening on [ 'any' <ipv4> ****].』
    **** 就是您所指定 TCP/IP 之通訊埠。

    4. SQLExpress 預設並未使用 TCP/IP 1433 。

    參考文件:
    如何:在 SQL Server 組態管理員中啟用網路存取 (SQL Server Express) 
    http://msdn2.microsoft.com/zh-tw/library/ms165718.aspx

    如何設定 SQL Server 執行個體接聽特定 TCP 通訊埠或動態通訊埠
    http://support.microsoft.com/kb/823938/zh-tw

    請問 SQL Server 2005 安裝好後,為何無法利用 TCP/IP 對外連線呢?
    http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=805435&SiteID=14

    SQL Server Express Edition 的功能、特性與管理問題。
    http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=805338&SiteID=14


    希望對您有幫助 ...

    Best Regards
    Derrick Chen 德瑞克

    2006年11月3日 上午 07:55
  • 謝謝,我剛又反覆測試,結果是這裡有問題

    因為我是裝兩個 SQL Server (server 2000 standard   及 2005 express)

    所以在執行,底下指令時

    Use master
    Go
    Xp_readerrorlog

    它是出現  1640 ,而我看了底下文章,及上網 Google 了一下,發現 1640 是 agent 用的,我就把

    設定  「TCP 通訊埠或動態通訊埠」的那個頁面,最底下的 「TCP 通訊埠」從 1640 改為 1433 就可以了

    而連線時,也是使用 222.157.92.X即可連線,並不需要加上 \SQLEXPRESS

    如何設定 SQL Server 執行個體接聽特定 TCP 通訊埠或動態通訊埠
    http://support.microsoft.com/kb/823938/zh-tw

    安全性問題我會再找其它方式取代直接連線的

    學到不少 ^O^ ,問題解決真爽,謝謝你們的幫忙囉~

     

    2006年11月3日 上午 09:47
  • Hi: 您好,

    感謝您的回覆,很高興能協助您解決此問題。

    並歡迎常來此分享您的心得,因為有您熱情的分享,讓這裡成長茁壯。

    希望對您有幫助 ...

    Best Regards
    Derrick Chen 德瑞克

    2006年11月4日 上午 12:34