MSSQL Server的連線問題分析和解決(1)

2021-07-04 19:13:59 字數 1677 閱讀 1518

近期有收到不少關於mssql資料庫連線的問題,其中各個版本的都存在。

——這裡暫時不提sql2000的連線內容,因為此文與之沒有元件上存在的問題。

對於sql2005開始的一些連線問題,這裡引用csdn論壇 中的。如下圖1

一、當出現無法連線到伺服器的錯誤提示時,原因可能是單方面的,比如以下幾點:

1)本機網路無法到達伺服器。

×嘗試ping伺服器ip得知網路是否暢通。(前提是伺服器開啟icmp協議)

√關閉本地和伺服器防火牆。

2)伺服器sql服務沒有開啟。

×嘗試telnet 伺服器ip 1433得知sql服務是否正常。

√伺服器端開啟cmd輸入net start mssqlserver,開啟預設sql服務。

3)伺服器是否配置tcp/ip協議。

。。。以上這些都是解決問題的基本步驟,我們重點不在這裡。

二、其他資訊提示已成功與伺服器建立連線,但是在登入過程中發生錯誤。時,根據不同的錯誤**分析如下:

1)錯誤64,provider:tcp提供程式,error:0 - 指定的網路名不再可用。

當網路鏈路發生斷開時,通常會返回上述錯誤,無論是資料庫軟體還是其他應用軟體。所以首先檢查網路連線情況,排除網路斷開或超時的發生。

比較直接的方式是ping 伺服器ip -t,檢視是否存在資料庫丟包。

2)錯誤233,provider:共享記憶體提供程式,error:0 -管道的另一端上無任何程序。

當客戶端的連線數已經達到資料庫例項的連線配置最大值時,通常會返回上述錯誤,此時客戶端再也無法連線或成功登入資料庫。而此時有的朋友會做重啟os的動作,重啟後就可以再連線直至連線數被耗盡而再次err。

比較客觀的方式是正確配置例項的連線數,比如設定user connections為0。

三、如何檢查上述兩種連線的錯誤是否存在配置問題呢?

我們執行以下t-sql:

select

name,value,value_in_use

from

sys.configurations

where

name in(

'user connections',

'network packet size (b)',

'remote query timeout (s)',

'query wait (s)',

'min server memory (mb)',

'max server memory (mb)')

其中value是相應name的配置值,而value_in_use是目前正在使用的配置值,

各name分別是使用者連線數、網路資料報尺寸、遠端查詢超時數、查詢等待數以及最小和最大記憶體配置數。

這裡強調value和value_in_use的區別是,當兩個配置值不同時,表示我們已經執行了配置數的修改,但沒有做reconfigure來更新配置。

四、如何處理上述連線錯誤的問題呢?

對於錯誤233的連線數被耗盡這裡我們只能用專用管理員dac連線處理。當無法進行dac連線的處理方式,請移步發現無法連線dac的解決方法 處理。

在ssms中伺服器名稱前輸入 admin:伺服器ip 登入專用管理員模式,執行以下t-sql:

其中設定user connections為0,表示不限制使用者登入。

c 連線資料庫MS SQL Server

c 連線資料庫ms sql server 方法一 可以利用sqlconnectionstringbuilder,這樣不必去記住名稱。using system.data.sql using system.data.sqlclient sqlconnectionstringbuilder scsb ne...

MySQL python連線socket問題

python中使用mysqldb連線資料庫時出現以下錯誤 traceback most recent call last file home monitor user servermonitor.py line 206,in serverlist sqlquery getmngconn select...

MS SQL Server版本的選擇

這兩天尋思著將用了很久的sql server express edtion換一換,因為這畢竟是個免費版,很多功能,包括使用起來感覺不是很好,但是面對sql server的一大堆版本,我茫然了,不知道該怎麼選擇,真的感到很糾結,一般sql server有如下幾個版本,先來做個大概介紹.2,標準版 st...