首页 > 数据库 >.NET中SQL Server数据库连接方法

.NET中SQL Server数据库连接方法

时间:2023-05-23 12:32:10浏览次数:33  
标签:false 身份验证 Server SQL NET true 连接


1. 使用本机上的SQL Server Express 实例上的用户实例。

      用户实例的连接创建了一个新的SQL Server 实例。此连接只能是在本地SQL Server 2005实例上并且是通过命名管的windows验证连接才有效目的就是为了给用户创建一个完全权限的Sql Server 实例和有限的计算机管理员权限。

       语法格式:

Data Source=./SQLExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|/mydb.mdf;Database=mydb;User Instance=true;

       注意:

  • 为什么要带上Database参数呢?因为如果有同名的数据库已经被附加上啦,SQL Server将不会重新附加该数据库。他将使用原数据库作为要连接的对象。
  • 要使用User Instance 功能,你要在sql server服务器上启用他。你可以通过执行“sp_configure 'user instances enabled', '1'”来启用,执行“sp_configure 'user instances enabled', '0'”来禁用。

2. 使用Windows身份验证方式(无须用户名和密码)

         语法格式:

Integrated Security=SSPI;Data Source=localhost;Initial Catalog=dbName;

 

3. 使用Sql Server身份验证方式

        语法格式:  

Data Source=localhost;Initial Catalog=dbName;User ID=sa;Password=;

 

        在这里要解释几个参数:

  • Data Source=ServerName;

       使用本地的SQL Server(“localhost”   “127.0.0.1”   “本机IP”  “.”),如果想要使用远程服务器运行,应该在示例对象中把正确的服务器赋给Data Source 属性。

  • Data Source=ServerName;Integrated Security=True;

        Windows身份验证使用Windows登录用户身份连接数据库,而SQL身份验证要求显式地指定SQL Server用户ID和密码。要想使用Windows身份验证,必须在连接字符串中包括 Integrated Security 属性:

        默认情况下,Integrated Security = False ,也就是在默认情况下无法使用Windows身份验证方式,只能采用SQL Server身份验证方式进行连接。Integrated Security=SSPI(Security Support Provider Interface,安全性支持提供者接口).在所有的Windows NT操作系统上(Windows NT 4.0、2000、XP,都支持值SSPI),它是使用Windows身份验证时可以使用的惟一接口,相当于把Integrated Security 属性值设置为True。

       每一种身份验证都有它的优点和缺点。Windows身份验证使用单一的用户信息库源,因此,不需要为数据库访问去分别配置用户。连接字符串不包含用户ID和密码,因此消除了把用户ID和密码暴露给未授权的用户的危险。可以在Active Directory中管理用户和他们的角色,而不必在SQL Server中显式地配置他们的属性。

       Windows身份验证的缺点是,它要求客户通过Windows的安全子系统支持的安全通道去连接SQL Server。如果应用种序需要通过不安全的网络(例如Internet)连接SQL Server,Windows身份验证将不工作。此外,这种身份验证方法也部分地把管理数据库访问控制的责任从DBA身上转移到了系统管理员身上,这在确定的环境中也许是一个问题。


 

附录(连接字串的关键字、内连接池说明VS2008 MSDN)

ConnectionString 中的关键字值的有效名称

关键字

说明

Application Name

应用程序的名称,或者“.Net SqlClient Data Provider”(如果不提供应用程序名称)。

Async

如果设置为 true,则启用异步操作支持。可识别的值为 truefalseyesno

AttachDBFilename

- 或 -

extended properties

- 或 -

Initial File Name

主数据库文件的名称,包括可连接数据库的完整路径名。只有具有 .mdf 扩展名的主数据文件才支持 AttachDBFilename。

如果主数据文件为只读,则附加操作将失败。

该路经可以是绝对路径,也可以是相对路径,这取决于是否使用 DataDirectory 替换字符串。如果使用 DataDirectory,则对应的数据库文件必须存在于替换字符串指向的目录的子目录中。

