close

參考

http://support.microsoft.com/kb/294453

http://support.microsoft.com/kb/914277/zh-tw

http://support.microsoft.com/kb/823938/zh-tw?spid=2855&sid=1284

重點:1.2005 Express 是以預設的執行個體名稱 Computer Name\SQLEXPRESS 安裝的    ----連線時以 IP\INSTANCENAME(default:SQLEXPRESS)

       2.是否設定遠端連線允許    --可經由介區設定或登入SSMS [屬性]\[連結] 允許遠端連線   SQL屬性                                                                      

       3.連接埠相關設定是否完成  --設定動態連線埠並配合Browser或設定靜態連線埠

       4.是否被防火牆阻擋           --可利用telnet IP port 來測試

內容描述

當您嘗試從遠端電腦連接到 Microsoft SQL Server 2005 的執行個體時,可能會收到錯誤訊息。使用任何程式連接到 SQL Server 時,可能就會發生這個問題。例如,當您使用 SQLCMD 公用程式連接到 SQL Server 時,會收到下列錯誤訊息:

Sqlcmd:錯誤:Microsoft SQL Native Client:建立伺服器的連接時發生錯誤。連接到 SQL Server 2005 時,可能因為在預設的設定下 SQL Server 不允許遠端連接而引起此失敗。

當 SQL Server 2005 未設定為接受遠端連接時,可能就會發生這個問題。根據預設,SQL Server 2005 Express Edition 和 SQL Server 2005 Developer Edition 不允許遠端連接。

啟用 SQL Server 2005 Express 或 SQL Server 2005 Developer Edition 的遠端連接

您必須針對您要從遠端電腦連接的每個 SQL Server 2005 執行個體,啟用遠端連接。如果要執行這項操作,請依照下列步驟執行:

  1. 按一下 [開始],指向 [程式集],指向 [Microsoft SQL Server 2005],再指向 [組態工具],然後按一下 [SQL Server 介面區組態]
  2. [SQL Server 2005 介面區組態] 頁面上,按一下 [服務和連接的介面區組態]
  3. [服務和連接的介面區組態] 頁面上,展開 [Database Engine],按一下 [遠端連接],再按一下 [本機和遠端連接],按一下要為您的環境啟用的適當通訊協定,然後按一下 [套用]
    SQL介面區組態 
    注意 當您收到下列訊息時,請按一下 [確定]
    直到重新啟動 Database Engine 服務之後,對連接設定所做的變更才會生效。
  4. [服務和連接的介面區組態] 頁面上,展開 [Database Engine],按一下 [服務],再按一下 [停止],等待 MSSQLSERVER 服務停止,然後按一下 [啟動] 重新啟動 MSSQLSERVER 服務。

啟用 SQL Server Browser 服務

如果您要使用執行個體名稱執行 SQL Server 2005,但不想在連接字串中使用特定 TCP/IP 通訊埠編號執行 SQL Server 2005,則必須啟用 SQL Server Browser 服務才能允許遠端連接。例如,SQL Server 2005 Express 是以預設的執行個體名稱 Computer Name\SQLEXPRESS 安裝的。無論您正在執行多少個 SQL Server 2005 執行個體,您只需要啟用 SQL Server Browser 服務一次。如果要啟用 SQL Server Browser 服務,請依照下列步驟執行。

重要 這些步驟可能會增加您的安全性風險。此外,這些步驟也可能使您的電腦或網路更容易遭受惡意使用者或惡意軟體 (例如病毒) 的攻擊。我們建議您執行本文所述的程序,使程式可以依照其設計來運作或實作特定程式功能。在進行這些變更之前,建議您先評估在特定環境中實作這個程序的相 關風險。如果您決定實作這個程序,請採用任何其他的適當步驟,以協助保護您的系統。建議您只有在真正需要時,才使用這個程序。

  1. 按一下 [開始],指向 [程式集],指向 [Microsoft SQL Server 2005],再指向 [組態工具],然後按一下 [SQL Server 介面區組態]
  2. [SQL Server 2005 介面區組態] 頁面上,按一下 [服務和連接的介面區組態]
  3. [服務和連接的介面區組態] 頁面上,按一下 [SQL Server Browser],再按一下 [啟動類型][自動],然後按一下 [套用]

    注意 當您按一下 [自動] 選項時,SQL Server Browser 服務會在您每次啟動 Microsoft Windows 時自動啟動。
  4. 按一下 [啟動],然後按一下 [確定]

注意 當您在電腦上執行 SQL Server Browser 服務時,電腦會顯示電腦上正在執行的每個 SQL Server 執行個體的名稱和連線資訊。只要不啟用 SQL Server Browser 服務,並且透過指派的 TCP 通訊埠直接連接到 SQL Server 的執行個體,即可降低這個風險。

啟用 SQL Server Browser 服務

如果您要使用執行個體名稱執行 SQL Server 2005,但不想在連接字串中使用特定 TCP/IP 通訊埠編號執行 SQL Server 2005,則必須啟用 SQL Server Browser 服務才能允許遠端連接。例如,SQL Server 2005 Express 是以預設的執行個體名稱 Computer Name\SQLEXPRESS 安裝的。無論您正在執行多少個 SQL Server 2005 執行個體,您只需要啟用 SQL Server Browser 服務一次。如果要啟用 SQL Server Browser 服務,請依照下列步驟執行。

重要 這些步驟可能會增加您的安全性風險。此外,這些步驟也可能使您的電腦或網路更容易遭受惡意使用者或惡意軟體 (例如病毒) 的攻擊。我們建議您執行本文所述的程序,使程式可以依照其設計來運作或實作特定程式功能。在進行這些變更之前,建議您先評估在特定環境中實作這個程序的相 關風險。如果您決定實作這個程序,請採用任何其他的適當步驟,以協助保護您的系統。建議您只有在真正需要時,才使用這個程序。

  1. 按一下 [開始],指向 [程式集],指向 [Microsoft SQL Server 2005],再指向 [組態工具],然後按一下 [SQL Server 介面區組態]
  2. [SQL Server 2005 介面區組態] 頁面上,按一下 [服務和連接的介面區組態]
  3. [服務和連接的介面區組態] 頁面上,按一下 [SQL Server Browser],再按一下 [啟動類型][自動],然後按一下 [套用]

    注意 當您按一下 [自動] 選項時,SQL Server Browser 服務會在您每次啟動 Microsoft Windows 時自動啟動。
  4. 按一下 [啟動],然後按一下 [確定]

注意 當您在電腦上執行 SQL Server Browser 服務時,電腦會顯示電腦上正在執行的每個 SQL Server 執行個體的名稱和連線資訊。只要不啟用 SQL Server Browser 服務,並且透過指派的 TCP 通訊埠直接連接到 SQL Server 的執行個體,即可降低這個風險。

靜態通訊埠配置

如果您設定 SQL Server 執行個體使用靜態通訊埠,然後重新啟動 SQL Server 執行個體,則 SQL Server 執行個體只會接聽指定的靜態通訊埠。SQL Server 用戶端必須將所有要求只傳送到 SQL Server 執行個體所接聽的靜態通訊埠。

但是,當 SQL Server 啟動時,如果 SQL Server 執行個體已設定為接聽靜態通訊埠,並且電腦上執行的其他程式已經使用指定的靜態通訊埠,SQL Server 便不會接聽指定的靜態通訊埠。

在預設情況下,SQL Server 的預設執行個體會在靜態通訊埠 1433 上接聽來自 SQL Server 用戶端的要求,因此,用戶端網路程式庫假設為該用戶端電腦所定義的通訊埠 1433 或全域預設通訊埠,是用來連線至 SQL Server 的預設執行個體。

如果 SQL Server 的預設執行個體不是接聽通訊埠 1433,您必須定義伺服器別名名稱,或者使用「用戶端網路公用程式」變更全域預設通訊埠。不過,您也可以讓 SQL Server 的預設執行個體接聽多個靜態通訊埠。

