轉自:http://www.cnblogs.com/aodailiheben/archive/2008/08/06/1262227.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)。
一、Data Source
SqlConnectionStringBuilder的DataSource屬性,對應connectionString中的Data Source,“Data Source”可以由下列字串代替:“server”,“address”,“addr”和“network address”。
Data Source=.\SQLExpress也可以寫成這樣Data Source=(local)\SQLExpress。
二、Integrated Security
SqlConnectionStringBuilder的IntegratedSecurity屬性,對應connectionString中的Integrated Security,“Integrated Security”可以寫成“trusted_connection”,為true時,使用當前的 Windows 帳戶憑據進行身分識別驗證,為false時,需要在串連中指定使用者識別碼 和密碼。
三、AttachDBFilename
SqlConnectionStringBuilder的AttachDBFilename屬性,對應connectionString中的AttachDBFilename,“AttachDBFilename”可以寫成“extended properties”,“initial file name”。AttachDbFileName屬性指定串連開啟的時候動態附加到伺服器上的資料庫檔案的位置。這個屬性可以接受資料庫的完整路徑和相對路徑(例如使用|DataDirectory|文法),在運行時這個路徑會被應用程式的App_Data目錄所代替。
有一篇文章,專門解釋DataDirectory是什麼。
四、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" />
附:
config中常見詞解釋:(我在網上搜到 總結到一起 方便使用)
Persist Security Info屬性的意思是表示是否儲存安全資訊,其實可以簡單的理解為"ADO在資料庫連接成功後是否儲存密碼資訊",
True表示儲存,False表示不儲存
ADO預設為True
(ADO.net預設為False,未測試,根據參考資料上說的)
Integrated Security :設定為 True 的時候,前面的 UserID, PW 是不起作用的,只有設定為 False 的時候,才按照 UserID, PW 來串連。
Integrated Security 可以設定為: True, false, yes, no ,這四個的意思很明白了,還可以設定為:sspi ,相當於 True,建議用這個代替 True
User Instance的新特性,簡單地說,允許目前使用者不是管理員身份情況下也能使用它。 預設true;
web.config設定檔詳解