必须按照如下方式使用关键字“database”(或其别名之一)指定数据库名称:

"AttachDbFileName=|DataDirectory|\data\YourDB.mdf;integrated security=true;database=YourDatabase"

如果数据文件所在的目录中存在日志文件,并且在附加主数据文件时使用了“database”关键字,则会生成错误。这种情况下,请移除日志文件。附加了数据库后,系统将根据物理路径自动生成一个新的日志文件。

Connect Timeout /

Connection Timeout

在终止尝试并产生错误之前,等待与服务器的连接的时间长度(以秒为单位)。

Context Connection

如果应对 SQL Server 进行进程内连接,则为 true

Current Language

SQL Server 语言记录名称。

Data Source/

Server /

Address/Addr /

Network Address

要连接的 SQL Server 实例的名称或网络地址。可以在服务器名称之后指定端口号:

server=tcp:servername, portnumber

指定本地实例时,始终使用 (local)。若要强制使用某个协议,请添加下列前缀之一:

np:(local), tcp:(local), lpc:(local)

Encrypt

当该值为 true 时,如果服务器端安装了证书,则 SQL Server 将对所有在客户端和服务器之间传送的数据使用 SSL 加密。可识别的值为truefalseyesno

Enlist

true 表明 SQL Server 连接池程序在创建线程的当前事务上下文中自动登记连接。

Failover Partner

在其中配置数据库镜像的故障转移合作伙伴服务器的名称。

.NET Framework 1.0 或 1.1 版不支持 Failover Partner 关键字。

Initial Catalog /

Database

数据库的名称。

Integrated Security/

Trusted_Connection

当为 false 时,将在连接中指定用户 ID 和密码。当为 true 时,将使用当前的 Windows 帐户凭据进行身份验证。

可识别的值为 truefalseyesno 以及与true 等效的sspi(强烈推荐)。

MultipleActiveResultSets

如果为 true,则应用程序可以维护多活动结果集 (MARS)。如果为 false,则应用程序必须在执行该连接上的任何其他批处理之前处理或取消一个批处理中的多个结果集。

可识别的值为 truefalse

.NET Framework 1.0 或 1.1 版不支持该关键字。

Network Library /Net

用于建立与 SQL Server 实例的连接的网络库。支持的值包括 dbnmpntw(命名管道)、dbmsrpcn(多协议)、dbmsadsn (Apple Talk)、dbmsgnet (VIA)、dbmslpcn(共享内存)及 dbmsspxn (IPX/SPX) 和 dbmssocn (TCP/IP)。

相应的网络 DLL 必须安装在要连接的系统上。如果不指定网络而使用一个本地服务器(比如“.”或“(local)”),则使用共享内存。

Packet Size

用来与 SQL Server 的实例进行通信的网络数据包的大小,以字节为单位。

Password /Pwd

SQL Server 帐户登录的密码。建议不要使用。为保持高安全级别,我们强烈建议您使用 Integrated SecurityTrusted_Connection 关键字。

Persist Security Info

当该值设置为 falseno(强烈推荐)时,如果连接是打开的或者一直处于打开状态,那么安全敏感信息(如密码)将不会作为连接的一部分返回。重置连接字符串将重置包括密码在内的所有连接字符串值。可识别的值为truefalseyesno

Replication

如果使用连接来支持复制,则为 true

Transaction Binding

控制与登记的 System.Transactions 事务关联的连接。

可能的值包括:

Transaction Binding=Implicit Unbind;

Transaction Binding=Explicit Unbind;

Implicit Unbind 可使连接在事务结束时从事务中分离。分离后,连接上的其他请求将以自动提交模式执行。在事务处于活动状态的情况下执行请求时,不会检查System.Transactions.Transaction.Current 属性。事务结束后,其他请求将以自动提交模式执行。