動態通訊埠配置

只有 SQL Server 的具名執行個體可以使用動態通訊埠配置處理序。在動態通訊埠配置處理序中,當您初次啟動 SQL Server 執行個體時,通訊埠是設定為零 (0)。因此 SQL Server 會向作業系統要求可用的通訊埠編號。一旦通訊埠編號配置給 SQL Server,SQL Server 就會開始接聽配置的通訊埠。

配置的通訊埠編號會寫入 Windows 登錄中。每當您啟動該 SQL Server 具名執行個體時,執行個體就會使用配置到的通訊埠編號。但是,當您啟動 SQL Server 時,如果已經在電腦上執行的其他程式使用配置到的通訊埠編號,SQL Server 就會選擇其他通訊埠。

當 SQL Server 執行個體使用動態通訊埠配置時,在 SQL Server 用戶端建置的連接字串不會指定目的地 TCP/IP 通訊埠,除非使用者或程式設計人員明確地指定通訊埠。因此,SQL Server 用戶端程式庫會查詢 UDP 通訊埠 1434 上的伺服器電腦,以收集有關 SQL Server 目的地執行個體的資訊。當 SQL Server 傳回資訊時,SQL Server 用戶端程式庫就會傳送資料給適當的 SQL Server 執行個體。

如果 UDP 通訊埠 1434 已停用,SQL Server 用戶端就無法以動態方式判斷 SQL Server 具名執行個體的通訊埠。因此,SQL Server 用戶端可能無法連線到 SQL Server 的具名執行個體。在這種情況下,SQL Server 用戶端必須以動態方式指定 SQL Server 2000 具名執行個體接聽的配置通訊

確認 SQL Server 執行個體的通訊埠設定

注意 SQL Server 2000 的預設執行個體永遠使用靜態通訊埠。

如果要找出 SQL Server 執行個體所接聽的 TCP/IP 通訊埠,請依照下列步驟執行:

  1. 啟動 SQL Query Analyzer,然後連線到 SQL Server 執行個體。
  2. 在 SQL Query Analyzer 中執行下列 Transact-SQL 陳述式:
    Use master
    Go
    Xp_readerrorlog
  3. [結果] 窗格中,找出下列文字 (其中 X.X.X.X 是 SQL Server 執行個體的 IP 位址,而 Y 是 SQL Server 接聽的 TCP/IP 通訊埠):

    SQL 正在聆聽 X.X.X.X:Y

    注意:例如,如果找到「SQL 正在聆聽 10.150.158.246:1433」文字列於 [結果] 窗格中,則 10.150.158.246 為 SQL Server 的 IP 位址,而 1433 便是 SQL Server 執行個體接聽的 TCP/IP 通訊埠。

如果要確認 SQL Server 執行個體的通訊埠設定,請依照下列步驟執行:

  1. 啟動 [登錄編輯程式]。
  2. 在 [登錄編輯程式] 中,找出下列登錄機碼:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\MSSQLServer\SuperSocketNetLib\Tcp
    注意 如果您使用 SQL Server 2005,請找出下列登錄子機碼:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<MSSQL.x>\MSSQLServer\SuperSocketNetLib\Tcp\IPAll
    請注意 TCPDynamicPorts 值和 TCPPort 值。這兩個值會依通訊埠配置方法的不同而顯示如下:
    • 靜態通訊埠配置
      如果您設定 SQL Server 執行個體使用靜態通訊埠,但尚未重新啟動 SQL Server 執行個體,則登錄值設定如下:
      TCPDynamicPorts = Last port used
      TCPPort = New static port to be used after the next restart; new static port that you set by using the Server Network Utility
      但是,如果您設定 SQL Server 執行個體使用靜態通訊埠,並重新啟動 SQL Server 執行個體,則登錄值設定如下:
      TCPDynamicPorts = Blank
      TCPPort = New static port that you set by using the Server Network Utility
    • 動態通訊埠配置
      如果您設定 SQL Server 執行個體使用動態通訊埠配置,但尚未重新啟動 SQL Server 執行個體,則登錄值設定如下:
      TCPDynamicPorts = Blank
      TCPPort = 0
      但是,如果您設定 SQL Server 執行個體使用動態通訊埠配置,並重新啟動 SQL Server 執行個體,則登錄值設定如下:
      TCPDynamicPorts = Current port used
      TCPPort = Current port used

