SQL Server 2008支持四種協議,Shared Memory;TCP/IP;Named Pipes和Virtual Interface Adapter(VIA)。代開SQL Server配置管理器之後,會顯示一個配置SQL Server服務,SQL Server網络協議和SQL Native Client協議的節點。可以通過展開SQL Server 2008網络配置節點進行服務器協議的配置。

  Shared Memory:Shared Meory協議只能由本地連接使用,因为它是一個用於服務器內部通信的由進程共享內存的空間。在SQL Server上本地運行的應用程序或任務可以利用Shared Memroy協議

  Named Pipes:Named Pipes協議使用進程間通信信信道進行高效的服務器內部通信和局域網通信,但由於通過網络或防火牆連接時Named Pipes需要過多的開銷,而且它還要求打開額外的端口445,所以一般來說最好禁用Named Pipes。然而有許多應用程序需要用到Named Pipes協議,因为他們是圍繞NetbBIOS或给予LAN的協議設計的。Named Pipes可以輕松訪問單個安全域中的遠程過程調用,因而對這些應用程序很有幫助。如果您需要支持這些應用程序,而SQL Server並沒有暴露给外部通信量,那麼启用Named Pipes協議和相應的端點的風險是最小的。

  TCP/IP:TCP/IP是大部分SQL安裝時的主要也是首選的協議。

  Virtual Interface Adapter:該協議與支持的硬件和網络配置一起使用。虛擬接口體系由Compaq,也就是現在的惠普,Intel和Microsoft聯合開發,被設計成一個可減少創痛網络協議的開兩開銷的高性能協議,該協議在用戶模式上下文而非內核模式上下文下運行。VIA網络客戶機與系統區域網络連接。

SQL Native Client配置

  SQL Native Client支持同样的四種服務器端協議,除了配置客戶端協議之外,還可以設置協議的绑定順序。可以使用SQL Native Client配置節點創建別名。通過制定一個別名,不用改變服務器名稱就可以把客戶端的請求定向到該服務器。別名也可以用來取代复雜的命名實例名稱。

SQL Server端點

  SQL Server 2008將連接對象作为端點,允許偵聽不同的端口,为不同的服務使用不同的傳輸協議。SQL Server提供了四種不同類型的端點:TSQL(默認和TCP);數據庫鏡像;SOAP;Service Broker。

  默認TSQL端點:在安裝過程中會創建5個TSQL端點:TSQL默認TCP,TSQL默認VIA,TSQL Named Pipes,TSQL本地計算機,Dedicated Administrator Connection(DAC,專用管理員連接)。TSQL端點为四個支持的協議提供鏈接服務,第五個用來支持DAC的端點偵聽一個專用TCP端口,該端口在启動時被配置为支持一個管理連接。配置的端口記錄在當前SQL Server日志文件中。

  TSQL默認TCP端點創建於SQL Server實例的安裝過程中,並被自動配置为替默認實例偵聽端口1433.每次启動命名實例時,命名實例TSQL默認TCP端點都會被隨機分配一個TCP端口。不過,可以通過SQL Server配置管理器靜態配置命名實例的端口號。配置一個靜態端口能夠簡化客戶端訪問,減少對於美剧命名實例的SQL Server瀏覽器服務的依賴。

  VIA協議用於支持VIA硬件設備,VIA協議取决於供應商的實現方案,所以如果不選擇特定的硬件供應商,討論VIA端點還是比較困難的

  TSQL Named Pipes端點用於支持Named Pipes協議連接。

  TSQL本地計算機端點允許使用Shared Memory協議進行連接。

  專用管理員連接DAC:在其他連接不可用或無響應時,可以使用DAC端點來支持有限的管理操作。它使用自己的內存區,專用TCP端口和CPU調度程序。默認情況下,DAC端點僅僅偵聽本地連接,通過執行下列代碼,可以启用遠程DAC連接:

USE master
GO
sp_configure 'remote admin connections',1;
GO
RECONFIGURE;
GO

  TSQL TCP端點:除了自動創建的默認TCP端口之外,還可以創建額外的TSQL TCP端點。這些TSQL TCP端點可以支持特殊的安全或應用需求。然而,需要記住,當創建一個新的TSQL TCP斷電時,SQL Server會自動撤銷對默認端點的所有連接權限。如果默認端點仍然需要連接支持。那麼要想使用默認端點,必須要有顯示的GRANT CONNECT權限。SQL Server總返回一個消息,提示創建一個新的TCP端點的影響,如:

USE master;
GO
CREATE ENDPOINT DagobahEP
STATE=STARTED
AS TCP (LISTENER_PORT=50102,LISTENER_IP=ALL)
FOR TSQL();
GO

