欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

SQL Server ConnectionString 連接字符串和身份

系統(tǒng) 2913 0

?

SQL Server 連接字符串和身份驗證

?

SQL Server .NET Data Provider 連接字符串包含一個由一些屬性名/值對組成的集合。每一個屬性/值對都由分號隔開。
?????????PropertyName1=Value1;PropertyName2=Value2;PropertyName3=Value3;.....
同樣,連接字符串必須包含SQL Server實例名稱:
?????????Data Source=ServerName;
?????????使用本地的SQL Server(localhost),如果想要使用遠程服務(wù)器運行,應(yīng)該在示例對象中把正確的服務(wù)器賦給Data Source 屬性。此外,還必須指定所支持的兩種身份驗證方法(即Windows身份驗證和SQL Server身份驗證)中的其中一種。Windows身份驗證使用Windows登錄用戶身份連接數(shù)據(jù)庫,而SQL身份驗證要求顯式地指定SQL Server用戶ID和密碼。要想使用Windows身份驗證,必須在連接字符串中包括 Integrated Security 屬性:
?????????Data Source=ServerName;Integrated Security=True;

?????????默認情況下,Integrated Security 屬性為 False ,這意味著將禁用Windows身份驗證。如果沒有顯式地把這個屬性的值設(shè)置為True,連接將使用SQL Server身份驗證,因此,必須提供SQL Server用戶ID和密碼。Integrated Security屬性還能識別的其他值只有SSPI(Security Support Provider Interface,安全性支持提供者接口).在所有的Windows NT操作系統(tǒng)上,其中包括Windows NT 4.0、2000、XP,都支持值SSPI。它是使用Windows身份驗證時可以使用的惟一接口,相當(dāng)于把Integrated Security 屬性值設(shè)置為True。


?????????在Windows身份驗證模式中,SQL Server使用Windows的安全子系統(tǒng)對用戶連接進行有效性驗證。即使顯示地指定用戶ID和密碼,SQL Server也不檢查連接字符串中的用戶ID和密碼。因為只有Windows NT、2000、XP支持SSPI,因此如果正使用的是這些操作系統(tǒng),則只能使用Windows集成的安全策略去連接SQL Server。不論使用哪一個操作系統(tǒng),當(dāng)使用SQL Server身份驗證時,必須在連接字符串中指定用戶ID和密碼:
Data Source=ServerName;User ID=donaldx;Password=unbreakable

?????????默認情況下,SQL Server .NET Data Provider連接指定用戶的默認數(shù)據(jù)庫,當(dāng)在數(shù)據(jù)庫中創(chuàng)建用戶時,可以設(shè)置用戶的默認數(shù)據(jù)庫。此外,也可以在任意時間更改用戶的默認數(shù)據(jù)庫。例如,系統(tǒng)管理員的默認數(shù)據(jù)庫是master。如果想要連接不同的數(shù)據(jù)庫,應(yīng)該指定數(shù)據(jù)庫的名稱:
Data Source=ServerName;Integrated Security=SSPI;Initial Catalog=Northwind