設定 SQL Server 執行個體使用靜態通訊埠

SQL Server 2005

如果要設定 SQL Server 2005 執行個體使用靜態通訊埠,請參閱依照《SQL Server 2005 線上叢書》的<如何:設定伺服器接聽特定 TCP 通訊埠 (SQL Server 組態管理員)>(How to: Configure a Server to Listen on a Specific TCP Port (SQL Server Configuration Manager)) 主題中所描述的步驟執行。

SQL Server 2000

如果要設定 SQL Server 執行個體使用靜態通訊埠,請依照下列步驟執行:

  1. 啟動 [伺服器網路公用程式]。如果要執行這項操作,請執行下列其中一項步驟:
    • 按一下 [開始],指向 [程式集],再指向 [Microsoft SQL Server],然後按一下 [伺服器網路公用程式]
    • 按一下 [開始],然後按一下 [執行]。在 [開啟] 方塊中,輸入 svrnetcn.exe,然後按一下 [確定]
    [SQL Server 網路公用程式] 對話方塊隨即出現。
  2. [SQL Server 網路公用程式] 對話方塊中,按一下 [一般] 索引標籤。
  3. [伺服器上的執行個體] 清單中,選取您的 SQL Server 執行個體。

    注意 如果 TCP/IP 通訊協定已停用,請立即啟用。如果要執行這項操作,請按一下 [停用的通訊協定] 清單方塊中的 [TCP/IP],然後按一下 [啟用]
  4. [啟用的通訊協定] 清單方塊中,按一下 [TCP/IP],然後按一下 [屬性]
  5. [預設通訊埠] 方塊中,輸入靜態通訊埠編號,然後按一下 [確定]

    注意 您所指定的靜態通訊埠不可與 SQL Server 執行個體目前接聽的動態通訊埠相同。例如,如果 SQL Server 執行個體目前接聽動態 TCP/IP 通訊埠 1400,請輸入 1500 做為新的靜態通訊埠。
  6. 按一下 [確定],再按一下 [確定]
  7. 重新啟動 SQL Server 執行個體。
  8. 檢視 SQL Server 錯誤記錄檔,確認 SQL Server 執行個體目前是否使用靜態通訊埠。

    注意 如果您具有 SQL Server 叢集執行個體,並且您在叢集節點上執行指定的步驟,則可能會發現其他節點上的 TCPDynamicPorts 登錄值和 TCPPort 登錄值仍然保留舊值。當您將 SQL Server 群組移至相對應的叢集節點,然後讓 SQL Server 在叢集節點上線時,叢集節點上的登錄值將會反映正確的值。

您可以將 SQL Server 執行個體的靜態通訊埠設定為與稍早所使用動態通訊埠相同的通訊埠編號。如果要執行這項操作,請依照下列步驟執行:

  1. 檢視 TCPDynamicPorts 登錄值和 TCPPort 登錄值,以判斷 SQL Server 執行個體稍早所使用的動態通訊埠編號。
  2. 在 [伺服器網路公用程式] 中,將靜態通訊埠設定為與您在步驟 1 中所判斷登錄值不同的通訊埠編號。
  3. 重新啟動 SQL Server 執行個體。
  4. 在 [伺服器網路公用程式] 中,將靜態通訊埠設定為您在步驟 1 中所判斷的登錄值。
  5. 重新啟動 SQL Server 執行個體。

 

設定 SQL Server 執行個體使用動態通訊埠

SQL Server 2005

