之前一直用開C#連接SQL都沒有任何問題,今天用SQL語句還原數據庫時卻出錯提示數據庫被佔用中,用SQL Quary Analyzer查選
select * from master..sysprocesses where dbid=db_id('db')
顯示有多條狀態為[Sleeping]的連線,檢查了很久才發現問題所在,原來在connecting string
private const string DbConnString = "Data Source = {0};Initial Catalog = {1};Pooling=True;Min Pool Size=3;Max Pool Size=200;Connect Timeout = 30;Integrated Security = False;User ID=sa;Password=";
因為之前有大量查詢,為了節省資源使用了pooling,所以導致連線就算關閉了,都還在佔用中(在連線池),所以還原就會出錯,因為線池還在佔用資源未釋放,取消pooling就可以了。
private const string DbConnString = "Data Source = {0};Initial Catalog = {1};Pooling=False;Connect Timeout = 30;Integrated Security = False;User ID=sa;Password=";
ps.上述連線字串因為懶是寫在代碼的,實際使用時還是寫在xml較好