.NET/SQL Server 数据库连接分析详解

Posted 西部开源

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET/SQL Server 数据库连接分析详解相关的知识,希望对你有一定的参考价值。

最近发现好多学生对于数据库连接不是很明白,今天下了篇帖子,这个帖子立足于学习和企业级开发的过度阶段,着重于学习,所以,小伙伴们,记得留言讨论哦,有什么疑问可以随时@我或者留言,都会第一时间给你答复哦。

先看一张图(数据库连接的两种方式):

OLEDB方式连接

  Sql身份验证模式Provider="SQLOLEDB;data source=server_name;initial catalog=databasename;uid=username;pwd=password;" 

  Windows身份验证模式:ConnectString=”Provider=SQLOLEDB;Data Source=server_name;DataBase=databasename; Integrated Security=SSPI;Persist Security=true”

   注释:(此两种方式的却别仅在于windows验证中用Integrated Security=SSPI代替了sql验证中的uid=username;pwd=password语句(即指明用户名、密码语句)

  1.Provider=SQLOLEDB:提供者为SQLOLEDB(此为固定)

  2.Integrated Security=SSPI

  集成安全机制采用SSPI
  SSPI
是Security Support Provider Interface(Microsoft安全支持提供器接口)SSPI是定义得较全面的公用API,用来获得验证、信息完整性、信息隐私等集成安全服务,以  及用于所有分布式应用程序协议的安全方面的服务。

  设置Integrated Security为 True 的时候,采用windows身份验证模式。只有设置为 False 或省略该项的时候,采用 UserID, PWD 来连接。Integrated Security 可以设置为: True, false, yes, no ,还可以设置为:sspi ,相当于 True,建议用这个代替 True。

  3.Persist Security Info:坚持安全信息

  Persist Security Info属性的意思是表示是否保存安全信息,其实可以简单的理解为"ADO在数据库连接成功后是否保存密码信息",True表示保存,False表示不保存.ADO缺省为False(即可有可无).总体来说,如果数据库连接成功后不再需要连接的密码,出于安全性考虑,还是建议将Persist Security Info设为false,以防止后门程序取得数据库连接的密码.

  4.initial catalog等同于database(可以互换):指定连接数据库的名字(如果省略则连接的是当前用户名的默认数据库,详情见下文)

*ODBC方式连接

  使用数据源方式

  此种方式主要是配置odbc数据源,有三种方式,系统dsn、用户dsn、文件dsn。具体方法这里不作介绍。配置完数据源以后即可连接:

  用系统dsn:  connectstring= "DSN=dsnname;   UID=username;   PWD=password"
   用文件dsn:   connectstring = "FILEDSN=filedsnname; UID= username;   PWD=password "  
  使用ODBC驱动方式:
  使用ODBC 驱动程序, 免去了配置ODBC数据源的步骤, 可以利用ODBC 驱动程序直接与数据库相连接。

   ConnectString="Driver={sql server};server=servername;database=databasename;uid=username;pwd=password;"

   详细注释(关于windows身份验证和SQL身份验证):

   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。
   在Windows身份验证模式中,SQL Server使用Windows的安全子系统对用户连接进行有效性验证。即使显示地指定用户ID和密码,SQL Server也不检查连接字符串中的用户ID和密码。因为只有Windows NT、2000、XP支持SSPI,因此如果正使用的是这些操作系统,则只能使用Windows集成的安全策略去连接SQL Server。不论使用哪一个操作系统,当使用SQL Server身份验证时,必须在连接字符串中指定用户ID和密码:
Data Source=ServerName;User ID=donaldx;Password=unbreakable

默认情况下,SQL Server 每一个用户都可指定一个默认数据库,当在数据库中创建用户时,可以设置用户的默认数据库。此外,也可以在任意时间更改用户的默认数据库。:如下图

以上是关于.NET/SQL Server 数据库连接分析详解的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET + SQL SERVER + JSON = 如何在 SQL Server 的两个连接表中获取数据并加载为 JSON?

.NET/SQL Server 中的连接池?

VB.NET SQL Server 插入 - ExecuteNonQuery:连接属性尚未初始化

详解:驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server 建立安全连接。

MSSQL 详解SQL Server连接(内连接外连接交叉连接)

详解SQL Server连接(内连接外连接交叉连接)