SQL Server Browser探究

来源:http://www.cnblogs.com/leohahah/archive/2017/06/14/7007472.html
-Advertisement-
Play Games

一、官網關於SQL SERVER Browser服務的解釋(谷歌翻譯後稍作修改的): https://docs.microsoft.com/en-us/sql/tools/configuration-manager/sql-server-browser-service 背景: 在SQL Server ...


一、官網關於SQL SERVER Browser服務的解釋(谷歌翻譯後稍作修改的) https://docs.microsoft.com/en-us/sql/tools/configuration-manager/sql-server-browser-service 背景: 在SQL Server 2000之前,只能在電腦上安裝一個SQL Server實例。 SQL Server通過官方互聯網號碼分配機構(IANA)偵聽埠1433上的傳入請求,然後分配給SQL Server。只有一個實例可以使用這個埠,所以當SQL Server 2000引入了對多個SQL Server實例的支持時,開發了SQL Server解析協議(SSRP)來偵聽UDP埠1434。該監聽器服務響應客戶端對所有已安裝實例的帶實例名字的請求,返回實例們所使用的埠號和命名管道。為瞭解決SSRP系統的局限性,SQL Server 2005引入了SQL Server Browser服務作為SSRP的替代品。 SQL Server Browser的工作原理: 當SQL Server實例啟動時,如果TCP / IP協議啟用,則會為伺服器分配一個TCP/IP埠。如果命名管道協議啟用,SQL Server將偵聽特定的命名管道。該埠或“管道”被該特定實例用於與客戶端應用程式交換數據。在安裝過程中,TCP埠1433和pipe \sql\query分配給預設實例,但之後可以由伺服器管理員使用SQL Server Configuration Manager更改這些實例。因為只有一個SQL Server實例可以使用預設埠或管道,所以為命名實例(包括SQL Server Express)分配不同的埠號和管道名稱。 預設情況下,命名實例和SQL Server Express實例啟動時配置為使用動態埠,即SQL Server啟動時分配可用埠。如果需要,可以將特定埠分配給SQL Server實例。連接時,客戶端可以指定特定埠;但是如果埠是動態分配的,則在SQL Server重新啟動時,埠號可以隨時更改,因此客戶端不知道正確的埠號。 SQL Server Browser啟動時,配置使用UDP埠1434。SQL Server Browser讀取註冊表,標識電腦上的所有SQL Server實例,並記下使用的埠和命名管道。當伺服器有兩個或更多網卡時,SQL Server瀏覽器將返回第一個啟用的SQL Server埠。 SQL Server瀏覽器支持ipv6和ipv4。 當SQL Server客戶端請求SQL Server資源時,客戶端網路庫使用埠1434向伺服器發送UDP消息。SQL Server Browser會使用所請求實例的TCP / IP埠或命名管道進行響應。然後,客戶端應用程式上的網路庫通過使用所需實例的埠或命名管道向伺服器發送請求來完成連接。   二、個人實驗: 從官網的解釋來看,SQL Server Browser是為解決多實例情況下,非預設實例使用動態埠號的情況。因此實例重啟後,客戶端可能無法連接命名實例。因此需要開啟SQL Server Browser服務來使用UDP的1434埠監聽本伺服器所有命名實例,併為客戶端請求返回命名實例所使用的真實埠或命名管道。   1)實驗環境 SQL Server 2008R2版本,安裝了預設實例MSSQLSERVER和命名實例TEST,其中預設實例使用預設的1433埠,TEST使用預設的動態分配埠。 實驗過程中主要觀察: 1、是否可以使用sqlcmd聯通  2、netstat -ano的埠占用情況 2)實驗說明: 開啟SQL Server Browser服務等同於開啟UDP的1434埠。而且如果將預設實例的埠換為1434,Browser服務依然使用UDP1434埠,不會改變。 3)實驗步驟     1.只開啟兩個實例的服務,預設實例使用1433埠,TEST實例使用動態埠,用sqlcmd遠程嘗試連接兩個實例的的結果如下:     2.開啟SQL Server Browser服務之後: 此時如果關閉SQL Server Browser: sqlcmd -S 192.168.111.69\TEST -U sa -P Leo123 依然會成功,但是將動態埠號設置為0後重啟服務就會失敗,說明只要啟動過一次Browser服務且資料庫服務沒重啟過(這意味著動態埠號沒變過)就一直可以連通。     3.將預設實例的埠號改為動態埠: sqlcmd -S 192.168.111.69\MSSQLSERVER -U sa -P Leo123 無論Browser服務是否開啟,都無法連接。 說明此服務對預設實例無效。 4)實驗結論 SQL Server Browser只負責使用UDP的1434埠轉發使用動態埠的命名實例的信息給客戶端,預設實例必須使用固定埠,並告知客戶端。 因此如果伺服器上有多個實例,且命名實例使用動態埠,那麼一定要開啟Browser服務。 對使用固定埠1433連接伺服器的程式來說,如果是命名實例,那麼最好設置固定的埠號,並修改配置文件使用新的固定埠號連接。此時可以關閉Browser服務。 在集群環境中,應保證Browser服務在所有節點始終開啟。 最後,也希望大家不要迷信這個實驗結論,不保證能解釋所有問題,要自己動手驗證。   三、一些附加信息: 1.可以使用netstat -ano|findstr PID來查看SQL Server監聽的埠號,其中[: :]表示所有IP地址,[: : 1]表示127.0.0.1 2.如何修改SQL Server實例的預設埠號: 修改下圖的IPALL即可,動態埠設為空表示使用固定埠,設為0表示使用動態埠。

 


 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前不久 項目 終於成功發佈上線了,最近就在給項目做優化,併排除一些線上軟體的 bug,因為項目中使用了友盟統計,所以在友盟給出的錯誤信息統計中能比較方便的找出客戶端異常的信息,可是很多像數組越界卻只給出了 *** -[__NSArrayM objectAtIndex:]: index 50 beyo ...
  • //獲得當前時間並且轉為字元串 //獲取當前時間轉為時間戳 //13位時間戳1469193006001(毫秒)轉 系統時間2016-08-11 08:55:36 如果只獲取當前的年月日,用NSDate 直接截取是不對的,以下方法提供了獲取當前的年月日等等 ...
  • 一般在使用RecyclerView的時候不免要修改RecyclerView的數據,使用notifyDataSetChanged()來刷新界面,但是當數據比較多,而只是修改了一點的數據,或者刷新比較頻繁,這樣就會導致界面的卡頓問題,用戶交互特別不好。 這個時候就需要只是修改需要修改的數據,不要將數據全 ...
  • 首先看一個API:setMaskFilter(MaskFilter maskfilter): 設置MaskFilter,可以用不同的MaskFilter實現濾鏡的效果,如濾化,立體等。 以下有兩個MaskFilter的子類可供選擇: BlurMaskFilter:指定了一個模糊的樣式和半徑來處理Pa ...
  • 微信小程式中不能直接操作window對象,document文檔,跟html的樹結構不相同。 實現類似導航的隱藏顯示,如圖效果: 點擊網路顯示或隱藏網路中包含的內容。其他類似。 如果是jquery很方便實現,能直接操作document。在微信小程式中實現思路是:在邏輯層定義變數,通過setData賦值 ...
  • 1、創建通知,最好在viewDidLoad的方法中創建 2、發送通知 3、移除通知,由那個控制器創建由那個控制器移除,誰創建誰移除,最好在dealloc方法中移除,如果通知不能及時的移除掉,當下次進入該控制器時會重覆創建NSNotificationCenter,在對應方法中發送通知給上一次創建的通知 ...
  • 多線程是程式開發中非常基礎的一個概念,大家在開發過程中應該或多或少用過相關的東西。同時這恰恰又是一個比較棘手的概念,一切跟多線程掛鉤的東西都會變得複雜。如果使用過程中對多線程不夠熟悉,很可能會埋下一些難以預料的坑。 iOS中的多線程技術主要有NSThread, GCD和NSOperation。他們的 ...
  • 今天博客中,我們就來實現一下一些常用資訊類App中常用的分類選擇的控制項的封裝。本篇博客中沒有使用到什麼新的技術點,如果非得說用到了什麼新的技術點的話,那麼勉強的說,用到了一些iOS9以後UICollectionView添加的一些新的特性。本篇博客所涉及的技術點主要有UICollectionView的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...