習慣用OLEDB+鏈接字符串去連數據庫了,以前連sqlserver2000一直正常,由於換了個Y400的本本,裝了win7,而後順便sqlserver也搞了個64位的2005的。問題出現了,以前的數據庫都連不上了。開始找了很久沒找到緣由,後來發現2005中uid跟pwd替換了以前的user跟password。順便整理下鏈接字符串以下。 html
轉帖的一些文章整理下,原文連接在文中。 sql
SQL Native Client ODBC Driver
標準安全鏈接
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
您是否在使用SQL Server 2005 Express? 請在「Server」選項使用鏈接表達式「主機名稱/SQLEXPRESS」。
受信的鏈接
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;
"Integrated Security=SSPI" 與 "Trusted_Connection=yes" 是相同的。
鏈接到一個SQL Server實例
指定服務器實例的表達式和其餘SQL Server的鏈接字符串相同。
Driver={SQL Native Client};Server=myServerName/theInstanceName;Database=myDataBase;Trusted_Connection=yes;
指定用戶名和密碼
oConn.Properties("Prompt") = adPromptAlways
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase;
使用MARS (multiple active result sets)
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;MARS_Connection=yes;
"MultipleActiveResultSets=true"與MARS_Connection=yes"是相同的。
使用ADO.NET 2.0做爲MARS的模塊。 MARS不支持ADO.NET 1.0和ADO.NET 1.1。
驗證網絡數據
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;Encrypt=yes;
使用附加本地數據庫文件的方式鏈接到本地SQL Server Express實例
Driver={SQL Native Client};Server=./SQLExpress;AttachDbFilename=c:/asd/qwe/mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
爲什麼要使用Database參數?若是同名的數據庫已經被附加,那麼SQL Server將不會從新附加。
使用附加本地數據文件夾中的數據庫文件的方式鏈接到本地SQL Server Express實例
Driver={SQL Native Client};Server=./SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
爲什麼要使用Database參數?若是同名的數據庫已經被附加,那麼SQL Server將不會從新附加。
數據庫鏡像
Data Source=myServerAddress;Failover Partner=myMirrorServer;Initial Catalog=myDataBase;Integrated Security=True;
SQL Native Client OLE DB Provider
標準鏈接
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
您是否在使用SQL Server 2005 Express? 請在「Server」選項使用鏈接表達式「主機名稱/SQLEXPRESS」。
受信的鏈接
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;
"Integrated Security=SSPI"與"Trusted_Connection=yes"相同
鏈接到SQL Server實例
指定服務器實例的表達式和其餘SQL Server的鏈接字符串相同。
Provider=SQLNCLI;Server=myServerName/theInstanceName;Database=myDataBase;Trusted_Connection=yes;
使用賬號和密碼
oConn.Properties("Prompt") = adPromptAlways
oConn.Open "Provider=SQLNCLI;Server=myServerAddress;DataBase=myDataBase;
使用MARS (multiple active result sets)
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;MarsConn=yes;
"MultipleActiveResultSets=true"和"MARS_Connection=yes"是相同的。
使用ADO.NET 2.0做爲MARS的模塊。 MARS不支持ADO.NET 1.0和ADO.NET 1.1。
驗證網絡數據
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;Encrypt=yes;
使用附加本地數據庫文件的方式鏈接到本地SQL Server Express實例
Provider=SQLNCLI;Server=./SQLExpress;AttachDbFilename=c:/asd/qwe/mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
爲什麼要使用Database參數?若是同名的數據庫已經被附加,那麼SQL Server將不會從新附加。
使用附加本地數據文件夾中的數據庫文件的方式鏈接到本地SQL Server Express實例
Provider=SQLNCLI;Server=./SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
爲什麼要使用Database參數?若是同名的數據庫已經被附加,那麼SQL Server將不會從新附加。
數據庫鏡像
Data Source=myServerAddress;Failover Partner=myMirrorServer;Initial Catalog=myDataBase;Integrated Security=True;
SqlConnection (.NET)
標準鏈接
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
使用serverName/instanceName做爲數據源能夠指定SQL Server實例。
您是否在使用SQL Server 2005 Express? 請在「Server」選項使用鏈接表達式「主機名稱/SQLEXPRESS」。
Standard Security alternative syntax
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;
受信任的鏈接
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
Trusted Connection alternative syntax
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
鏈接到一個SQL Server的實例
指定服務器實例的表達式和其餘SQL Server的鏈接字符串相同。
Server=myServerName/theInstanceName;Database=myDataBase;Trusted_Connection=True;
來自WinCE設備的安全鏈接
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain/myUsername;Password=myPassword;
僅能用於CE設備。
帶有IP地址的鏈接
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
使用MARS (multiple active result sets)
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;MultipleActiveResultSets=true;
使用ADO.NET 2.0做爲MARS的模塊。 MARS不支持ADO.NET 1.0和ADO.NET 1.1。
使用附加本地數據庫文件的方式鏈接到本地SQL Server Express實例
Server=./SQLExpress;AttachDbFilename=c:/asd/qwe/mydbfile.mdf;Database=dbname;Trusted_Connection=Yes;
爲什麼要使用Database參數?若是同名的數據庫已經被附加,那麼SQL Server將不會從新附加。
使用附加本地數據文件夾中的數據庫文件的方式鏈接到本地SQL Server Express實例
Server=./SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
爲什麼要使用Database參數?若是同名的數據庫已經被附加,那麼SQL Server將不會從新附加。
使用在SQL Server Express實例上的用戶實例
Data Source=./SQLExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|/mydb.mdf;User Instance=true;
數據庫鏡像
Data Source=myServerAddress;Failover Partner=myMirrorServer;Initial Catalog=myDataBase;Integrated Security=True;
Asynchronous processing
Server=myServerAddress;Database=myDataBase;Integrated Security=True;Asynchronous Processing=True;
Sql Server2005鏈接字符串總結
SqlConnection (.NET) 數據庫
標準安全鏈接 express
如下是語法格式:
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
|
使用"服務器名/實例名"的格式做爲Data Source來鏈接到一個Sql Server服務器上的一個實例。 windows
你用過sql server 2005 Express麼?不要忘記服務器的語法「Servername/SQLEXPRESS」(你要把Servername替換爲裝有sql server 2005 Express的計算機的名字) 安全
標準鏈接的另外一種語法 服務器
這個鏈接字符串和前一個的做用是同樣的,只因此放到這裏是爲了說明有些鏈接參數帶有相同的效果。 網絡
如下是語法格式:
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;
|
信任的鏈接 app
如下是語法格式:
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
|
信任鏈接的另外一種語法 asp.net
這個鏈接字符串和前一個的做用是同樣的,只因此放到這裏是爲了說明有些鏈接參數帶有相同的效果。
如下是語法格式:
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
|
鏈接到數據庫實例
這個指名Sql Server 實例的語法中的server參數的值對全部鏈接Sql Server的字符串相同。
如下是語法格式:
Server=myServerName/theInstanceName;Database=myDataBase;Trusted_Connection=True;
|
信任鏈接來至CE設備
一般CE設備是沒有驗證和登錄到域的。用SSPI或信任驗證的鏈接要使用下面的鏈接字符串。
如下是語法格式:
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain/myUsername;Password=myPassword;
|
注意:上面的語法只能用在CE設置上。
經過IP地址的鏈接
如下是語法格式:
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
|
DBMSSOCN=TCP/IP.這是指明使用IP地址而不是命名管道來鏈接。Data Source的最後是端口。1433是數據庫的默認端口。
容許多個結果集(Enable Mars (multiple active result sets))
如下是語法格式:
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;MultipleActiveResultSets=true;
|
此功能只支持Ado.net 2.0.
在一個到本地SQL Server Express 實例的鏈接上附加數據庫文件
如下是語法格式:
Server=./SQLExpress;AttachDbFilename=c:/asd/qwe/mydbfile.mdf;Database=dbname;Trusted_Connection=Yes;
|
爲何要帶上Database參數呢?由於若是有同名的數據庫已經被附加上啦,SQL Server將不會從新附加該數據庫。他將使用原數據庫做爲要鏈接的對象。
在一個到本地SQL Server Express 實例的鏈接上附加數據庫文件(數據文件在數據目錄中。)
如下是語法格式:
Server=./SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
|
爲何要帶上Database參數呢?由於若是有同名的數據庫已經被附加上啦,SQL Server將不會從新附加該數據庫。他將使用原數據庫做爲要鏈接的對象。
使用本機上的SQL Server Express 實例上的用戶實例。
用戶實例的鏈接建立了一個新的SQL Server 實例。此鏈接只能是在本地SQL Server 2005實例上而且是經過命名管的windows驗證鏈接纔有效。目的就是爲了給用戶建立一個徹底權限的Sql Server 實例和有限的計算機管理員權限。
如下是語法格式:
Data Source=./SQLExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|/mydb.mdf;User Instance=true;
|
要使用User Instance 功能,你要在sql server服務器上啓用他。你能夠經過執行「sp_configure 'user instances enabled', '1'」來啓用,執行「sp_configure 'user instances enabled', '0'」來禁用。
數據庫鏡像
若是你用Ado.Net或着SQL Native Client 鏈接到一個鏡像的數據庫,當一個數據庫鏡像出錯時,你的應用程序應該提供自動切換鏈接的功能。那麼,你應該在鏈接字符串中指明原始數據庫名和鏡像數據庫名。
如下是語法格式:
Data Source=myServerAddress;Failover Partner=myMirrorServer;Initial Catalog=myDataBase;Integrated Security=True;
|
固然還有不少鏈接數據庫鏡像的鏈接字符串的寫法。這只是一個例子指明 failover功能。你還能夠指明其餘的鏈接字符串屬性參數。
異步處理
SQL Server 2005容許經過Ado.net對象進行異步請求任務。
如下是語法格式:
Server=myServerAddress;Database=myDataBase;Integrated Security=True;Asynchronous Processing=True;
|
SQL Server 2005 specials
Context鏈接
Connecting to "self" from within your CLR stored prodedure/function. The context connection lets you execute Transact-SQL statements in the same context (connection) that your code was invoked in the first place.
如下是語法格式:
C# using(SqlConnection connection = new SqlConnection("context connection=true")) { connection.Open(); // Use the connection }
|
====================================================================== 轉載聲明:本文轉自http://hi.baidu.com/shangfei2009/blog/item/c1bbae3c901de7e73d6d97bc.html 在此謹對原創做者和轉載分享網友,致以深深的謝意,也願更多的網友可以分享和學習經典資料,謝謝! |
===================================================
對於SQLServerExpress數據庫鏈接配置,之前看到過幾回,都是匆匆掃一眼,今天上午在一開源軟件中又看到了它,感受有必要對它有一個清楚的認識,示例以下:
<add name="LocalSqlServer" connectionString="Data Source=./SQLExpress;Integrated Security=True;AttachDBFilename=|DataDirectory|TimeTracker.mdf;User Instance=true" />
SqlConnectionStringBuilder實例化時,要用到 connectionString,如:SqlConnectionStringBuild builder = new SqlConnectionStringBuild(connectionString)。
1、Data Source
SqlConnectionStringBuilder 的DataSource屬性,對應connectionString中的Data Source,「Data Source」能夠由下列字符串代替:「server」,「address」,「addr」和「network address」。
Data Source=./SQLExpress也能夠寫成這樣Data Source=(local)/SQLExpress。
2、Integrated Security
SqlConnectionStringBuilder 的IntegratedSecurity屬性,對應connectionString中的Integrated Security,「Integrated Security」能夠寫成「trusted_connection」,爲true時,使用當前的 Windows 賬戶憑據進行身份驗證,爲false時,須要在鏈接中指定用戶 ID 和密碼。
3、AttachDBFilename
SqlConnectionStringBuilder 的AttachDBFilename屬性,對應connectionString中的 AttachDBFilename,「AttachDBFilename」能夠寫成「extended properties」,「initial file name」。AttachDbFileName屬性指定鏈接打開的時候動態附加到服務器上的數據庫文件的位置。這個屬性能夠接受數據庫的完整路徑和相對路 徑(例如使用|DataDirectory|語法),在運行時這個路徑會被應用程序的App_Data目錄所代替。
有一篇文章,專門解釋DataDirectory是什麼。
4、User Instance
SqlConnectionStringBuilder 的UserInstance屬性,對應connectionString中的User Instance ,該值指示是否將鏈接從默認的 SQL Server Express 實例重定向到在調用方賬戶之下運行而且在運行時啓動的實例。UserInstance=true,在這種狀況下,SQLServerExpress爲了把 數據庫附加到新的實例,創建一個新的進程,在打開鏈接的用戶身份下運行。在ASP.NET應用程序中,這個用戶是本地的ASPNET賬號或默認的 NetworkService,這依賴於操做系統。爲了安全地附加非系統管理員賬號(例如ASP.NET賬號)提供的數據庫文件,創建一個獨立的 SQLServer用戶實例是必要的。
附 錄:
DataDirectory是什麼?
asp.net 2.0有一個特殊目錄app_data,一般Sql server 2005 express數據文件就放在這個目錄,相應的數據庫鏈接串就是:
connectionString="…… data source=./SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|data.mdf;User Instance=true"
這裏有一個DataDirectory的宏,它表示什麼意義呢?
DataDirectory是表示數據庫路徑的替換字符串。因爲無需對完整路徑進行硬編碼,DataDirectory 簡化了項目的共享和應用程序的部署。例如,無需使用如下鏈接字符串:
"Data Source= c:/program files/MyApp/app_data/Mydb.mdf"
經過使用|DataDirectory|(包含在以下所示的豎線中),便可具備如下鏈接字符串:
"Data Source = |DataDirectory|/Mydb.mdf" 。
不只僅是Sql server 2005 express中使用,也能夠在其它的文件數據庫中使用,例如Sqllite數據庫文件的鏈接字符串:
<add name="DefaultDB"
connectionString="DriverClass=NHibernate.Driver.SQLite20Driver;Dialect=NHibernate.Dialect.SQLiteDialect;Data Source=|DataDirectory|/data.db3" />
2.鏈接數據庫服務器
<!--鏈接數據庫服務器-->
<add key="CRMonnection" value="Data Source=Sufei;Initial Catalog=CRM;Integrated Security=false;uid=1233;Password=123456"></add>
通常是這樣寫的,意思 我就不在多說了你們一看就知道了。
3.怎麼樣取呢來看個例子吧
先看下面的代碼
<appSettings>
<!--鏈接數據庫服務器-->
<add key="CRMonnection" value="Data Source=Sufei;Initial Catalog=CRM;Integrated Security=false;uid=nouter;Password=123456"></add>
<add key="ForumName" value="漯河移動"/>
<!--鏈接數據庫文件-->
<add key ="CRMConnectionString" value ="Data Source=./SQLEXPRESS;AttachDbFilename=|DataDirectory|CRM.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"/>
</appSettings>
取的方法在這裏
System.Configuration.ConfigurationSettings.AppSettings["CRMConnectionString"];