.NET SQL Server 連線字串

最簡單的連線字串,是以信任連線的方式連接 SQL Server 資料庫,字串如下:

Server=ServerAddress;Database=DataBaseName;Trusted_Connection=True;

ServerAddress是資料庫伺服器的名稱,DataBaseName則是所要連接的資料庫名稱,Trusted_Connection設為True,表示直接透過信任連線連接,因此不需要指定帳號密碼資料。
如果是非信任連線的狀況,其中的Trusted_Connection設定為flase,因此必須再指定ID與Password兩個屬性值給他,這兩個值分別代表開啟資料庫所需的帳號與密碼:

Server=ServerAddress;Database=DataBaseName;User ID=Username;Password=Password;Trusted_Connection=False;

除了上述的語法,你也可以利用以下的替代語法:

Data Source=ServerAddress;Initial Catalog=DataBaseName;Integrated Security=SSPI;
Data Source=ServerAddress;Initial Catalog=DataBaseName;User Id=myUsername;Password=myPassword;

「Integrated Security=SSPI」的意義與「Trusted_Connection=True」的相同,其他的幾個項目則對應至相同的屬性。另外你也可以透過指定 IP Address 的方式,連接逺端資料庫,字串如下,要特別注意的是,其中的Data Source除了IP位址,最後一個數字「1433」,是SQL Server的預設連接埠:

Data Source=192.168.100.100,1433;Network Library=DBMSSOCN;
Initial Catalog=DataBaseName;User ID=Username;Password=PasswordName;

如果你使用的是SQL Server Express版本,則連線字串是相同的,差別只在於Server名稱必須加上一個SQLEXPRESS ,如下式:

Server=ServerAddress\SQLEXPRESS ;Database=DataBaseName;Trusted_Connection=True;

SQL Server Express

如同Access資料庫,.NET 2.0 釋出的 SQL Server Express 版本,允許開發人員直接以資料庫檔案的型式進行資料庫存取維護,以下是典型的字串格式:

Server=.\SQLExpress;AttachDbFilename=databasefilepath;Integrated Security=True;User Instance=True;

AttachDbFilename表示所要連接的資料庫檔案其所在位置路徑,假設你有一個叫作 「sample.mdf」的檔案,位於路徑「C:\db\dbsub」路徑底下,則必須指定此 AttachDbFilename 的參數值如下:

AttachDbFilename=C:\db\dbsub\sample.mdf

如果不想寫死路徑,須透過「DataDirectory」指定,格式如下:

Server=.\SQLExpress;AttachDbFilename=|DataDirectory|sample.mdf;Integrated Security=True;User Instance=True;

其中的DataDirectory取代了原來的實體路徑,不過這樣作的話,你必須確認資料庫檔案是放在系統資料夾裏面,例如ASP.NET專案裏的[ App_Data] ,如此一來,當你在部署開發完成的網站的時候,就不需要擔心找應用程式找不到資料庫檔案了。

LocalDB

SQL Server 2012 CTP3 導入SQL Express 的開發者版本 – LocalDB,安裝 SQL Server 2012 或是 Visual Studio 11 (以上)時會自動內建,不過要 .NET 4以上的平台。針對ASP.NET開發,如果使用的是Entity Framework,典型的連線字串conn 是 context 類別的名稱。

根據不同的資料庫版本,其中的 connectionString 有不同的組合,下列舉最基本的內容項目設定。

<add name="conn"
providerName="System.Data.SqlClient"
      connectionString=""
/>

標準的 SQL Server Express 



Data Source=.\SQLEXPRESS;
Initial Catalog=DatabaseName;
Integrated Security=True

如果是 SQL Server Express 的開發者版本 LocalDB,則將其中的 Data Source 修改為 (LocalDb)\v11.0

Data Source=(LocalDb)\v11.0;
Initial Catalog=DatabaseName;
Integrated Security=True

如果使用的是 MDF 檔案型態的資料庫,則必須額外指定其它的參數。

針對在App_Data資料夾中的 .mdf 檔案進行連線,再加入AttachDbFileName,指向 mdf 檔案名稱所在位置路徑,|DataDirectory| 表示 App_Data。
Data Source=(LocalDb)\v11.0;

Data Source=(LocalDb)\v11.0;
AttachDbFileName=|DataDirectory|\DatabaseFileName.mdf;
Initial Catalog= DatabaseFileName;
Integrated Security=True

以上這一段是 LocalDB 的版本,Visual Studio 2013 建立 MVC 專案時,於Web.config自動產生的預設連線字串即為此格式。

如果是SQL Server Express版本的 .mdf 檔案,必須將Data Source 修改為 .\SQLEXPRESS ,並且加上 User Instance=True 如下:

Data Source=.\SQLEXPRESS;
AttachDbFileName=|DataDirectory|\DatabaseFileName.mdf;
Initial Catalog= DatabaseFileName;
Integrated Security=True;
User Instance=True

User Instance是 SQL Server Express 連線 mdf 資料庫檔案專用的設定,避免無管理權限使用者的連線問題。

沒有留言: