1. 程式人生 > >MS SQL Server 資料庫連線字串詳解

MS SQL Server 資料庫連線字串詳解

問題  超時時間已到。在從池中獲取連線之前超時時間已過。出現這種情況可能是因為所有池連線都已被使用並已達到最大池大小。

解決辦法 
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. 在程式碼裡面 , 把未關閉的連線關閉  2. 擴大共享池 , 方法如下 :解決方法可以是修改連線池的連線生存期 , 因為預設值是 6

(C# SQL Server) 資料庫連線字串

Debug 一個SQL Server 2008 資料庫連線的問題,老是提示: [67944] System.Data.SqlClient.SqlException (0x80131904): 在與 SQL Server 建立連線時出現與網路相關

【走馬觀花】SQL SERVER 2012 新增函式-01.字串函式CONCAT

SQLSERVER 2012新增了兩個字串函式CONCAT和FORMAT。首先介紹一下CONCAT,CONCAT函式的作用是可以返回多個字串拼接後的結果。簡單示例:select CONCAT('a','b') as R1 /* R1 ---- ab */ select 'a'

[資料庫連線字串] SQL Server 2005 連線字串

Driver={SQL Native Client};Server=./SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;

Kettle (PDI) 連線 MS SQL server資料庫

先去微軟下載JDBC驅動:https://www.microsoft.com/en-US/download/details.aspx?id=11774解壓後得到的目錄裡有 jre7 jre8 和 aut

SQL Server 事務隔離級別

完成 sql 事務 create 事務隔離 測試數據 span read type off SQL 事務隔離級別 概述 隔離級別用於決定如果控制並發用戶如何讀寫數據的操作,同時對性能也有一定的影響作用。 步驟 事務隔離級別通過影響讀操作來間接地影響寫操作;可以在回

SQL Server 存儲過程

功能 需要 作用 sel 可能 csdn () 長度 緩存 轉自:https://blog.csdn.net/younghaiqing/article/details/62884658 一. 什麽是存儲過程 系統存儲過程是系統創建的存儲過程,目的在於能夠方便的從系統表中查詢

Sql Server存儲過程

ont 提高 exe object 不返回 src 應用程序 存在 color 基本存儲過程 if (exists (select * from sys.objects where name = ‘GetUser‘)) drop proc GetUser --判斷存儲

Sql server資料庫連線Oracle庫的步驟

本地使用環境 作業系統: win10 64  ,SQL Server 2012 ,Oracle  Server 11g 第一步:安裝好oracle客戶端,並配置好TNS資訊 ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = T

C#與SQL Server資料庫連線

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; namesp

ms SQL server資料庫備份、壓縮與SQL資料庫資料處理的方法

ms SQL server資料庫備份、壓縮與SQL資料庫資料處理的方法 一、備份資料庫 1、開啟SQL企業管理器,在控制檯根目錄中依次點開Microsoft SQL Server 2、SQL Server組-->雙擊開啟你的伺服器-->雙擊開啟資料庫目錄 3、選擇你的資料庫名稱(如論

Java呼叫SQL Server的儲存過程

                本文較長,包含了如下幾部分                    1使用不帶引數的儲存過程     使用 JDBC 驅動程式呼叫不帶引數的儲存過程時,必須使用 call SQL 轉義序列。不帶引數的 call 轉義序列的語法如下所示: {call procedure-name}

mvc3 SQL Server資料庫連線程式碼

  <connectionStrings>     <add name="EF" connectionString="Data Source=.\sqlexpress ;Initial Catelog=資料庫名稱;User ID=資料庫登入名;Passwo

SQL Server資料庫SP命令祥(轉帖)

1、資料庫:(1)sp_helpdb:報告有關指定資料庫或所有資料庫的資訊。例:sp_helpdb   --顯示所有資料庫資訊(名稱、大小等)例:sp_helpdb Recruitment   --顯示Recruitment資料庫資訊(名稱、大小等)(2)sp_renamed

SQL Server資料庫SP命令祥

sp_renamedb ’pubs’,’pub’  --將名為pubs的資料庫改名為pub(3)sp_dboption:顯示或更改資料庫選項。不能在 master 或 tempdb 資料庫上使用 sp_dboption。例:sp_dboption ’Recruitment’,

SQL Server 2008連線字串寫法大全

一、.NET Framework Data Provider for SQL Server型別:.NET Framework類庫使用:System.Data.SqlClient.SqlConnection廠商:Microsoft標準安全連線Data Source = myServerAddress;Initi

SQL Server中,觸發器

觸發器是一種特殊型別的儲存過程,它不同於之前的我們介紹的儲存過程。觸發器主要是通過事件進行觸發被自動呼叫執行的。而儲存過程可以通過儲存過程的名稱被呼叫。 Ø 什麼是觸發器     觸發器對錶進行插入、更新、刪除的時候會自動執行的特殊儲存過程。觸發器一般用在check約束更加複雜的約束上面。觸發器和普通的儲存

【轉】SQL Server 事務隔離級別

SQL 事務隔離級別 概述      隔離級別用於決定如果控制併發使用者如何讀寫資料的操作,同時對效能也有一定的影響作用。 步驟 事務隔離級別通過影響讀操作來間接地影響寫操作;可以在回話級別上設定事務隔離級別也可以在查詢(表級別)級別上設定事務隔離級別。事務隔離級別總共有6個隔離級別:READ UNC

WinForm(C#)第一篇:登入頁面實現+SQL Server資料庫連線方式

前言 最近見習,要完成的一個作業。主要是WinForm(C#)開發,本想參考網上的Demo,但一直沒找到合適入門的,因此打算自己記錄一下整個開發過程,給予隊友和後面學習的人一些方便。 當然,我也是第一次學習WinForm,技術不夠成熟,程式碼也可能不夠

資料庫連線與程式碼實現

一、資料庫連線池概念        資料庫連線池:負責分配、管理和釋放資料庫連線,它允許應用程式重複使用一個現有的資料庫連線,而不是再重新建立一個;釋放空閒時間超過最大空閒時間的資料庫連線來避免因為沒有釋放資料庫連線而引起的資料庫連線遺漏。這項技術能明顯提高對資料庫操作的效