?????????每一種身份驗證都有它的優(yōu)點和缺點。Windows身份驗證使用單一的用戶信息庫源,因此,不需要為數(shù)據(jù)庫訪問去分別配置用戶。連接字符串不包含用戶ID和密碼,因此消除了把用戶ID和密碼暴露給未授權(quán)的用戶的危險。可以在Active Directory中管理用戶和他們的角色,而不必在SQL Server中顯式地配置他們的屬性。
Windows身份驗證的缺點是,它要求客戶通過Windows的安全子系統(tǒng)支持的安全通道去連接SQL Server。如果應(yīng)用種序需要通過不安全的網(wǎng)絡(luò)(例如Internet)連接SQL Server,Windows身份驗證將不工作。此外,這種身份驗證方法也部分地把管理數(shù)據(jù)庫訪問控制的責(zé)任從DBA身上轉(zhuǎn)移到了系統(tǒng)管理員身上,這在確定的環(huán)境中也許是一個問題。
?????????一般而言,在設(shè)計通用的應(yīng)用程序時,為了使用Windows身份驗證,將會對一些方面進行加強。大多數(shù)公司的數(shù)據(jù)庫都駐留在比較健壯的Windows服務(wù)器操作系統(tǒng)上,那些操作系統(tǒng)都支持Windows身份驗證。數(shù)據(jù)訪問層和數(shù)據(jù)表示層的分離也促進了把數(shù)據(jù)訪問代碼封裝在中間層組件思想的應(yīng)用,中間層組件通常運行在具有數(shù)據(jù)庫服務(wù)器的內(nèi)部網(wǎng)絡(luò)中。當(dāng)這樣設(shè)計時,就不需要通過不安全通道建立數(shù)據(jù)庫連接。除此之外,Web服務(wù)也使直接連接不同域中數(shù)據(jù)庫的需要大減少。



來自: http://www.cnblogs.com/lanse777/archive/2007/03/28/691757.html



?

數(shù)據(jù)庫的連接性已經(jīng)發(fā)展成為應(yīng)用程序開發(fā)的一個標(biāo)準(zhǔn)方面。數(shù)據(jù)庫連接字符串現(xiàn)在已經(jīng)成為每個項目的標(biāo)準(zhǔn)必備條件。我發(fā)現(xiàn)自己為了找到所需要的句法,經(jīng)常要從另外一個應(yīng)用程序中復(fù)制連接字符串或者進行一次搜索。這個在與SQL Server交互操作時更是如此,因為它有太多的連接字符串選項。現(xiàn)在就讓我們來研究一下連接字符串的眾多方面。

連接字符串

在對象實例化或者建立期間,數(shù)據(jù)庫連接字符串通過屬性或方法被傳遞到必要的對象。連接字符串的格式是一個以分號為界,劃分鍵/值參數(shù)對的列表。 列表A 中包括了一個C#中的例子,說明了怎樣用創(chuàng)建SqlConnection對象的方法連接到SQL Server(實際的連接字符串是通過對象的ConnectionString屬性分配的)。 列表B 中包括的是VB.NET的版本。

列表 A

string cString = "Data Source=server;Initial Catalog=db;User ID=test;Password=test;";
SqlConnectionconn = new SqlConnection();
conn.ConnectionString = cString;
conn.Open(); ?

列表 B

Dim cString As String
cString = "Data Source=server;Initial Catalog=db;User ID=test;Password=test;"

Dim conn As SqlConnection = New SqlConnection()
conn.ConnectionString = cString
conn.Open()

連接字符串會指定數(shù)據(jù)庫服務(wù)器和數(shù)據(jù)庫,以及訪問數(shù)據(jù)庫必需的用戶名和密碼。但是這種格式并不是對所有數(shù)據(jù)庫交互都適用,它的確有許多可用的選項,其中很多選項都有同義詞。