Explicit Unbind 可使连接保持连接到事务,直到连接关闭或调用显式 SqlConnection.TransactionEnlist(null)。如果Transaction.Current 不是登记的事务或登记的事务未处于活动状态,则引发InvalidOperationException

TrustServerCertificate

如果设置为 true,则使用 SSL 对通道进行加密,但不通过证书链对可信度进行验证。如果将 TrustServerCertificate 设置为true 并将 Encrypt 设置为false,则不对通道进行加密。可识别的值为truefalseyesno。有关更多信息,请参见 SQL Server 2005 Books Online(《SQL Server 2005 联机丛书》)中的“Encryption Hierarchy”(加密层次结构)和“Using Encryption Without Validation”(使用不验证的加密)。

Type System Version

指示应用程序期望的类型系统的字符串值。可能的值包括:

Type System Version=SQL Server 2000;

Type System Version=SQL Server 2005;

Type System Version=SQL Server 2008;

Type System Version=Latest;

如果设置为 SQL Server 2000,将使用 SQL Server 2000 类型系统。与 SQL Server 2005 实例连接时,执行下列转换:

XML 到 NTEXT

UDT 到 VARBINARY

VARCHAR(MAX)、NVARCHAR(MAX) 和 VARBINARY(MAX) 分别到 TEXT、NEXT 和 IMAGE。

如果设置为 SQL Server 2005,将使用 SQL Server 2005 类型系统。对 ADO.NET 的当前版本不进行任何转换。

如果设置为 Latest,将使用此客户端-服务器对无法处理的最新版本。这个最新版本将随着客户端和服务器组件的升级自动更新。

User ID

SQL Server 登录帐户。建议不要使用。为保持高安全级别,我们强烈建议您使用 Integrated SecurityTrusted_Connection 关键字。

User Instance

一个值,用于指示是否将连接从默认的 SQL Server 速成版实例重定向到调用方帐户下运行的运行时启动的实例。

Workstation ID

连接到 SQL Server 的工作站的名称。

注意:

远程服务器、HTTP 及 UNC 路径名不受支持。

ConnectionString 内连接池值的有效名称。

名称

说明

Connection Lifetime

当连接被返回到池时,将其创建时间与当前时间作比较,如果时间长度(以秒为单位)超出了由 Connection Lifetime 指定的值,该连接就会被销毁。这在聚集配置中很有用(用于强制执行运行中的服务器和刚置于联机状态的服务器之间的负载平衡)。

零 (0) 值将使池连接具有最大的连接超时。

Connection Reset

确定从池中提取数据库连接时是否重置数据库连接。对于 SQL Server 7.0 版,设置为 false 可避免获取连接时再有一次额外的服务器往返行程,但须注意此时并未重置连接状态(如数据库上下文)。

只要不将 Connection Reset 设置为 false,连接池程序就不会受到ChangeDatabase 方法的影响。连接在退出相应的连接池以后将被重置,并且服务器将移回登录时数据库。不会创建新的连接,也不会重新进行身份验证。如果将Connection Reset 设置为false,则池中可能会产生不同数据库的连接。

Enlist

当该值为 true 时,池程序在创建线程的当前事务上下文中自动登记连接。可识别的值为 truefalseyesno

Load Balance Timeout

连接被销毁前在连接池中生存的最短时间(以秒为单位)。

Max Pool Size

池中允许的最大连接数。

Min Pool Size

池中允许的最小连接数。

Pooling

当该值为 true 时,系统将从适当的池中提取 SQLConnection 对象,或在需要时创建该对象并将其添加到适当的池中。可识别的值为truefalseyesno

 

 

标签:false,身份验证,Server,SQL,NET,true,连接
From: https://blog.51cto.com/u_3649463/6330831

