多数据库环境的连接策略
要怎样做才能够最大限度减少将应用程序重新指向一台新的数据库机器或者出于性能因素将你当前的单机环境转变成多机器环境所需要的工作量呢?本文将和大家一起探讨通过涉及数据库连接策略来简化应用程序连接变化的方法,这样就可以在需要的时候减少管理开销使数据库发挥“即插即用”的功能。
【IT专家网独家】由于计算机硬件功能越来越强大,价格则越来越低廉,所以很多人开始用一台机器作为多个SQL Server数据库的主机,随着时间的推移,单个机器有可能需要支持越来越多的SQL Server数据库。但是,你有可能需要替换硬件设施,你的数据库服务器有可能由于某个硬件问题而出现错误,而你的多数据库主机还有可能由于运行太多的应用程序而导致饱和,最终导致所有的应用都出现性能问题。当上述任何一种情况出现时,你应该如何应对呢?要怎样做才能够最大限度减少将应用程序重新指向一台新的数据库机器或者出于性能因素将你当前的单机环境转变成多机器环境所需要的工作量呢?本文将和大家一起探讨通过涉及数据库连接策略来简化应用程序连接变化的方法,这样就可以在需要的时候减少管理开销使数据库发挥“即插即用”的功能。
应用程序如何连接
每个应用程序都需要识别其所要连接的以便从中检索数据的数据库服务器。通过使用连接字符串可以实现应用程序和数据库服务器的连接。典型的连接字符串如下:
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地址。例如,你可以用类似于SQL2005PRO这样的DNS别名,这个在DNS中定义的名字和实际的物理机器的IP地址是一样的。使用DNS别名可以赋予名字一定的含义。这里,SQL2005PROD这个名字的意思是用于生产的 SQL Server 2005服务器。这样可以将上述的连接字符串改成:
Server=SQL2005PROD; Initial Catalog=MyDatabaseName; Integrated Security=SSPI;
那么在连接字符串中用DNS域名又有什么好处呢?有一个描述性的名称无疑是其中一个显而易见的好处,但并不是唯一的好处。假设你的数据库服务器包含了很多个不同的数据库,还要支持50个不同的应用程序。又假设你的SQL Server机器名为SSEDB01,而这台机器现在出现了某种未知的硬件错误。此外,你还有一个名为SSEDB02的备份机器,而你出于安全的考虑,已经将SSEDB01的备份传送到了这台SSEDB02中,所以你可以从SSEDB01快速恢复所有的数据库来支持这50个不同的应用程序。另外,假设你知道在SSEDB02上恢复所有SSEDB01的数据库比解决SSEDB01本身的硬件问题用时更少。在以上的前提条件下,如果你在应用程序的连接字符串中用的是机器名,那么你将不得不一个一个地修改所有的连接字符串,将SSEDB01的机器名改为SSEDB02,让这50个应用程序指向新的后备服务器SSEDB02,以便完成整个恢复过程。修改50多个连接字符串可能需要相当长一段时间,而且很容易出错。这种情况下,如果你在所有50多个连接字符串中使用的连接名是SQL2005PROD这样的逻辑名,那么你只需要进行一个修改就可以将所有的应用程序重新指向新的后备服务器SSEDB02,也就是对DNS的修改,将SQL2005PROD改为指向SSEDB02的IP地址,而不是SSEDB01的IP地址。只要你修改了DNS,那么每一个应用程序就自动地连接到SSEDB02而不再连接到SSEDB01了,也就不需要花时间修改那50多个连接字符串中的任意一个。在连接设计的时候,只要做这么一个小小的应用方面的修改,用逻辑名来代表SQL Server服务器,而不用物理服务器名或IP地址,那么在出现问题需要将所有应用程序重新指向新SQL Server服务器时,工作量就会大大减少。
- 本文关键词:

