总结:数据库连接字符串的使用方法
-
综述
什么是数据库连接字符串?
连接字符串的格式是一个以分号为界,划分键/值参数对的列表。连接字符串包含一个由一些属性名/值对组成的集合。每一个属性/值对都由分号隔开。
PropertyName1="Value1";PropertyName2="Value2";PropertyName3="Value3";..... |
同样,连接字符串必须包含SQL Server实例名称: Data Source=ServerName;
总的来说,数据库的连接字符串分为两种:Windows身份验证和SQL Server身份验证。每种方法都有各自的优缺点。但是遵循的基本规则是一样的,基本规则如下:
如果采用SQL Server身份验证方式,Data Source(数据源)、Initial Catalog(初始编目)、User ID(用户ID)、和Password(密码)等元素是必须的,下面这些选项都是可用的:
·Application Name(应用程序名称):应用程序的名称。如果没有被指定的话,它的值为.NET SqlClient Data Provider(数据提供程序).
·AttachDBFilename/extended properties(扩展属性)/Initial File Name(初始文件名):可连接数据库的主要文件的名称,包括完整路径名称。数据库名称必须用关键字数据库指定。
·Connect Timeout(连接超时)/Connection Timeout(连接超时):一个到服务器的连接在终止之前等待的时间长度(以秒计),缺省值为15。
·Connection Lifetime(连接生存时间):当一个连接被返回到连接池时,它的创建时间会与当前时间进行对比。如果这个时间跨度超过了连接的有效期的话,连接就被取消。其缺省值为0。
·Connection Reset(连接重置):表示一个连接在从连接池中被移除时是否被重置。一个伪的有效在获得一个连接的时候就无需再进行一个额外的服务器来回运作,其缺省值为真。
·Current Language(当前语言):SQL Server语言记录的名称。
·Data Source(数据源)/Server(服务器)/Address(地址)/Addr(地址)/Network Address(网络地址):SQL Server实例的名称或网络地址。
·Encrypt(加密):当值为真时,如果服务器安装了授权证书,SQL Server就会对所有在客户和服务器之间传输的数据使用SSL加密。被接受的值有true(真)、false(伪)、yes(是)和no(否)。
·Enlist(登记):表示连接池程序是否会自动登记创建线程的当前事务语境中的连接,其缺省值为真。
·Database(数据库)/Initial Catalog(初始编目):数据库的名称。
·Integrated Security(集成安全)/Trusted Connection(受信连接):表示Windows认证是否被用来连接数据库。它可以被设置成真、伪或者是和真对等的sspi,其缺省值为伪。
·Max Pool Size(连接池的最大容量):连接池允许的连接数的最大值,其缺省值为100。
·Min Pool Size(连接池的最小容量):连接池允许的连接数的最小值,其缺省值为0。
·Network Library(网络库)/Net(网络):用来建立到一个SQL Server实例的连接的网络库。支持的值包括: dbnmpntw (Named Pipes)、dbmsrpcn (Multiprotocol/RPC)、dbmsvinn(Banyan Vines)、dbmsspxn (IPX/SPX)和dbmssocn (TCP/IP)。协议的动态链接库必须被安装到适当的连接,其缺省值为TCP/IP。
·Packet Size(数据包大小):用来和数据库通信的网络数据包的大小。其缺省值为8192。
·Password(密码)/Pwd:与帐户名相对应的密码。
·Persist Security Info(保持安全信息):用来确定一旦连接建立了以后安全信息是否可用。如果值为真的话,说明像用户名和密码这样对安全性比较敏感的数据可用,而如果值为伪则不可用。重置连接字符串将重新配置包括密码在内的所有连接字符串的值。其缺省值为伪。
·Pooling(池):确定是否使用连接池。如果值为真的话,连接就要从适当的连接池中获得,或者,如果需要的话,连接将被创建,然后被加入合适的连接池中。其缺省值为真。
·User ID(用户ID):用来登陆数据库的帐户名。
·Workstation ID(工作站ID):连接到SQL Server的工作站的名称。其缺省值为本地计算机的名称。
-
Windows 身份验证方式
- 首推最简单的一种方法,也是最不得已的情况下才使用的一招!
首先:随便在电脑上的什么地方新建一个后缀为.udl的文件;
接着:双击打开这个文件,会自动弹出数据链接属性对话框,如下如所示,配置好之后点击确定就OK了。
最后,把这个udl文件拖到记事本里打开就可以看见连接字符串了。
每一种身份验证都有它的优点和缺点。
Windows身份验证使用单一的用户信息库源,因此,不需要为数据库访问去分别配置用户。连接字符串不包含用户ID和密码,因此消除了把用户ID和密码暴露给未授权的用户的危险。可以在Active Directory中管理用户和他们的角色,而不必在SQL Server中显式地配置他们的属性。
Windows身份验证的缺点是,它要求客户通过Windows的安全子系统支持的安全通道去连接SQL Server。如果应用种序需要通过不安全的网络(例如Internet)连接SQL Server,Windows身份验证将不工作。此外,这种身份验证方法也部分地把管理数据库访问控制的责任从DBA身上转移到了系统管理员身上,这在确定的环境中也许是一个问题。
一般而言,在设计通用的应用程序时,为了使用Windows身份验证,将会对一些方面进行加强。大多数公司的数据库都驻留在比较健壮的Windows服务器操作系统上,那些操作系统都支持Windows身份验证。数据访问层和数据表示层的分离也促进了把数据访问代码封装在中间层组件思想的应用,中间层组件通常运行在具有数据库服务器的内部网络中。当这样设计时,就不需要通过不安全通道建立数据库连接。除此之外,Web服务也使直接连接不同域中数据库的需要大减少。
三、SQL Server 身份验证方式
SQL Server 身份验证标准连接:
Data Source = myServerAddress; Initial Catalog = myDataBase; User Id = myUsername; Password = myPassword;
server=.\sqlexpress; database=testDB; uid=sa; pwd=123456
使用本地的SQL Server(localhost),如果想要使用远程服务器运行,应该在示例对象中把正确的服务器赋给Data Source 属性。此外,还必须指定所支持的两种身份验证方法(即Windows身份验证和SQL Server身份验证)中的其中一种。Windows身份验证使用Windows登录用户身份连接数据库,而SQL身份验证要求显式地指定SQL Server用户ID和密码。要想使用Windows身份验证,必须在连接字符串中包括 Integrated Security 属性:
Data Source=ServerName;Integrated Security=True; |
默认情况下,Integrated Security 属性为 False ,这意味着将禁用Windows身份验证。如果没有显式地把这个属性的值设置为True,连接将使用SQL Server身份验证,因此,必须提供SQL Server用户ID和密码。Integrated Security属性还能识别的其他值只有SSPI(Security Support Provider Interface,安全性支持提供者接口)。在所有的Windows NT操作系统上,其中包括Windows NT 4.0、2000、XP,都支持值SSPI。它是使用Windows身份验证时可以使用的惟一接口,相当于把Integrated Security 属性值设置为True。
使用SQL Server的连接方式时,以本地服务器(LocalHost),数据库(testDB)为例,可以有以下一些连接方式
Data Source=LocalHost;Initial Catalog= testDB;Integrated Security=SSPI;Persist Security Info=False;Workstation Id=XXX;Packet Size=4096; |
Server=LocalHost; Persist Security Info=False;Integrated Security=SSPI;Database= testDB; |
在Windows身份验证模式中,SQL Server使用Windows的安全子系统对用户连接进行有效性验证。即使显示地指定用户ID和密码,SQL Server也不检查连接字符串中的用户ID和密码。因为只有Windows NT、2000、XP支持SSPI,因此如果正使用的是这些操作系统,则只能使用Windows集成的安全策略去连接SQL Server。不论使用哪一个操作系统,当使用SQL Server身份验证时,必须在连接字符串中指定用户ID和密码:
Server= ServerName,Data Source=DB;User ID=ID;Password=pwd |
最后提供一个权威的字符串查询网站,英文的,非常实用。
http://www.connectionstrings.com/