天天看點

Web.Config檔案中資料庫連接配接配置

對于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時,需要在連接配接中指定使用者 ID 和密碼。

   三、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" />

本文轉自蓬萊仙羽51CTO部落格,原文連結:http://blog.51cto.com/dingxiaowei/1366797,如需轉載請自行聯系原作者