这几天有几位同事问我数据库连接方面的问题,我整理了一下发给大家,有错误之处还请帮忙改正。
一、LOCALHOST与127.0.0.1
localhost也叫local,称之为本地服务器,127.0.0.1为本机地址(本机服务器)。
localhot(local)是不经网卡传输,即不受网络防火墙和网卡相关的的限制;127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制。
一般设置本地服务用localhost是最好的,localhost不会解析成ip,也不会占用网卡、网络资源,而用ip的时候,等于本机是通过网络再去访问本机,可能涉及到网络用户的权限。
二、SQL SERVER的身份验证方式
sql server有两种登录验证方式:windows身份验证模式和SQL server身份验证模式
windows身份验证相对于混合模式更加安全,使用本连接模式时候,sql不判断sa密码,而仅根据用户的windows权限来进行身份验证,我们称为“信任连接”,但是在远程连接的时候会因NTML验证的缘故,无法登陆。
SQL server身份验证就是根据用户名和密码来进行验证。
每一种身份验证都有它的优点和缺点。Windows身份验证使用单一的用户信息库源,因此,不需要为数据库访问去分别配置用户。连接字符串不包含用户ID和密码,因此消除了把用户ID和密码暴露给未授权的用户的危险。可以在Active Directory中管理用户和他们的角色,而不必在SQL Server中显式地配置他们的属性。Windows身份验证的缺点是,它要求客户通过Windows的安全子系统支持的安全通道去连接SQL Server。如果应用种序需要通过不安全的网络(例如Internet)连接SQL Server,Windows身份验证将不工作。此外,这种身份验证方法也部分地把管理数据库访问控制的责任从DBA身上转移到了系统管理员身上,这在确定的环境中也许是一个问题。
三、INTEGRATED SECURITY
集成验证,也就是说使用Windows验证的方式去连接到数据库服务器。这样方式的好处是不需要在连接字符串中编写用户名和密码,从一定程度上说提高了安全性。其登陆的身份为当前用户的身份,但在使用Asp.net中有所区别,Windows XP使用的是“ASPNET”帐号,Windows 2003或者以后的版本使用的是“NetWork Service”帐号,在使用Visual Studio调试时使用的也是当前用户的身份,所以如果你准备用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实例
安装第一个实例,默认实例的端口是1433,从第二个实例开始的端口是动态端口,需要的话,自己手工指定为静态端口,修改方法:点击电脑左下方的“开始”->“Microsoft SQL Server2005”->“配置工具”->“SQL Server Configuration Manager”->“展开网络配置”-->点击“MYSQLSERVER协议”-->双击左侧新安装的实例数据库名-->展开后,再双击右侧的“TCP/IP”-->选择“IP地址”就能看到端口号了。
程序访问完整连接字符串写法:IP地址\实例名,端口号,例如:server=192.168.1.138\sqlDb,21433。