如果 SQL Server 2000 或 SQL Server 7.0 是在 SQL Server 2005 之後安裝的,那麼當您嘗試連接至 SQL Server 2000 或 SQL Server 7.0 的執行個體時,可能會收到連接錯誤訊息

文章翻譯 文章翻譯
文章編號: 905618 - 檢視此文章適用的產品。
Beta 版資訊
本文將告訴您 Beta 版的 Microsoft 產品。本文中的資訊係依「現況」提供,如有變更恕不另行通知。

Microsoft 不提供本 Beta 版產品的一般產品支援。如需有關如何取得 Beta 版本支援的詳細資訊,請參閱隨附於 Beta 版產品檔案中的說明文件,或是造訪下載此版本產品的網站。
重要 本文包含有關修改登錄的相關資訊。修改登錄之前,請務必將它備份起來,並瞭解如何在發生問題時還原登錄。如需有關如何備份、還原和修改登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
256986 Microsoft Windows 登錄說明
全部展開 | 全部摺疊

在此頁中

徵狀

如果下列條件皆成立,就可能收到連接錯誤訊息:
  • 安裝 SQL Server 2005 之後,才安裝 Microsoft SQL Server 2000 或 SQL Server 7.0。
  • 嘗試連接至由 SQL Server 2000 或 SQL Server 7.0 所建立的執行個體。
如果連接字串沒有包含特定的通訊協定資訊,即使 SQL Server Browser 服務仍在執行中,仍會發生這個問題。

在這種情況下,特定的通訊協定資訊則視伺服器傳回的資訊而定。例如,當您使用 Sqlcmd 公用程式 (Sqlcmd.exe) 連接至執行個體時,可能會收到下面的錯誤訊息:
SQL Network Interfaces:Error Locating Server/Instance Specified [xFFFFFFFF]. (SQL 網路介面:尋找指定的伺服器/執行個體 [xFFFFFFFF] 時發生錯誤)
Sqlcmd:Error:Microsoft SQL Native Client :Client unable to establish connection. (Sqlcmd:錯誤:Microsoft SQL Native Client:用戶端無法建立連接)
Sqlcmd:Error:Microsoft SQL Native Client :Login timeout expired. (Sqlcmd:錯誤:Microsoft SQL Native Client:登入逾時過期)

發生的原因

當您嘗試連接至 SQL Server 2000 或 SQL Server 7.0 的執行個體時,SQL Server Browser 服務 (Sqlbrowser) 將會試著從 Microsoft Windows 登錄取得所需的通訊協定資訊,以轉送給用戶端。因此,SQL Server Browser 服務必須具有足夠的權限,才能為執行個體讀取適當的 Windows 登錄。

當您設定 SQL Server 2005 時,會修改所有現有執行個體的登錄機碼,以便讓 SQL Server Browser 服務能夠讀取所需的通訊協定資訊。然而,如果您在設定 SQL Server 2005 之後,才安裝 SQL Server 2000 或 SQL Server 7.0 的執行個體,便無法設定正確的登錄權限。權限只有在安裝 SQL Server Browser 服務時才能修改。特別是,如果 SQL Server Browser 服務的啟動帳戶不是系統管理員帳戶,這個帳戶可能就沒有所需的存取權限,可用來讀取執行個體的相關機碼。

注意 在 SQL Server 2000 中,SQL Server 服務會辨識伺服器連接端點。SQL Server 2005 會以 SQL Server Browser 服務來取代該功能。如果您在執行 SQL Server 2000 的電腦上安裝 SQL Server 2005,就必須在該電腦上安裝 SQL Server 2000 Service Pack 3 (SP3)、SQL Server 2000 SP3a 或 SQL Server 2000 SP4。

其他可行方案

警告 如果您使用「登錄編輯程式」或其他方法不當地修改登錄,可能會發生嚴重問題。這些問題可能會需要您重新安裝作業系統才能解決。Microsoft 不保證可以解決這些問題。請自行承擔修改登錄的一切風險。

您可以使用下列其中一種方法來解決這個問題:

修改登錄,將讀取權限授與特定機碼

針對在 SQL Server 2005 之後安裝的 SQL Server 2000 的各執行個體,執行下列步驟:
  1. 按一下 [開始],再按一下 [執行],輸入 regedit,然後按一下 [確定]
  2. 找出下列登錄子機碼:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\InstanceName
    在這個子機碼中,InstanceName 是 SQL Server 2000 的執行個體名稱。

    注意 如果您將 SQL Server 2000 安裝為預設的執行個體,登錄子機碼則為:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer
  3. 按一下 [編輯] 功能表的 [使用權限]
  4. 按一下 [新增],輸入 SQLServer2005SQLBrowserUser 或輸入 SQLServer2005SQLBrowserUser$ComputerName,然後按一下 [確定]

    注意 帳戶群組名稱 SQLServer2005SQLBrowserUser 在您的電腦上可能是 SQLServer2005SQLBrowserUser$ComputerName。您可以在 [電腦管理][本機使用者和群組] 中找到這個群組名稱。在這個步驟中,SQLServer2005SQLBrowserUser$ComputerName 中的 ComputerName 是您的電腦名稱。
  5. 按一下以選取這個使用者帳戶的使用權限清單中的 [讀取] 核取方塊,然後按一下 [確定]
  6. 結束 [登錄編輯程式],然後重新啟動 SQL Server Browser 服務。
注意 子機碼應會繼承權限。如果沒有繼承權限,則必須針對下列機碼,明確地將讀取權限授與 SQLServer2005SQLBrowserUserSQLServer2005SQLBrowserUser$ComputerName (如果有):
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\CurrentVersion
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\SuperSocketNetLib
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\Cluster
注意 在這個子機碼中,InstanceName 是 SQL Server 2000 的執行個體名稱。

如果沒有繼承
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\SuperSocketNetLib
登錄子機碼,您就必須手動修改這個登錄子機碼的基礎機碼。

注意 SQL Server 7.0 沒有具名執行個體。因此,相關的登錄機碼應會從
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer
登錄子機碼繼承適當的權限。然而,如果沒有繼承權限,您就必須手動設定權限。

在連接字串中明確地指定連接資訊

當您從用戶端連接至 SQL Server 2000 或 SQL Server 7.0 的執行個體時,您可以在連接字串中明確地指定連接資訊。指定此資訊可讓連接資訊不受伺服器傳回的資訊影響。例如,當您使用 Sqlcmd 公用程式時,可以使用類似下面的命令來與執行個體進行連接。
sqlcmd –S tcp:yourhost,1500

狀況說明

Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。

屬性

文章編號: 905618 - 上次校閱: 2006年1月12日 - 版次: 2.1
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2005 Standard Edition Community Technology Preview
  • Microsoft SQL Server 2005 Developer Edition Community Technology Preview
  • Microsoft SQL Server 2005 Enterprise Edition Community Technology Preview
  • Microsoft SQL Server 2005 Express Edition Community Technology Preview
關鍵字:?
kbprb KB905618
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com