連接應用程序
每個應用程序都需要識別其所要連接的以便從中檢索數據的數據庫服務器通過使用連接字符串可以實現應用程序和數據庫服務器的連接典型的連接字符串如下
Server=MyServerAddress;
Initial Catalog=MyDatabaseName;
Integrated Security=SSPI;
在這個例子當中數據庫服務器可以用機器名IP連接地址OBDC DSN名或DNS服務器別名等來進行識別只要是可以解析為IP地址的名稱就可以用名稱的解析可以用很多不同的方式進行
如果你的SQL Server機器在一個域裡可以創建一個DNS域名注冊到域裡當機器以DNS注冊那麼客戶端或應用程序就可以使用該機器的注冊名連接到該機器而且用DNS注冊你可以創建一個DNS別名這是一個代表了你的SQL Server機器的邏輯名在連接字符串中使用DNS別名的話當對數據庫服務器進行連接時DNS會將秘密地將該名稱解析為IP地址這樣的話你進行連接的時候只需要記住這個看起來有意義又比較容易記住的邏輯名而不需要記住那串難記的IP地址數字串或機器名了當你在連接字符串中使用DNS別名的時候你可以創建一個連接策略來隔離來自物理地址或數據庫服務器機器名的應用程序
采用DNS識別數據庫應用軟件位置
當使用DNS來識別數據庫應用軟件的位置時你可以在連接字符串中使用機器的域名但是這種方法不夠靈活想象一下當你想要改變SQL Server物理機器的名稱時會發生什麼事情這種情況下如果你使用機器名那麼你每改變一次機器名就得修改連接字符串以便引用新的機器名如果你只有一個應用程序連接到一個數據庫服務器情況可能還不會那麼糟但是如果你在一台機器上有很多的應用程序和很多數據庫那麼這將意味著一旦你重命名你的服務器你就需要修改很多連接字符串因此在連接字符串中使用機器名無法靈活應對環境的變化
更好的做法是使用DNS別名來解析數據庫所在位置當你不再用機器名來為所有的應用程序識別數據庫機器的地址時你就應當考慮創建一個有實際意思的與別不同的DNS別名這個別名可以解析為數據庫服務器的IP地址例如你可以用類似於SQLPRO這樣的DNS別名這個在DNS中定義的名字和實際的物理機器的IP地址是一樣的使用DNS別名可以賦予名字一定的含義這裡SQLPROD這個名字的意思是用於生產的 SQL Server 服務器這樣可以將上述的連接字符串改成
Server=SQLPROD;
Initial Catalog=MyDatabaseName;
Integrated Security=SSPI;
那麼在連接字符串中用DNS域名又有什麼好處呢?有一個描述性的名稱無疑是其中一個顯而易見的好處但並不是唯一的好處假設你的數據庫服務器包含了很多個不同的數據庫還要支持個不同的應用程序又假設你的SQL Server機器名為SSEDB而這台機器現在出現了某種未知的硬件錯誤此外你還有一個名為SSEDB的備份機器而你出於安全的考慮已經將SSEDB的備份傳送到了這台SSEDB中所以你可以從SSEDB快速恢復所有的數據庫來支持這個不同的應用程序另外假設你知道在SSEDB上恢復所有SSEDB的數據庫比解決SSEDB本身的硬件問題用時更少在以上的前提條件下如果你在應用程序的連接字符串中用的是機器名那麼你將不得不一個一個地修改所有的連接字符串將SSEDB的機器名改為SSEDB讓這個應用程序指向新的後備服務器SSEDB以便完成整個恢復過程修改多個連接字符串可能需要相當長一段時間而且很容易出錯這種情況下如果你在所有多個連接字符串中使用的連接名是SQLPROD這樣的邏輯名那麼你只需要進行一個修改就可以將所有的應用程序重新指向新的後備服務器SSEDB也就是對DNS的修改將SQLPROD改為指向SSEDB的IP地址而不是SSEDB的IP地址只要你修改了DNS那麼每一個應用程序就自動地連接到SSEDB而不再連接到SSEDB了也就不需要花時間修改那多個連接字符串中的任意一個在連接設計的時候只要做這麼一個小小的應用方面的修改用邏輯名來代表SQL Server服務器而不用物理服務器名或IP地址那麼在出現問題需要將所有應用程序重新指向新SQL Server服務器時工作量就會大大減少
用DNS進行容量管理
在連接字符串中使用DNS別名可以幫助你進行容量管理假設你的環境中又很多不同的SQL Server生產服務器每一台機器都要支持很多應用程序又假設某些應用的數據庫基本上呈線性增長但也有相當一部分應用數據庫沒有表現出一個可預見的增長速率這些數據庫的增長速度在不同的時段表現的很不一樣有時候一點都不增長有時候呈指數遞增或遞減由於有一部分這樣的增長率波動很大的數據庫導致有一些服務器幾乎沒有什麼可用空間甚至經常性出現可用空間用完的情況而同時另外有一部分服務器卻還有大量可用空間那麼怎樣利用DNS來幫助你管理這些磁盤空間解決容量問題呢?
當數據庫已經快擠滿服務器的硬盤空間時再向往數據庫服務器增加更多的磁盤空間並不一定總是一件輕松的事情可能需要花費幾個月的時間來獲取額外的硬件並為增加服務器的硬盤空間容量磁盤設計一個時間進度計劃因此如果你的磁盤空間容量有問題你就需要找到一個方法使你的數據庫具有即插即用的能力以便管理這種容量問題即插即用在這裡的意思是你需要一種方法讓你可以將數據庫從一個服務器快速復制到另外一個服務器並能夠同時花費最少的精力就可以修改應用程序獲取數據所需要的IP地址通過使用DNS你可以將應用程序快速地指向數據庫的新地址當然你必須設計好你的應用程序連接策略來處理這種數據庫變動問題
假設你有一個數據庫服務器裡面包含了與訂單財會人事和結算這四個系統有關的數據庫由以下四個數據庫分別負責這四個方面的應用OrderREVHR和Billing在這種情況下你應當為每個不同的應用定義不同的DNS域名可以使用像ORDERREVHR和 BILLING這樣的DNS域名讓每個數據庫應用的連接字符串使用合適的DNS域名以確保應用程序指向各自的數據庫所在的當前物理服務器當你因為容量問題而需要將其中某個數據庫從當前服務器轉移到另外一個服務器時你只需要將該數據庫的DNS域名指向新的數據庫服務器即可
你可以還利用邏輯DNS命名法來處理其他問題假設對於上述的每一種應用你都分別有一個開發環境一個質量保證環境和一個生產環境在這種情況下你可以給所有的DNS域名附加一個環境後綴例如對於BILLING可以把開發環境下的DNS域名改為BILLINGDV質量保證環境下的為BILLINGQA而生產環境下的為BILLINGDV
假設你有某個數據庫服務器的CPU使用率特別高那麼通過使用DNS你可以將一個或多個數據庫快速地從這個不堪重負的服務器中轉移到尚未飽和的服務器然後將其DNS地址重新指向新服務器這給你提供了一個低技術含量的解決方案來平衡數據庫服務器的CPU使用情況
From:http://tw.wingwit.com/Article/program/SQL/201311/16357.html