C#连接sqlserver windows 和 sqlserver 身份验证的两种连接字符串

 更新时间:2022-12-25   作者:  
本文主要介绍如何使用c# csharp连接sqlserver数据库。

常用配置字段

 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的工作站的名称。其缺省值为本地计算机的名称。

//sql server 身份验证 连接字符串
private string ConnstrSqlServer = "server=服务器名称;uid=登录名称;pwd=登录密码;database=数据库名称";

//windows 身份验证连接字符串
private string ConnstrWindows = "server=服务器名称;database=数据库名称;Trusted_Connection=SSPI";

// 在 C# 代码中用 SqlClient 的方式访问 SQL Server 2008 数据库

// .NET Framework Data Provider for SQL Server 标准写法
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

// .NET Framework Data Provider for SQL Server 另一种标准写法
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;

// .NET Framework Data Provider for SQL Server 信任连接写法
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

// .NET Framework Data Provider for SQL Server 信任连接另一种写法
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

1、连接字符串中常用的声明有:
服务器声明 Data Source、Server和Addr等,
数据库声明 Initial Catalog和DataBase等,
集成Windows账号的安全性声明 Integrated Security和Trusted_Connection等,
使用数据库账号的安全性声明 User ID和Password等。
2、常用方式

对于访问数据库的账号来说,一般写法如下:
string ConnStr = "server = localhost; user id = sa; password = xxx; database = northwind";

对于集成Windows安全性的账号来说,其连接字符串写法一般如下:
string ConnStr = "server = localhost; integrated security = sspi; database = northwind";

string ConnStr = "server = localhost; trusted_connection = yes; database = northwind";

使用Windows集成的安全性验证在访问数据库时具有很多优势:安全性更高、访问速度更快、减少重新设计安全架构的工作、可以硬编码连接字符串等,还是很值得使用的。

连接到一个SQL Server实例
指定服务器实例的表达式和其他SQL Server的连接字符串相同。
Driver={SQL Native Client};Server=myServerName\theInstanceName;Database=myDataBase;Trusted_Connection=yes;

使用附加本地数据库文件的方式连接到本地SQL Server Express实例
Provider=SQLNCLI;Server=.\SQLExpress;AttachDbFilename=c:\asd\qwe\mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;

为何要使用Database参数?如果同名的数据库已经被附加,那么SQL Server将不会重新附加。

使用附加本地数据文件夹中的数据库文件的方式连接到本地SQL Server Express实例
Provider=SQLNCLI;Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;

为何要使用Database参数?如果同名的数据库已经被附加,那么SQL Server将不会重新附加。

数据库镜像
Data Source=myServerAddress;Failover Partner=myMirrorServer;Initial Catalog=myDataBase;Integrated Security=True;