相关文章

  • 使用Navicat将SQL server数据库导成mysql数据库
    一、第一种转换方法 1、使用NavicatPremium打开MySql数据库,然后新建一个数据库名(该数据库名称为需要从SqlServer数据库导过来的名称)比如需要将SqlServer数据库中的“BJ_DeviceGovern”数据库导入到MySQL数据库中,则需要现在打开的MySQL中创建一个一样名称的数据库“bj_devicego......
  • webgoat-sql注入
    advanced第五关在注册页面输入tom'or'1'='1,显示↓,说明此处存在在注入点,被带入数据库查询。输入tom'or'1'='2,出现报错。可以看出,对于正确与错误显示有明显的区别,故此处可以尝试基于布尔的盲注。首先我们想到的就是取用sqlmap工具跑抓包、将数据包复制到sqlmap文件......
  • 实验二 SQL 语言的使用(1)
    打开SQLServerManagementStudio。连接到测试数据库test1。在NewQuery窗口中输入以下SQL语句进行查询:(1)查询所有供应商情况,先按城市升序排列,城市相同按供应商名称降序排列。SELECT*FROMsORDERBYcityASC,snameDESC(2)查询所有零件情况,先按零件名称升序排列,零......
  • 实验二 SQL 语言的使用(实验体会)
    实验可以让学习者更深入地理解SQL语言的使用和操作。通过实验,学习者可以了解SQL语言的各种基础内容以及高级查询和操作方法。同时,实验也可以帮助学习者锻炼自己的问题解决能力和数据处理能力,让他们能够在日常工作中更加熟练地使用SQL语言完成自己的任务。总之,实验对于学习者来说是......
  • 数据库编程(SQL语言)实验体会
    首先需要在SQLServer数据库中创建一个名为[students]的数据库,在该数据库中创建三个表:Sudent表,包含字段Sno、Sname、Ssex、Sage、Sdept。Course表,包含字段Cno、Cname、Ccredit、Semester。SC表,包含字段Sno、Cno、Grade、XKLB。然后需要使用VB6设计一个......
  • 实验二 SQL 语言的使用
    实验二SQL语言的使用一、实验目的:掌握使用SQL语言进行各种查询的操作和视图的操纵方法。二、实验要求:在现有的数据库上进行各种查询操作,对视图的创建、使用等操作。三、实验步骤:1、开始→程序→MicrosoftSQLServer→SQLServerManagementStudio。2、在“连接到服......
  • Windows环境下配置MySQL主从复制详细教程
    ​一、下载mysql下载地址:MySQL::MySQLCommunityDownloads1、点击箭头所指​编辑 2、默认页面是下载mysql8,如果想下载mysql5点击箭头所指​编辑3、点击箭头所指选择需要的版本​编辑4、点击箭头所指可以选择32位或64位​编辑5、然后点击download​编辑二、解压压......
  • 安装MySQLdb for centos 7--小白教程
    1.MySQLdb下载地址:https://pypi.python.org/pypi/MySQL-python/1.2.5 2.unzipMySQL-python-1.2.5; 3.cdMySQL-python-1.2.5; pythonsetup.pyinstall;此时报错:Traceback(mostrecentcalllast): File"setup.py",line17,in<module>   metadat......
  • MySql
    数据库(数据库管理系统:简单sql语句)之前学过ObjectOutputstream-->java对象(张三20)->序列化到文件当中反序列化newjava对象readobjectwriteobject常见的有哪些数据库管理系统?IBM——>eclipseOracle甲骨文(sun)Oracle是做数据库起家的Oracle-->MYSQLAB公司MYSQL是占体积......
  • 【MySQL】MySQL执行一条 select 语句,期间发生了什么?
    1  前言我们学习SQL的时候,大家肯定第一个先学到的就是select查询语句了,比如下面这句查询语句://在product表中,查询id=1的记录select*fromproductwhereid=1;但是有没有想过,MySQL执行一条select查询语句,在MySQL中期间发生了什么?带着这个问题,我们可以......