程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL server 數據庫連接方式分析

SQL server 數據庫連接方式分析

編輯:關於SqlServer

SQL server 數據庫連接方式圖示:

ODBC和OLEDB連接的區別

ODBC(開放數據庫互連):是Microsoft引進的一種早期數據庫接口技術。它實際上是ADO的前身。早期的數據庫連接是非常困難的. 每個數據庫的格式都不一樣,開發者得對他們所開發的每種數據庫的底層API有深刻的了解. 因此,能處理各種各樣數據庫的通用的API就應運而生了. 也就是現在的ODBC(Open Database Connectivity), ODBC是人們在創建通用API的早期產物. 有許多種數據庫遵從了這種標准,被稱為ODBC兼容的數據庫. 

OLEDB(對象鏈接和嵌入數據庫)位於ODBC層與應用程序之間. 在你的ASP頁面裡,ADO是位於OLEDB之上的"應用程序". 你的ADO調用先被送到OLEDB,然後再交由ODBC處理. 你可以直接連接到OLEDB層,如果你這麼做了,你將看到服務器端游標(recordset的缺省的游標,也是最常用的游標)性能的提升.

用odbc連接數據庫: 
odbc中提供三種dsn,它們的區別很簡單:用戶dsn只能用於本用戶。系統dsn和文件dsn的區別只在於連接信息的存放位置不同:系統dsn存放在odbc儲存區裡,而文件dsn則放在一個文本文件中。 
它們的創建方法就不說了。 
在asp中使用它們時,寫法如下:

 
A.sql server: 
用系統dsn: connstr="DSN=dsnname; UID=xx; PWD=xxx;DATABASE=dbname" 
用文件dsn: connstr="FILEDSN=xx;UID=xx; PWD=xxx;DATABASE=dbname" 
還可以用連接字符串(從而不用再建立dsn): 
connstr="DRIVER={SQL SERVER};SERVER=servername;UID=xx;PWD=xxx" 
B.access: 
用系統dsn: connstr="DSN=dsnname" 
(或者為:connstr="DSN=dsnname;UID=xx;PWD=xxx") 
用文件dsn: connstr="FILEDSN=xx" 
還可以用連接字符串(從而不用再建立dsn): 
connstr="DRIVER={Microsoft Access Driver};DBQ=d:\abc\abc.mdb" 

用oledb連接數據庫,寫法如下: 


A.sql server: 
connstr="PROVIDER=SQLOLEDB; 
DATA SOURCE=servername;UID=xx;PWD=xxx;DATABASE=dbname" 
B.access: 
connstr="PROVICER=MICROSOFT.JET.OLEDB.4.0; 
DATA SOURCE=c:\abc\abc.mdb"
值得注意的是,OLE DB對ODBC的兼容性,允許OLE DB訪問現有的ODBC數據源。其優點很明顯,由於ODBC相對OLE DB來說使用得更為普遍,因此可以獲得的ODBC驅動程序相應地要比OLE DB的要多。這樣不一定要得到OLE DB的驅動程序,就可以立即訪問原有的數據系統。
提供者位於OLE DB層,而驅動程序位於ODBC層。如果想使用一個ODBC數據源,需要使用針對ODBC的OLE DB提供者,它會接著使用相應的ODBC驅動程序。如果不需要使用ODBC數據源,那麼可以使用相應的OLE DB提供者,這些通常稱為本地提供者(native provider)。
可以清楚地看出使用ODBC提供者意味著需要一個額外的層。因此,當訪問相同的數據時,針對ODBC的OLE DB提供者可能會比本地的OLE DB提供者的速度慢一些。

OLEDB方式連接

Sql身份驗證模式:Provider="SQLOLEDB;data source=server_name;initial catalog=databasename;uid=username;pwd=password;"

Windows身份驗證模式:ConnectString=”Provider=SQLOLEDB;Data Source=server_name;DataBase=databasename; Integrated Security=SSPI;Persist Security=true”

 

      注釋:(此兩種方式的卻別僅在於windows驗證中用Integrated Security=SSPI代替了sql驗證中的uid=username;pwd=password語句(即指明用戶名、密碼語句))

    1.Provider=SQLOLEDB:提供者為SQLOLEDB(此為固定)

    2.Integrated Security=SSPI:

    集成安全機制采用SSPI
    SSPI是Security Support Provider Interface(Microsoft安全支持提供器接口)SSPI是定義得較全面的公用API,用來獲得驗證、信息完整性、信息隱私等集成安全服務,以  及用於所有分布式應用程序協議的安全方面的服務。

    設置Integrated Security為 True 的時候,采用windows身份驗證模式。只有設置為 False 或省略該項的時候,采用 UserID, PWD 來連接。Integrated Security 可以設置為: True, false, yes, no ,還可以設置為:sspi ,相當於 True,建議用這個代替 True。

    3.Persist Security Info:堅持安全信息

    Persist Security Info屬性的意思是表示是否保存安全信息,其實可以簡單的理解為"ADO在數據庫連接成功後是否保存密碼信息",True表示保存,False表示不保存.ADO缺省為False(即可有可無).總體來說,如果數據庫連接成功後不再需要連接的密碼,出於安全性考慮,還是建議將Persist Security Info設為false,以防止後門程序取得數據庫連接的密碼.

    4.initial catalog等同於database(可以互換):指定連接數據庫的名字(如果省略則連接的是當前用戶名的默認數據庫,詳情見下文)

    5.DATA SOURCE是SQL服務器的名字
在data source裡用localhost或(local)或“.”都代表本地服務器. 也可用本機的外網IP地址 例如:data source=192.168.24.71;

 

ODBC方式連接

 使用數據源方式

 此種方式主要是配置odbc數據源,有三種方式,系統dsn、用戶dsn、文件dsn。具體方法這裡不作介紹。配置完數據源以後即可連接:

   用系統dsn:  connectstring= "DSN=dsnname;   UID=username;   PWD=password"

 

   用文件dsn:   connectstring = "FILEDSN=filedsnname; UID= username;   PWD=password " 

 

 

 使用ODBC驅動方式:

   使用ODBC 驅動程序, 免去了配置ODBC數據源的步驟, 可以利用ODBC 驅動程序直接與數據庫相連接。

    ConnectString="Driver={sql server};server=servername;database=databasename;uid=username;pwd=password;"

 

    詳細注釋(關於windows身份驗證和SQL身份驗證):

    Windows身份驗證使用Windows登錄用戶身份連接數據庫,而SQL身份驗證要求顯式地指定SQL Server用戶ID和密碼。要想使用Windows身份驗證,必須在連接字符串中包括 Integrated Security 屬性:
                            Data Source=ServerName;Integrated Security=True;

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


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

    默認情況下,SQL Server 每一個用戶都可指定一個默認數據庫,當在數據庫中創建用戶時,可以設置用戶的默認數據庫。此外,也可以在任意時間更改用戶的默認數據庫。:如下圖

設置好默認數據庫後在連接時可以不指定database(或initial catalog)的值即可連接默認數據庫

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved