MS SQL Server 数据库连接字符串详解

原地址:http://blog.csdn.net/jhhja/article/details/6096565

问题 : 超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。

解决办法 1. 在代码里面 , 把未关闭的连接关闭 2. 扩大共享池 , 方法如下 : 解决方法可以是修改连接池的连接生存期 , 因为默认值是 60 秒 , 即连接从应用程序被释放后可以在池中保存的时间。 具体操作步骤如下: 如果是 ODBC 的话,则可以在 ODBC Data Source Administrator 中手动更改,该程序位于 “Start” 菜单中的 “Programs”->"Adminstrative Tools" (中文名:管理工具)下,或从 "Control Panel"( 中文名:控制面板 ) 中打开 “ODBC Data Source Administrator” ( ODBC 数据源管理器),再选择 “Connection Pooling” (连接池)选项卡,双击驱动程序中的 “SQL Server” ,选择 “Pool Connetions to this drive”( 使用池连接该驱动程序 ) ,把下面的时间 60 秒改的大一点,例如 120 。 如果是 SqlConnection 的共享连接,则为 ConnectionString 属性 Connection Lifetime 数值名称指定一个值,该值默认情况下是 0 ,表示连接永远不会从池中被自动移走。如果指定一个不同的值,那么一旦连接被返回到池中,该值将和连接的创建时间及当前时间进行比较。如果生存期超过了 Connection Lifetime 的值,那么连接将从池中被移走。

问题的原因是与数据库的连接没有显示关闭 , 而等系统自动回收是要时间的 . 解决的方法是改变连接池的大小 . 在连接字符串的后面加上以下代码 : Enlist=true;Pooling=true;Max Pool Size=300;Min Pool Size=0;Connection Lifetime=300;user id=sa;packet size=1000 packet size 参数取 512 到 32767 中的任一整数值

释:

SqlConnection.ConnectionString 属性

ConnectionString 类似于 OLE DB 连接字符串,但并不相同。与 OLE DB 或 ADO 不同,如果 “Persist Security Info ” 值设置为 false (默认值),则返回的连接字符串与用户设置的 ConnectionString 相同但去除了安全信息。除非将 “Persist Security Info ” 设置为 true ,否则, SQL Server .NET Framework 数据提供程序将不会保持,也不会返回连接字符串中的密码。

可以使用 ConnectionString 属性连接到数据库。下面的示例阐释了一个典型的连接字符串。

Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer


只有在连接关闭时才能设置 ConnectionString 属性。许多连接字符串值都具有相应的只读属性。当设置连接字符串时,将更新所有这些属性(除非检测到错误)。检测到错误时,不会更新任何属性。 SqlConnection 属性只返回那些包含在 ConnectionString 中的设置。

若要连接到本地机器,请将服务器指定为 “(local)” 。(必须始终指定一个服务器。)

重置已关闭连接上的 ConnectionString 会重置包括密码在内的所有连接字符串值(和相关属性)。例如,如果设置一个连接字符串,其中包含 “Database= northwind” ,然后再将该连接字符串重置为 “Data Source=myserver;Integrated Security=SSPI” ,则 Database 属性将不再设置为 Northwind 。

在设置后会立即分析连接字符串。如果在分析时发现语法中有错误,则产生运行库异常,如 ArgumentException 。只有当试图打开连接时,才会发现其他错误。

连接字符串的基本格式包括一系列由分号分隔的关键字 / 值对。等号  (=) 连接各个关键字及其值。若要包括含有分号、单引号字符或双引号字符的值,则该值必须用双引号括起来。如果该值同时包含分号和双引号字符,则该值可以用单引号括起来。如果该值以双引号字符开始,则还可以使用单引号。相反地,如果该值以单引号开始,则可以使用双引号。如果该值同时包含单引号和双引号字符,则用于将值括起来的引号字符每次出现时,都必须成对出现。

