先設定防火牆規則再執行 TSQL 偵錯工具

適用于:SQL Server (所有支援的版本)

當連接到與 Database Engine 查詢編輯器 不同的電腦上執行的 Database Engine 實例時,必須設定 Windows 防火牆規則,才能啟用 Transact-SQL 偵錯。

這項功能適用於 SSMS 17.9.1 版及更早版本。

設定 Transact-SQL 偵錯工具

Transact-SQL 偵錯工具同時包含伺服器端和用戶端元件。 伺服器端偵錯工具元件會隨 2005 SQL Server 2005 (9.x) Service Pack 2 (SP2) 或更新版本的每個 Database Engine 實例一起安裝。 包括用戶端偵錯工具元件的情況:

  • 當您從 SQL Server 2008 或更新版本安裝用戶端工具時。

  • 當您安裝 Microsoft Visual Studio 2010 或更新版本時。

  • 當您從網頁下載安裝 SQL Server Data Tools (SSDT) 時。

當SQL Server Management Studio或SQL Server Data Tools與 SQL Server Database Engine 實例相同的電腦上執行時,不需要執行 Transact-SQL 偵錯工具。 不過,若要在連線到 Database Engine 的遠端實例時執行 Transact-SQL 偵錯工具,必須在這兩部電腦上啟用 Windows 防火牆中的程式和連接埠規則。 這些規則可由設定SQL Server建立。 如果您嘗試開啟遠端偵錯工作階段時發生錯誤,請確定您的電腦上已定義下列防火牆規則。

使用 [具有進階安全性的 Windows 防火牆] 應用程式來管理防火牆規則。 在 Windows 7 和 Windows Server 2008 R2 中,開啟[主控台]、開啟[Windows 防火牆],然後選取 [進階設定]。 在 Windows Server 2008 R2 中,您也可以開啟Service Manager、展開左窗格中的 [設定],然後展開[具有進階安全性的 Windows 防火牆]。

警告

在 [Windows 防火牆] 中啟用規則可能會讓您的電腦暴露在防火牆設計可封鎖的安全性威脅下。 啟用遠端偵錯規則會解除封鎖本主題中列出的通訊埠和程式。

伺服器上的防火牆規則

在執行 Database Engine 實例的電腦上,使用 具有進階安全性的 Windows 防火牆 來指定下列資訊:

  • 加入 sqlservr.exe 的輸入程式規則。 每一個需要支援遠端偵錯工作階段的執行個體都必須有一項規則。

    1. 在 [具有進階安全性的 Windows 防火牆] 的左窗格中,以滑鼠右鍵按一下 [輸入規則],再從動作窗格選取 [新增規則]

    2. 在 [規則類型] 對話方塊中,選取 [程式],然後按一下 [下一步]

    3. 在 [程式] 對話方塊中,選取 [這個程式路徑],然後輸入此執行個體的 sqlservr.exe 完整路徑。 根據預設,sqlservr.exe 安裝在 C:\Program Files\Microsoft SQL Server\MSSQL13.InstanceName\MSSQL\Binn 中,其中 InstanceName 是 MSSQLSERVER (若為預設執行個體),而且它是任何具名執行個體的執行個體名稱。

    4. 在 [動作] 對話方塊中,選取 [允許連線],然後按一下 [下一步]

    5. 在 [設定檔] 對話方塊中,選取描述您想要開啟執行個體之偵錯工作階段時電腦連線環境的任何設定檔,然後按一下 [下一步]

    6. 在 [名稱] 對話方塊中,輸入此規則的名稱和描述,然後按一下 [完成]

    7. 在 [輸入規則] 清單中,以滑鼠右鍵按一下您建立的規則,然後選取動作窗格中的 [屬性]

    8. 選取 [通訊協定及連接埠] 索引標籤。

    9. 在 [通訊協定類型:] 方塊中選取 [TCP],在 [本機通訊埠:] 方塊中選取 [RPC 動態通訊埠],按一下 [套用],再按一下 [確定]

  • 加入 svchost.exe 的輸入程式規則可啟用來自遠端偵錯工具工作階段的 DCOM 通訊。

    1. 在 [具有進階安全性的 Windows 防火牆] 的左窗格中,以滑鼠右鍵按一下 [輸入規則],再從動作窗格選取 [新增規則]

    2. 在 [規則類型] 對話方塊中,選取 [程式],然後按一下 [下一步]

    3. 在 [程式] 對話方塊中,選取 [這個程式路徑:],然後輸入 svchost.exe 的完整路徑。 根據預設,svchost.exe 安裝於 %systemroot%\System32\svchost.exe。

    4. 在 [動作] 對話方塊中,選取 [允許連線],然後按一下 [下一步]

    5. 在 [設定檔] 對話方塊中,選取描述您想要開啟執行個體之偵錯工作階段時電腦連線環境的任何設定檔,然後按一下 [下一步]

    6. 在 [名稱] 對話方塊中,輸入此規則的名稱和描述,然後按一下 [完成]

    7. 在 [輸入規則] 清單中,以滑鼠右鍵按一下您建立的規則,然後選取動作窗格中的 [屬性]

    8. 選取 [通訊協定及連接埠] 索引標籤。

    9. 在 [通訊協定類型:] 方塊中選取 [TCP],在 [本機通訊埠:] 方塊中選取 [RPC 端點對應程式],按一下 [套用],再按一下 [確定]

  • 如果網域原則要求透過 IPsec 完成網路通訊,您也必須加入開啟 UDP 通訊埠 4500 和 UDP 通訊埠 500 的輸入規則。

