1、SQL Server的串連方式以本機伺服器(LocalHost),資料庫(Northwind)為例,可以有以下一些串連方式SqlConnection conn=new SqlConnection( "Server=LocalHost;Integrated Security=SSPI;Database=Northwind");SqlConnection conn = new SqlConnection("Data Source=LocalHost;Integrated Security=SSPI;Initial Catalog=Northwind;");SqlConnection conn = new SqlConnection(" Data Source=LocalHost;Initial Catalog=Northwind;Integrated Security=SSPI;Persist Security Info=False;Workstation Id=XURUI;Packet Size=4096; ");
SqlConnection myConn = new SqlConnection("Persist Security Info=False;Integrated Security=SSPI;Database=northwind;Server=LocalHost");
SqlConnection conn = new SqlConnection(" Uid=sa;Pwd=***;Initial Catalog=Northwind;Data Source=LocalHost;Connect Timeout=900");
心得:a. Server和Database,Data Source和Initial Catalog配對使用的,可以互相替換(見笑)
b. Integrated Security預設值是False,此時需要提供Uid和Pwd,即將以Sql Server 使用者身份登陸資料庫;如果設定為True,Yes 或 SSPI,這不能出現Uid和Pwd,將以Windows使用者省份登陸資料庫。強烈推薦用後一種形式,安全性更高。
c. Integrated Security和Persist Security Info同時出現,後者設定為False,可保證資訊安全。
連接字串的書寫應該熟練後應該沒有什麼問題,我是再看別人的程式,說實話有些東東還真不清楚。但串連不上的問題出現後,得解決呀。所以必須要弄懂這些關鍵字的意義,修改後再測試。
2、SQL Server的使用者佈建
問題一、採用連接字串
SqlConnection conn = new SqlConnection(" Uid=sa;Pwd=***;Initial Catalog=Northwind;Data Source=LocalHost;Connect Timeout=900");
錯誤:
使用者"sa"登陸失敗,沒有可信任的Sql Server串連
查資料後找到解決方案:
原因:Sql Server的驗證方式需要設定為Sql Server驗證和Windows整合驗證的混合方式,如果僅設定為後一種方式,就會出像上述問題
解決:運行Sql Server的企業管理器,點擊伺服器,在右鍵菜單中選擇屬性,選安全性,更改驗證方式即可
問題二、採用連接字串
SqlConnection conn = new SqlConnection("Data Source=LocalHost;Integrated Security=SSPI;Initial Catalog=Northwind;");
錯誤:
使用者"computername\IWAM_servername"登陸失敗
原因:SQL Server的登陸使用者中不包括IWAM_servername
解決方案:運行Sql Server的企業管理器,點擊伺服器,選安全性,選登陸,建立登陸中加入IWAM_servername,並配備相應的許可權,如只能訪問Northwind資料庫,資料庫的角色設定為public和db_owner。
3、關於串連的安全性
最好使用SSPI的整合安全方式串連資料庫,而sa使用者的方式串連會存在安全隱患,我認為主要是因為在安裝SQL Server時,經常會為了訪問的方便設定sa的密碼為空白,駭客一旦讓sa成為管理員,就可以獲得對系統的所有存取權限。所以為了資料庫的安全,可以設定 SQL server的訪問使用者只能經過windows整合驗證,設定sa的安全密碼,加強資料庫的安全性。當然設定為windows整合驗證後,資料庫的效能和訪問的靈活性勢必會受到影響,管理員可以針對每一個資料庫設定不同的驗證方式,而不必對SQL server設定成統一的方式。
如果連接埠不是預設的了,應寫成 Server=LocalHost,連接埠號碼