若要在字符串值中包括前导或尾随空格,则该值必须用单引号或双引号括起来。即使将整数、布尔值或枚举值用引号括起来,其周围的任何前导或尾随空格也将被忽略。然而,保留字符串关键字或值内的空格。若要在关键字或值中包括等号 (=) ,则它之前必须还有另一个等号。例如,在假设的连接字符串中,

"key==word=value"

关键字是 “key=word” 并且值是 “value” 。

如果 “keyword= value” 对中的一个特定关键字多次出现在连接字符串中,则将所列出的最后一个用于值集。

关键字不区分大小写。

下表列出了 ConnectionString 中的关键字值的有效名称。

名称

默认值

说明

Application Name

应用程序的名称,如果不提供应用程序名称,默认是: “.Net  SqlClient Data Provider”

AttachDBFilename   - - extended properties   - - Initial File Name

可连接数据库的主文件的名称,包括完整的路径名。

必须使用关键字 “database” 来指定数据库的名称。

Connect Timeout   - - Connection Timeout

15

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

Current Language

SQL Server 语言

Data Source   - - Server   - - Address   - - Addr   - - Network Address

要连接的 SQL Server 实例的名称或网络地址。

Encrypt

'false'

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

Initial Catalog   - - Database

数据库的名称。

Integrated Security   - - Trusted_Connection

'false'

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

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

Network Library   - - Net

'dbmssocn'

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

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

Packet Size

8192

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

Password   - - Pwd

SQL Server 帐户登录的密码(建议不要使用。为了维护最高级别的安全性,强烈建议改用 Integrated Security 或 Trusted_Connection 关键字)。

Persist Security Info

'false'

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

User ID

SQL Server 登录帐户(建议不要使用。为了维护最高级别的安全性,强烈建议改用 Integrated Security 或 Trusted_Connection 关键字)。

Workstation ID

本地计算机名称

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

下表列出了 ConnectionString 内连接池值的有效名称。有关连接池的更多信息,请参见 SQL Server .NET Framework 数据提供程序连接池。

名称

默认值

说明

Connection Lifetime

0

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

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

Connection Reset

'true'

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

Enlist

'true'

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

Max Pool Size

100

池中允许的最大连接数。

Min Pool Size

0

池中允许的最小连接数。

Pooling

'true'

当该值为 true 时,系统将从相应池中提取 SQLConnection 对象,或在必要时创建该对象并将其添加到相应池中。可识别的值为 true 、 false 、 yes 和 no 。

当设置需要布尔值的关键字或连接池值时,您可以使用 'yes' 代替 'true' , 'no' 代替 'false' 。整数值表示为字符串。

注意    SQL Server .NET Framework 数据提供程序使用它自己的协议与 SQL Server 进行通信。因此,当连接到 SQL Server 时,它不支持 ODBC 数据源名称 (DSN) 的使用,因为它不添加 ODBC 层。  警告     在此版本中,在应用程序中根据用户输入构造连接字符串时(例如,从对话框中检索用户 ID 和密码信息并将其追加到连接字符串时)应相当谨慎。应用程序应确保用户无法在这些值中嵌入额外的连接字符串参数(例如,输入 “validpassword;database=somedb” 作为密码,以试图连接到其他数据库)。