USE master;
GO
CREATE ENDPOINT DagobahEP
STATE=STARTED
AS TCP (LISTENER_PORT=50102,LISTENER_IP=(192.168.1.101))
FOR TSQL();
GO

  數據庫鏡像:为了專用参與數據庫鏡像配置的服務器,SQL Server 2008提供了鏡像端點。所有鏡像通信使用這一數據庫鏡像端點,但使用鏡像配置的數據庫客戶端連接使用的是標准的TDS端點。專用鏡像端點的配置確保數據庫鏡像通信是在一個單獨的進程中處理的,獨立於所有其他數據庫活動。如果想手動創建和配置鏡像端點,並在端點上實施加密通信,可以使用如下代碼:

CREATE ENDPOINT AughtEightDagobahMirror
AUTHORIZATION sa STATE=STARTED
AS TCP (LISTENER_PORT=5022,LISTENER_IP=ALL)
FOR DATA_MIRRORING (ROLE=PARTNER,AUTHENTICATION=WINDOWS NEGOTIATE,ENCRYPTION=REQUIRED ALGORITHM RC4)

  如果服務器上的每個MSSQLSERVER服務使用不同的帳戶,那麼需要向映射到每個服務器的服務帳戶的登錄名授予連接其他参與鏡像配置的服務器的CONNECT權限。可以運行下面的腳本,確保在3個参與鏡像關系的服務器之間的事實加密的和需要身份驗證的通信。AughtEight是主體服務器,Dagobah是鏡像服務器,Tatooine是見證服務器。在這個例子中,所有的三個實例都運行在相同的物理服務器上,所以每個端點會被配置不同的端口號。如果是單獨的物理服務器,那麼端口號可配置为一样的。

--Run on AughtEight
USE Master
GO
CREATE ENDPOINT AughtEightDagobahPrincipal AS TCP (LISTENER_PORT=5022) FOR DATA_MIRRORING (ROLE=PARTNER, ENCRYPTION=REQUIRED ALGORITHM RC4);
GO
CREATE LOGIN [AughtEight\DagobahSQL] FROM WINDOWS;
CREATE LOGIN [AughtEight\TatooineSQL] FROM WINDOWS;
GO
GRANT CONNECT ON ENDPOINT::AughtEightDagobahPrincipal TO [AughtEight\TatooineSQL];
GRANT CONNECT ON ENDPOINT::AughtEightDagobahPrincipal TO [AughtEight\DagobahSQL];

--Run on Dagobah
USE Master;
GO
CREATE ENDPOINT AughtEightDagobahMirror AS TCP (LISTENER_PORT=5023) FOR DATA_MIRRORING (ROLE=PARTNER, ENCRYPTION=REQUIRED ALGORITHM RC4);
GO
CREATE LOGIN [AughtEight\AughtEightSQL] FROM WINDOWS;
CREATE LOGIN [AughtEight\TatooineSQL] FROM WINDOWS;
GO
GRANT CONNECT ON ENDPOINT::AughtEightDagobahMirror TO [AughtEight\AughtEightSQL];
GRANT CONNECT ON ENDPOINT::AughtEightDagobahMirror TO [AughtEight\TatooineSQL];

--Run on Tottine
USE Master
GO
CREATE ENDPOINT AughtEightDagobahWitness AS TCP (LISTENER_PORT=5024) FRO DATA_MIRRORING (ROLE=WITNESS, ENCRYPTION=REQUIRED ALGORITHM RC4);
GO
CREATE LOGIN [AughtEight\AughtEightSQL] FROM WINDOWS
CREATE LOGIN [AughtEight\DagobahSQL] FROM WINDOWS;
GO
GRANT CONNECT ON ENDPOINT::AughtEightDagobahWitness TO [AughtEight\AughtEightSQL];
GRANT CONNECT ON ENDPOINT::AughtEightDagobahWitness TO [AughtEight\DagobahSQL];

  SOAP端點:未來版本中將被刪除,暫不解釋、

  Service Broker端點:Service Broker是SQL Server 2008中一個非常強大的功能,它可以是數據庫應用程序和面向服務的體系結構中的其他數據庫應用程序進行異步通信。只有當broker服務的兩個實例位於單獨的SQL Server實例上時才需要Service Broker端點。創建Service Broker端點的方式和創建愛你SOAP端點類型。同样使用基本的CREATE ENDPOINT命令,但是這裏使用的是FOR SERVICE_BROKER自居,而不是將端點定義为SOAP端點的FOR SOAP自居,創建Service Broker的語法如下:

CREATE ENDPOIN MyEndpoint
STATE=STARTED
AS TCP (LISTENER_PORT=50001)
FOR SERVICE_BROKER (AUTHENTICATION=WINDOWS);

保護端點

  對於所有的端點來說,保護他們非常重要,這样只有經過授權的連接才能枚舉和調用端點提供的Web方法和其他服務。對於端點來說,關鍵權限是CONNECT權限。只有已被顯示授予CONNECT權限的登錄名才能夠使用端點的功能。此外,這些登錄名還需要有通過端點訪問底層對象的權限。


From:CNBLOGS
arrow
arrow
    全站熱搜

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