1、SQL Server的連接方式
以本地服務(wù)器(LocalHost),數(shù)據(jù)庫(Northwind)為例,可以有以下一些連接方式
SqlConnection conn=new SqlConnection( "Server=LocalHost;Integrated Security=SSPI;Database=Northwind");
SqlConnection conn = new SqlConnection("Da
SqlConnection conn = new SqlConnection(" Da
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;Da
心得:
a. Server和Database,Da
b. Integrated Security默認值是False,此時需要提供Uid和Pwd,即將以Sql Server 用戶身份登陸數(shù)據(jù)庫;如果設(shè)置為True,Yes 或 SSPI,這不能出現(xiàn)Uid和Pwd,將以Windows用戶省份登陸數(shù)據(jù)庫。強烈推薦用后一種形式,安全性更高。
c. Integrated Security和Persist Security Info同時出現(xiàn),后者設(shè)置為False,可保證信息安全。
連接字符串的書寫應(yīng)該熟練后應(yīng)該沒有什么問題,我是再看別人的程序,說實話有些東東還真不清楚。但連接不上的問題出現(xiàn)后,得解決呀。所以必須要弄懂這些關(guān)鍵字的意義,修改后再測試。
2、SQL Server的用戶設(shè)置
問題一、采用連接字符串
SqlConnection conn = new SqlConnection(" Uid=sa;Pwd=***;Initial Catalog=Northwind;Da
錯誤:
用戶"sa"登陸失敗,沒有可信任的Sql Server連接
查資料后找到解決方法:
原因:Sql Server的驗證方式需要設(shè)置為Sql Server驗證和Windows集成驗證的混合方式,如果僅設(shè)置為后一種方式,就會出像上述問題
解決:運行Sql Server的企業(yè)管理器,點擊服務(wù)器,在右鍵菜單中選擇屬性,選安全性,更改驗證方式即可
問題二、采用連接字符串
SqlConnection conn = new SqlConnection("Da
錯誤:
用戶"computername\IWAM_servername"登陸失敗
原因:SQL Server的登陸用戶中不包括IWAM_servername
解決方法:運行Sql Server的企業(yè)管理器,點擊服務(wù)器,選安全性,選登陸,新建登陸中加入IWAM_servername,并配備相應(yīng)的權(quán)限,如只能訪問Northwind數(shù)據(jù)庫,數(shù)據(jù)庫的角色設(shè)置為public和db_owner。
3、關(guān)于連接的安全性
最好使用SSPI的集成安全方式連接數(shù)據(jù)庫,而sa用戶的方式連接會存在安全隱患,我認為主要是因為在安裝SQL Server時,經(jīng)常會為了訪問的方便設(shè)置sa的密碼為空,黑客一旦讓sa成為管理員,就可以獲得對系統(tǒng)的所有訪問權(quán)限。所以為了數(shù)據(jù)庫的安全,可以設(shè)置 SQL server的訪問用戶只能經(jīng)過windows集成驗證,設(shè)置sa的安全密碼,加強數(shù)據(jù)庫的安全性。當(dāng)然設(shè)置為windows集成驗證后,數(shù)據(jù)庫的性能和訪問的靈活性勢必會受到影響,管理員可以針對每一個數(shù)據(jù)庫設(shè)置不同的驗證方式,而不必對SQL server設(shè)置成統(tǒng)一的方式。
如果端口不是默認的了,應(yīng)寫成 Server=LocalHost,端口號