MS SQL Server 数据库连接字符串详解的更多相关文章

  1. [转]MS SQL Server 数据库连接字符串详解

    http://blog.csdn.net/jackiehome/article/details/8668121 问题 : 超时时间已到.在从池中获取连接之前超时时间已过.出现这种情况可能是因为所有池连 ...

  2. SQL Server表分区详解

    原文:SQL Server表分区详解 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆 ...

  3. 如何获取SQL Server数据库连接字符串的某些部分

    有的时候需要获取SQL Server数据库连接字符串的某些部分.用正则表达式可能有点麻烦. 其实有一个比较简单的方法--使用SqlConnectionStringBuilder. var builde ...

  4. 关于SQL Server系统数据库详解

    介绍这里我们介绍SQL Sever内部的系统数据库的作用和用户数据库之间联系,关于SQL Sever如何管理用户数据库的原理,对于每个数据库开发人员和DBA都是必须掌握的. SQL Sever系统数据 ...

  5. SQL Server数据库连接字符串的组成

    DB驱动程序常见的驱动程序如下: ODBC   ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Servic ...

  6. (C# SQL Server) 数据库连接字符串

    Debug 一个SQL Server 2008 数据库连接的问题,老是提示: [67944] System.Data.SqlClient.SqlException (0x80131904): 在与 S ...

  7. sql server 存储过程的详解

    SqlServer存储过程详解 1.创建存储过程的基本语法模板: if (exists (select * from sys.objects where name = 'pro_name')) dro ...

  8. Sql Server之数据类型详解

      数据类型是一种属性,用于指定对象可保存的数据的类型,SQL Server中支持多种数据类型,包括字符类型.数值类型以及日期类型等.数据类型相当于一个容器,容器的大小决定了装的东西的多少,将数据分为 ...

  9. JDBC连接SQL Server 2005步骤详解

    一.设置SQL Server服务器:    1.“开始” → “程序” → “Microsoft SQL Server 2005” → “配置工具” → “SQL Server Configurati ...

随机推荐

  1. LeetCode算法题-Minimum Index Sum of Two Lists(Java实现)

    这是悦乐书的第272次更新,第286篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第139题(顺位题号是599).假设Andy和Doris想要选择一家餐馆吃晚餐,他们都有 ...

  2. 【笔记】嵩天.Python语言程序设计.完成两个简单实例(温度转换和绘图)

    [博客导航] [Python相关] 目标 使用PyCharm,完成两个小实例的编写和运行.一个是温度转换,一个是蟒蛇图形绘制. 过程 1.先设置project目录,虽然命名不是很正式,主要不太习惯软件 ...

  3. JetBrains 注册码

    C40PF37RR0-eyJsaWNlbnNlSWQiOiJDNDBQRjM3UlIwIiwibGljZW5zZWVOYW1lIjoiemhhbmcgeW9uZyIsImFzc2lnbmVlTmFtZ ...

  4. JavaScript 函数闭包的应用

    一.模仿块级作用域 JavaScript 没有块级作用域的概念,那么可以模拟像java中将很多变量私有化封装起来,保护数据,防止数据泄漏,封装细节,这样安全性和可控性更高 function box(c ...

  5. YAML详解

    1   YAML简介 YAML,即YAML Ain’t Markup Language的缩写,YAML 是一种简洁的非标记语言.YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁 ...

  6. 【转】Android中保持Service的存活

    这几天一直在准备考试,总算有个半天时间可以休息下,写写博客. 如何让Service keep alive是一个很常见的问题. 在APP开发过程中,需要Service持续提供服务的应用场景太多了,比如闹 ...

  7. spring中基于注解使用AOP

    本文内容:spring中如何使用注解实现面向切面编程,以及如何使用自定义注解. 一个场景 比如用户登录,每个请求发起之前都会判断用户是否登录,如果每个请求都去判断一次,那就重复地做了很多事情,只要是有 ...

  8. odoo11 访问MSQL Server等第三发数据源

    odoo框架默认的访问时Postgres数据库,但在实际的应用场景中,不可避免的使用到其他数据库,所以有必要研究如何连接其他第三方数据库,这里分享下OCA的相关模块,具体的源代码在这里. 我将第三方的 ...

  9. AtCoDeerくんと選挙速報 / AtCoDeer and Election Report AtCoder - 2140 (按比例扩大)

    Problem Statement AtCoDeer the deer is seeing a quick report of election results on TV. Two candidat ...

  10. Django rest framework(6)----序列化(2)

    为什么要序列化 django 查询数据库返回的类型是  queryset 类型 而我们和前端通信使用的大多数是json类型,这个时候我们需要把 queryset的数据类型转换成python的数据类型然 ...