用戶端上的防火牆規則

在執行 Database Engine 查詢編輯器的電腦上,SQL Server安裝程式或SQL Server Data Tools安裝程式可能已設定 Windows 防火牆以允許遠端偵錯。

如果您嘗試開啟遠端偵錯工作階段時發生錯誤,可以使用 [具有進階安全性的 Windows 防火牆] 設定防火牆規則,手動設定程式和通訊埠例外狀況:

  • 加入 svchost 的程式項目:

    1. 在 [具有進階安全性的 Windows 防火牆] 的左窗格中,以滑鼠右鍵按一下 [輸入規則],再從動作窗格選取 [新增規則]

    2. 在 [規則類型] 對話方塊中,選取 [程式],然後按一下 [下一步]

    3. 在 [程式] 對話方塊中,選取 [這個程式路徑:],然後輸入 svchost.exe 的完整路徑。 根據預設,svchost.exe 安裝於 %systemroot%\System32\svchost.exe。

    4. 在 [動作] 對話方塊中,選取 [允許連線],然後按一下 [下一步]

    5. 在 [設定檔] 對話方塊中,選取描述您想要開啟執行個體之偵錯工作階段時電腦連線環境的任何設定檔,然後按一下 [下一步]

    6. 在 [名稱] 對話方塊中,輸入此規則的名稱和描述,然後按一下 [完成]

    7. 在 [輸入規則] 清單中,以滑鼠右鍵按一下您建立的規則,然後選取動作窗格中的 [屬性]

    8. 選取 [通訊協定及連接埠] 索引標籤。

    9. 在 [通訊協定類型:] 方塊中選取 [TCP],在 [本機通訊埠:] 方塊中選取 [RPC 端點對應程式],按一下 [套用],再按一下 [確定]

  • 為裝載 Database Engine 查詢編輯器的應用程式新增程式專案。 如果您需要在相同電腦上開啟SQL Server Management Studio和SQL Server Data Tools的遠端偵錯會話,您必須為兩者新增程式規則:

    1. 在 [具有進階安全性的 Windows 防火牆] 的左窗格中,以滑鼠右鍵按一下 [輸入規則],再從動作窗格選取 [新增規則]

    2. 在 [規則類型] 對話方塊中,選取 [程式],然後按一下 [下一步]

    3. 在 [程式] 對話方塊中,選取 [這個程式路徑:],然後輸入下列三個值的其中一個。

      • 針對 [SQL Server Management Studio],輸入ssms.exe的完整路徑。 根據預設,ssms.exe 安裝於 C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\Management Studio。

      • 針對SQL Server Data Tools輸入devenv.exe的完整路徑:

        1. 根據預設,Visual Studio 2010 的 devenv.exe 位於 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE。

        2. 根據預設,Visual Studio 2012 的 devenv.exe 位於 C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE

        3. 您可以從用來啟動SQL Server Management Studio的快捷方式找到ssms.exe的路徑。 您可以從用來啟動SQL Server Data Tools的快捷方式找到devenv.exe的路徑。 以滑鼠右鍵按一下捷徑,然後選取 [屬性]。 可執行檔和路徑會在 [目標] 方塊中列出。

    4. 在 [動作] 對話方塊中,選取 [允許連線],然後按一下 [下一步]

    5. 在 [設定檔] 對話方塊中,選取描述您想要開啟執行個體之偵錯工作階段時電腦連線環境的任何設定檔,然後按一下 [下一步]

    6. 在 [名稱] 對話方塊中,輸入此規則的名稱和描述,然後按一下 [完成]

    7. 在 [輸入規則] 清單中,以滑鼠右鍵按一下您建立的規則,然後選取動作窗格中的 [屬性]

    8. 選取 [通訊協定及連接埠] 索引標籤。

    9. 在 [通訊協定類型:] 方塊中選取 [TCP],在 [本機通訊埠:] 方塊中選取 [RPC 動態通訊埠],按一下 [套用],再按一下 [確定]

啟動偵錯工具的需求

所有嘗試啟動 Transact-SQL 偵錯工具也必須符合下列需求:

  • SQL Server Management Studio或SQL Server Data Tools必須在系統管理員固定伺服器復原成員的 Windows 帳戶下執行。

  • Database Engine 查詢編輯器視窗必須使用 Windows 驗證或SQL Server驗證登入,這是系統管理員固定伺服器角色的成員。

  • Database Engine 查詢編輯器視窗必須從 SQL Server 2005 (9.x) Service Pack 2 (SP2) 或更新版本連接到 Database Engine 的實例。 當 [查詢編輯器] 視窗連接至處於單一使用者模式下的執行個體時,您就無法執行偵錯工具。

  • 伺服器必須透過 RPC 回應用戶端。 正在執行 SQL Server 服務之帳戶必須具備用戶端的已驗證權限

另請參閱