先設定防火牆規則再執行 Transact-SQL 偵錯工具
適用於:SQL Server
當連線的資料庫引擎執行個體與資料庫引擎查詢編輯器在不同電腦上執行時,就必須設定 Windows 防火牆規則才能啟用 Transact-SQL 偵錯。
設定 Transact-SQL 偵錯工具
Transact-SQL 偵錯工具同時包含伺服器端和用戶端元件。 伺服器端的偵錯工具元件會隨著 SQL Server 資料庫引擎中的每個執行個體一起安裝。 包括用戶端偵錯工具元件的情況:
當您安裝 Microsoft Visual Studio 2019 或更新版本時
當您從網頁下載安裝 SQL Server Data Tools (SSDT) 時
當 SQL Server Data Tools 在 SQL Server Database Engine 執行個體所在的相同電腦上執行時,不需要設定即可執行 Transact-SQL 偵錯工具。 不過,當連線至遠端資料庫引擎執行個體時,如需執行 Transact-SQL 偵錯工具,就必須在這兩部電腦上啟用 Windows 防火牆中的程式和連接埠規則。 如果您嘗試開啟遠端偵錯工作階段時發生錯誤,請確定您的電腦上已定義下列防火牆規則。
使用 [具有進階安全性的 Windows 防火牆] 應用程式來管理防火牆規則。 在 Windows 7 和 Windows Server 2008 R2 中,依序開啟 [控制台] 和 [Windows 防火牆],然後選取 [進階設定]。 在 Windows Server 2008 R2 中,您也可以開啟 [服務管理員],然後展開左窗格中的 [組態],再展開 [具有進階安全性的 Windows 防火牆]。
警告
在 [Windows 防火牆] 中啟用規則可能會讓您的電腦暴露在防火牆設計可封鎖的安全性威脅下。 啟用遠端偵錯規則會解除封鎖本主題中列出的通訊埠和程式。
伺服器上的防火牆規則
在執行資料庫引擎執行個體的電腦上,使用 [具有進階安全性的 Windows 防火牆] 指定下列資訊:
加入
sqlservr.exe
的輸入程式規則。 每一個需要支援遠端偵錯工作階段的執行個體都必須有一項規則。在 [具有進階安全性的 Windows 防火牆] 的左窗格中,以滑鼠右鍵按一下 [輸入規則],再從動作窗格選取 [新增規則]。
在 [規則類型] 對話方塊中,選取 [程式],然後選取 [下一步]。
在 [程式] 對話方塊中,選取 [這個程式路徑],然後輸入此執行個體的
sqlservr.exe
完整路徑。 根據預設,sqlservr.exe
會安裝在 中C:\Program Files\Microsoft SQL Server\MSSQL16.<InstanceName>\MSSQL\Binn
,其中<InstanceName>
是用於默認執行個體的MSSQLSERVER
,以及任何具名執行個體的執行個體名稱。在 [動作] 對話方塊中,選取 [允許連線],然後選取 [下一步]。
在 [設定檔] 對話方塊中,選取描述您想要開啟執行個體之偵錯工作階段時電腦連線環境的任何設定檔,然後選取 [下一步]。
在 [名稱] 對話方塊中,輸入此規則的名稱和描述,然後選取 [完成]。
在 [輸入規則] 清單中,以滑鼠右鍵按一下您建立的規則,然後選取動作窗格中的 [屬性]。
選取 [通訊協定及連接埠] 索引標籤。
在 [通訊協定類型:] 方塊中選取 [TCP],在 [本機通訊埠:] 方塊中選取 [RPC 動態通訊埠],選擇 [套用],再選取 [確定]。
加入
svchost.exe
的輸入程式規則可啟用來自遠端偵錯工具工作階段的分散式元件物件模型 (DCOM) 通訊。在 [具有進階安全性的 Windows 防火牆] 的左窗格中,以滑鼠右鍵按一下 [輸入規則],再從動作窗格選取 [新增規則]。
在 [規則類型] 對話方塊中,選取 [程式],然後選取 [下一步]。
在 [程式] 對話方塊中,選取 [這個程式路徑:],然後輸入
svchost.exe
的完整路徑。 根據預設,svchost.exe
會安裝在%systemroot%\System32\svchost.exe
中。在 [動作] 對話方塊中,選取 [允許連線],然後選取 [下一步]。
在 [設定檔] 對話方塊中,選取描述您想要開啟執行個體之偵錯工作階段時電腦連線環境的任何設定檔,然後選取 [下一步]。
在 [名稱] 對話方塊中,輸入此規則的名稱和描述,然後選取 [完成]。
在 [輸入規則] 清單中,以滑鼠右鍵按一下您建立的規則,然後選取動作窗格中的 [屬性]。
選取 [通訊協定及連接埠] 索引標籤。
在 [通訊協定類型:] 方塊中選取 [TCP],在 [本機通訊埠:] 方塊中選取 [RPC 端點對應程式],選擇 [套用],再選取 [確定]。
如果網域原則要求透過 IPsec 完成網路通訊,您也必須加入開啟 UDP 通訊埠 4500 和 UDP 通訊埠 500 的輸入規則。
用戶端上的防火牆規則
在執行資料庫引擎查詢編輯器的電腦上,將 Windows 防火牆設定為允許遠端偵錯。
如果您嘗試開啟遠端偵錯工作階段時發生錯誤,可以使用 [具有進階安全性的 Windows 防火牆] 設定防火牆規則,手動設定程式和通訊埠例外狀況:
加入 svchost 的程式項目:
在 [具有進階安全性的 Windows 防火牆] 的左窗格中,以滑鼠右鍵按一下 [輸入規則],再從動作窗格選取 [新增規則]。
在 [規則類型] 對話方塊中,選取 [程式],然後選取 [下一步]。
在 [程式] 對話方塊中,選取 [這個程式路徑:],然後輸入
svchost.exe
的完整路徑。 根據預設,svchost.exe
會安裝在%systemroot%\System32\svchost.exe
中。在 [動作] 對話方塊中,選取 [允許連線],然後選取 [下一步]。
在 [設定檔] 對話方塊中,選取描述您想要開啟執行個體之偵錯工作階段時電腦連線環境的任何設定檔,然後選取 [下一步]。
在 [名稱] 對話方塊中,輸入此規則的名稱和描述,然後選取 [完成]。
在 [輸入規則] 清單中,以滑鼠右鍵按一下您建立的規則,然後選取動作窗格中的 [屬性]。
選取 [通訊協定及連接埠] 索引標籤。
在 [通訊協定類型:] 方塊中選取 [TCP],在 [本機通訊埠:] 方塊中選取 [RPC 端點對應程式],選擇 [套用],再選取 [確定]。
針對託管 SQL Server Data Tools 資料庫引擎查詢編輯器的應用程式新增程式項目。 如果您需要在同一部電腦上從多個安裝的 SQL Server Data Tools 開啟遠端偵錯工作階段,則必須針對兩者新增程式規則:
在 [具有進階安全性的 Windows 防火牆] 的左窗格中,以滑鼠右鍵按一下 [輸入規則],再從動作窗格選取 [新增規則]。
在 [規則類型] 對話方塊中,選取 [程式],然後選取 [下一步]。
在 [程式] 對話方塊中,選取 [這個程式路徑:],然後輸入下列三個值的其中一個。
針對 SQL Server Data Tools,輸入
devenv.exe
的完整路徑:根據預設,適用於 Visual Studio 2022 的
devenv.exe
在C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE
中。根據預設,適用於 Visual Studio 2019 的
devenv.exe
在C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE
中。您可以從用來啟動 SQL Server Data Tools 的捷徑中找到
devenv.exe
的路徑。 以滑鼠右鍵按一下捷徑,然後選取 [屬性]。 可執行檔和路徑會在 [目標] 方塊中列出。
在 [動作] 對話方塊中,選取 [允許連線],然後選取 [下一步]。
在 [設定檔] 對話方塊中,選取描述您想要開啟執行個體之偵錯工作階段時電腦連線環境的任何設定檔,然後選取 [下一步]。
在 [名稱] 對話方塊中,輸入此規則的名稱和描述,然後選取 [完成]。
在 [輸入規則] 清單中,以滑鼠右鍵按一下您建立的規則,然後選取動作窗格中的 [屬性]。
選取 [通訊協定及連接埠] 索引標籤。
在 [通訊協定類型:] 方塊中選取 [TCP],在 [本機通訊埠:] 方塊中選取 [RPC 動態通訊埠],選擇 [套用],再選取 [確定]。
啟動偵錯工具的需求
所有對 Transact-SQL 偵錯工具的啟動嘗試也必須符合下列需求:
SQL Server Data Tools 必須在屬於系統管理員固定伺服器角色成員的 Windows 帳戶底下執行。
您必須使用屬於系統管理員 (sysadmin) 固定伺服器角色成員的 Windows 驗證或資料庫引擎驗證登入來連接資料庫引擎查詢編輯器視窗。
資料庫引擎查詢編輯器視窗必須連接至 SQL Server 資料庫引擎的執行個體。 當 [查詢編輯器] 視窗連接至處於單一使用者模式下的執行個體時,您無法執行偵錯工具。
伺服器必須透過 RPC 回應用戶端。 正在執行 SQL Server 服務之帳戶必須具備用戶端的已驗證權限。