和Data Source(數(shù)據(jù)源)、Initial Catalog(初始編目)、User ID(用戶ID)、和Password(密碼)等元素一起,下面這些選項都是可用的:

  • Application Name (應(yīng)用程序名稱): 應(yīng)用程序的名稱。如果沒有被指定的話,它的值為.NET SqlClient Data Provider(數(shù)據(jù)提供程序).
  • AttachDBFilename extended properties (擴展屬性)/ Initial File Name (初始文件名): 可連接數(shù)據(jù)庫的主要文件的名稱,包括完整路徑名稱。數(shù)據(jù)庫名稱必須用關(guān)鍵字數(shù)據(jù)庫指定。
  • Connect Timeout (連接超時)/ Connection Timeout (連接超時): 一個到服務(wù)器的連接在終止之前等待的時間長度(以秒計),缺省值為15。
  • Connection Lifetime (連接生存時間): 當(dāng)一個連接被返回到連接池時,它的創(chuàng)建時間會與當(dāng)前時間進行對比。如果這個時間跨度超過了連接的有效期的話,連接就被取消。其缺省值為0。
  • Connection Reset (連接重置): 表示一個連接在從連接池中被移除時是否被重置。一個偽的有效在獲得一個連接的時候就無需再進行一個額外的服務(wù)器來回運作,其缺省值為真。
  • Current Language (當(dāng)前語言): SQL Server語言記錄的名稱。
  • Data Source (數(shù)據(jù)源)/ Server (服務(wù)器)/ Address (地址)/ Addr (地址)/ Network Address (網(wǎng)絡(luò)地址): SQL Server實例的名稱或網(wǎng)絡(luò)地址。
  • Encrypt (加密): 當(dāng)值為真時,如果服務(wù)器安裝了授權(quán)證書,SQL Server就會對所有在客戶和服務(wù)器之間傳輸?shù)臄?shù)據(jù)使用SSL加密。被接受的值有true(真)、false(偽)、yes(是)和no(否)。
  • Enlist (登記): 表示連接池程序是否會自動登記創(chuàng)建線程的當(dāng)前事務(wù)語境中的連接,其缺省值為真。
  • Database (數(shù)據(jù)庫)/ Initial Catalog (初始編目) :數(shù)據(jù)庫的名稱。
  • Integrated Security (集成安全)/ Trusted Connection (受信連接): 表示W(wǎng)indows認證是否被用來連接數(shù)據(jù)庫。它可以被設(shè)置成真、偽或者是和真對等的sspi,其缺省值為偽。
  • Max Pool Size (連接池的最大容量): 連接池允許的連接數(shù)的最大值,其缺省值為100。
  • Min Pool Size (連接池的最小容量): 連接池允許的連接數(shù)的最小值,其缺省值為0。
  • Network Library (網(wǎng)絡(luò)庫)/ Net (網(wǎng)絡(luò)): 用來建立到一個SQL Server實例的連接的網(wǎng)絡(luò)庫。支持的值包括: dbnmpntw (Named Pipes)、dbmsrpcn (Multiprotocol/RPC)、dbmsvinn(Banyan Vines)、dbmsspxn (IPX/SPX)和dbmssocn (TCP/IP)。協(xié)議的動態(tài)鏈接庫必須被安裝到適當(dāng)?shù)倪B接,其缺省值為TCP/IP。
  • Packet Size (數(shù)據(jù)包大小): 用來和數(shù)據(jù)庫通信的網(wǎng)絡(luò)數(shù)據(jù)包的大小。其缺省值為8192。
  • Password (密碼)/ Pwd 與帳戶名相對應(yīng)的密碼。
  • Persist Security Info (保持安全信息): 用來確定一旦連接建立了以后安全信息是否可用。如果值為真的話,說明像用戶名和密碼這樣對安全性比較敏感的數(shù)據(jù)可用,而如果值為偽則不可用。重置連接字符串將重新配置包括密碼在內(nèi)的所有連接字符串的值。其缺省值為偽。
  • Pooling (池): 確定是否使用連接池。如果值為真的話,連接就要從適當(dāng)?shù)倪B接池中獲得,或者,如果需要的話,連接將被創(chuàng)建,然后被加入合適的連接池中。其缺省值為真。
  • User ID (用戶 ID ): 用來登陸數(shù)據(jù)庫的帳戶名。
  • Workstation ID (工作站 ID ): 連接到SQL Server的工作站的名稱。其缺省值為本地計算機的名稱。

    ?




    ?

    學(xué)生做了一個題庫系統(tǒng),用C#寫的ASP應(yīng)用程序,數(shù)據(jù)庫用SQL Server2000,交給我看看。放到服務(wù)器上后,出現(xiàn)問題。反復(fù)調(diào)整后發(fā)現(xiàn)了解決的方法,其實很簡單。回過頭去看了看,發(fā)現(xiàn)是自己對SQL Server的連接語句和用戶權(quán)限的認識不足所造成的。下面將我的一些心得以及網(wǎng)上查到的有關(guān)資料匯集一下,以為后來者借鑒,當(dāng)然很膚淺。

    1、SQL Server的連接方式

    以本地服務(wù)器(LocalHost),數(shù)據(jù)庫(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 用戶身份登陸數(shù)據(jù)庫;如果設(shè)置為True,Yes 或 SSPI,這不能出現(xiàn)Uid和Pwd,將以Windows用戶省份登陸數(shù)據(jù)庫。強烈推薦用后一種形式,安全性更高。
    c.Integrated Security和Persist Security Info同時出現(xiàn),后者設(shè)置為False,可保證信息安全。

    更多字符串連接說明請看MSDN:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlConnectionClassConnectionStringTopic.asp

    連接字符串的書寫應(yīng)該熟練后應(yīng)該沒有什么問題,我是再看別人的程序,說實話有些東東還真不清楚。但連接不上的問題出現(xiàn)后,得解決呀。所以必須要弄懂這些關(guān)鍵字的意義,修改后再測試。

    2、SQL Server的用戶設(shè)置
    問題一、采用連接字符串
    SqlConnection conn = new SqlConnection(" Uid=sa;Pwd=***;Initial Catalog=Northwind;Data Source=LocalHost;Connect Timeout=900");
    錯誤:
    用戶"sa"登陸失敗,沒有可信任的Sql Server連接
    查資料后找到解決方法:
    原因:Sql Server的驗證方式需要設(shè)置為Sql Server驗證和Windows集成驗證的混合方式,如果僅設(shè)置為后一種方式,就會出像上述問題
    解決:運行Sql Server的企業(yè)管理器,點擊服務(wù)器,在右鍵菜單中選擇屬性,選安全性,更改驗證方式即可
    問題二、采用連接字符串
    SqlConnection conn = new SqlConnection("Data Source=LocalHost;Integrated Security=SSPI;Initial Catalog=Northwind;");
    錯誤:
    用戶"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)一的方式。

  • ? from: http://www.cnblogs.com/yongqiudeng/archive/2008/02/12/1067342.html

    SQL Server ConnectionString 連接字符串和身份驗證


    更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

    微信掃碼或搜索:z360901061

    微信掃一掃加我為好友

    QQ號聯(lián)系: 360901061

    您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

    【本文對您有幫助就好】

    您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

    發(fā)表我的評論
    最新評論 總共0條評論
    主站蜘蛛池模板: 精品综合网 | 国产精品久久久久久久久久日本 | 亚洲精品中文字幕乱码一区二区 | 香港毛片| 色丁香久久 | 久久亚 | 福利片在线观看 | 国产精品日日摸夜夜添夜夜av | 亚洲成色www久久网站 | 国产成人精品视频频 | 亚洲精品国产电影 | 毛片免费在线观看 | 欧美一级片在线视频 | 欧美国产中文字幕 | 性一级录像片片视频免费看 | 国产成人精品福利站 | 五月天婷婷缴情五月免费观看 | 色老头久久网 | 亚洲精品在线免费 | 99精品视频在线视频免费观看 | 亚洲一区视频在线 | 亚洲涩综合 | 久久思思爱 | 国产精品无码人妻系列AV | 亚洲福利视频网 | 久久69精品久久久久久国产越南 | 日本老妇人乱视频 | 五月婷婷在线观看视频 | 操人视频在线观看 | 日韩日日夜夜 | 激情五月激情综合网 | 日韩一区精品视频 | 久草在线视频精品 | 国产精品尤物在线观看一区 | 成人中文字幕在线 | 激情 一区| 国产亚洲综合一区二区 | 91免费国产在线观看 | 艹逼网| 久久精品国产999大香线焦 | 国产黄色网址在线观看 |