如果要設定 SQL Server 2005 執行個體使用動態通訊埠,請參閱依照《SQL Server 2005 線上叢書》的<如何:設定伺服器接聽特定 TCP 通訊埠 (SQL Server 組態管理員)>(How to: Configure a Server to Listen on a Specific TCP Port (SQL Server Configuration Manager)) 主題中所描述的類似方法執行。如需詳細資訊,請參閱《SQL Server 2005 線上叢書》中的<伺服器網路組態>(Server Network Configuration) 主題。

SQL Server 2000

如果要設定 SQL Server 執行個體使用動態通訊埠,請依照下列步驟執行:

  1. 啟動 [伺服器網路公用程式]。如果要執行這項操作,請執行下列其中一項步驟:
    • 按一下 [開始],指向 [程式集],再指向 [Microsoft SQL Server],然後按一下 [伺服器網路公用程式]
    • 按一下 [開始],然後按一下 [執行]。在 [開啟] 方塊中,輸入 svrnetcn.exe,然後按一下 [確定]
    [SQL Server 網路公用程式] 對話方塊隨即出現。
  2. [SQL Server 網路公用程式] 對話方塊中,按一下 [一般] 索引標籤。
  3. [伺服器上的執行個體] 清單中,選取您的 SQL Server 執行個體。

    注意 如果 TCP/IP 通訊協定已停用,請立即啟用。如果要執行這項操作,請按一下 [停用的通訊協定] 清單方塊中的 [TCP/IP],然後按一下 [啟用]
  4. [啟用的通訊協定] 清單方塊中,按一下 [TCP/IP],然後按一下 [屬性]
  5. [預設通訊埠] 方塊中,輸入 0,然後按一下 [確定]
  6. 按一下 [確定],再按一下 [確定]
  7. 重新啟動 SQL Server 執行個體。
  8. 檢視 SQL Server 錯誤記錄檔,確認 SQL Server 執行個體目前是否使用動態通訊埠。

    注意 如果您具有 SQL Server 叢集執行個體,並且您在叢集節點上執行指定的步驟,則可能會發現其他節點上的 TCPDynamicPorts 登錄值和 TCPPort 登錄值仍然保留舊值。當您將 SQL Server 群組移至相對應的叢集節點,然後讓 SQL Server 在叢集節點上線時,叢集節點上的登錄值將會反映正確的值。

設定 SQL Server 在多個靜態的 TCP 連接埠上接聽

每個伺服器端網路程式庫的 SQL Server 設定個別的 「 聆聽 」 執行緒。如果伺服器變得太與連線要求,用戶端連線會重設,並強制重新建立新的工作階段。若要增加的 SQL Server 伺服器同時處理多個連線要求效能,可加入額外的 TCP 連接埠上接聽。 若要加入額外的 TCP 連接埠,請依照下列步驟執行:

  1. 啟動 [SQL Server 2000 中的 [SQL Server 網路公用程式]。選取 [TCP,並按一下 [內容],然後輸入額外的連接埠以逗號; 分隔,例如: 1433,5000。
  2. 停止並再重新啟動 SQL Server] 伺服器,並檢閱錯誤記錄檔。您的錯誤記錄檔應該如下所示:
    SQL server listening on TCP, Shared Memory, Named Pipes.<BR/>
    SQL server listening on 157.54.178.42:1433, 157.54.178.42:5000, 127.0.0.1:1433, 127.0.0.1:5000.
  3. 使用來修改您的用戶端散佈負載 accross TCP 連接埠的 [SQL Server 用戶端網路公用程式]。比方說兩個的 Web 伺服器這兩個連接到同一個 SQL Server 連接埠 1433 上, 現在可以分割負載跨 1433年和 5000。這可讓系統管理員分隔跨多個連接埠的流量,並且增加連線的輸送量。

附註若要在 SQL Server 2005 中執行相同的作業,使用 SQL Server 組態管理員工具。

arrow
arrow
    全站熱搜

    賊 發表在 痞客邦 留言(0) 人氣()