久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

The Will Will Web | SQL Server 2012 Express LocalDB (SqlLocalDB) 深入剖析

 蝸牛之窩 2014-05-13
  分享到噗浪!

微軟最新推出的 SQL Server 2012 Express LocalDB 是一種 SQL Server Express 的執(zhí)行模式,,特別適合用在開發(fā)環(huán)境使用,也內(nèi)建在 Visual Studio 2012 之中,。由於這種 SQL Server 的執(zhí)行模式跟以往非常不同,,我發(fā)現(xiàn)許多人不太清楚 LocalDB 的使用與管理方式,有必要專文介紹 SqlLocalDB 的相關(guān)知識,。

關(guān)於 SQL Server 2012 Express LocalDB 的運作方式

在安裝 LocalDB 時會複製一個 SQL Server Express 執(zhí)行個體所需的最少檔案,,基本上 LocalDB 幾乎等同於完整的 SQL Server Express 資料庫引擎,且 LocalDB 方式啟動的 SQL Server Database Engine 執(zhí)行個體與 SQL Server Express 具有相同的限制 (因為跟 SQL Server Express 共用相同的檔案),,但 LocalDB 由於簡化了管理,,所以比 SQL Server Express 還多了一些限制,不過這些限制通常不影響開發(fā),。相較於舊版的 SQL Server 2008 Express 來說,,兩者有些差異性,比較如下:

  • SQL Server 2008 Express
    • 安裝 SQL Server 2008 Express 的過程時間花得比較久
    • 透過 SQL Server 2008 Express 安裝程式一次只能安裝一個 SQL 執(zhí)行個體 (Instance),,若要安裝更多執(zhí)行個體則必須在執(zhí)行一次 SQL Server 2008 Express 安裝程式
      註:預設(shè)執(zhí)行個體名稱為 SQLEXPRESS
    • 需透過 SQL Server 組態(tài)管理員Windows 服務(wù)管理員 啟動該執(zhí)行個體
  • SQL Server 2012 Express LocalDB
    • 安裝 SQL Server 2012 Express LocalDB 的過程非???(安裝時間非常短)
    • 安裝 SQL Server 2012 Express LocalDB 完後,預設(shè)會有個自動執(zhí)行個體v11.0,,但之後若要建立其他執(zhí)行個體不再需要執(zhí)行安裝程式,,只需透過 SqlLocalDB.exe 工具程式即可任意建立新的執(zhí)行個體,建立一個執(zhí)行個體的時間不超過 3 秒,!
    • 可透過特殊的連接字串自動啟動該執(zhí)行個體,,或可透過 SqlLocalDB.exe 工具程式啟動,應(yīng)用程式不需複雜或耗時的組態(tài)工作即可開始使用資料庫!
    • 在同一臺主機裡,,每個使用者都可以建立自己的 LocalDB 執(zhí)行個體,,每個執(zhí)行個體是以不同使用者身分執(zhí)行不同處理序,所以不同使用者可有同名的執(zhí)行個體,。

SQL Server 2012 Express LocalDB 區(qū)分兩種執(zhí)行個體類型,,分別為:

  • LocalDB 自動執(zhí)行個體 ( Automatic Instances )
    • LocalDB 自動執(zhí)行個體是公用的。
    • 安裝完 LocalDB 後的 v11.0 就是自動執(zhí)行個體,,雖然感覺只有一個執(zhí)行個體,,但是由於在同一臺主機裡,每個使用者都可以建立自己的 LocalDB 執(zhí)行個體,,所有使用者雖然都有同名的 v11.0 的執(zhí)行個體,,但彼此都是獨立分開的處理序(Process)。這些執(zhí)行個體會自動為使用者建立及管理,,並且可供任何應(yīng)用程式使用,。
    • 使用者電腦上安裝的每一個 LocalDB 版本各存在一個 LocalDB 自動執(zhí)行個體。未來如果還有下一版 SQL Server 2012 Express LocalDB 出現(xiàn),,就會再有新的執(zhí)行個體名稱可用,,預設(shè)自動執(zhí)行個體名稱是一個 v 字元後面接著 xx.x 格式的 LocalDB 發(fā)行版本號碼。 例如,,v11.0 代表 SQL Server 2012,。
  • LocalDB 具名執(zhí)行個體 ( Named Instances )
    • LocalDB 具名執(zhí)行個體是私用的。
    • 這些執(zhí)行個體是由該負責建立及管理該執(zhí)行個體的使用者或特定單一應(yīng)用程式所擁有,。
    • 不同使用者預設(shè)無法存取自訂的 LocalDB 具名執(zhí)行個體,,除非你手動建立具名執(zhí)行個體的分享功能,開啟分享功能後就可以讓其他使用者存取該具名執(zhí)行個體的資料庫,。

 

了解 SQL Server 2012 Express LocalDB 執(zhí)行個體的資料庫檔案所在路徑

在安裝好 SQL Server 2012 Express LocalDB 之後,,預設(shè)會有個執(zhí)行個體名為 v11.0,該執(zhí)行個體的相關(guān)檔案所在目錄通常位於以下目錄 ( 請將 <user> 替換成你的登入帳號 )

C:\Users\<user>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances

或用 %LOCALAPPDATA% 環(huán)境變數(shù)進入該目錄比較方便:

%LOCALAPPDATA%\Microsoft\Microsoft SQL Server Local DB\Instances

以下是顯示該目錄的圖示,,這裡會列出所有 LocalDB 的執(zhí)行個體:

在此目錄 ( v11.0 ) 下所看到的檔案都是執(zhí)行個體的相關(guān)檔案,,系統(tǒng)資料庫檔案、錯誤紀錄,、紀錄追蹤,、加密金鑰、…等等,,不過若你在 LocalDB 執(zhí)行個體中建立使用者資料庫時,,必須要明確指定其資料檔與記錄檔的路徑,否則預設(shè)所有建立的資料庫都會位於 %USERPROFILE% 目錄下 ( C:\Users\<username> )

 

建立 SQL Server 2012 Express LocalDB 具名執(zhí)行個體

你可以想像一下,,一個 SQL 資料庫執(zhí)行個體就如同一臺完整的 SQL Server 資料庫伺服器,,在一個執(zhí)行個體裡面會有自己的系統(tǒng)資料庫 (master, msdb, model, temp),就跟我們一般在使用 SQL Server 沒有什麼兩樣,當你建立額外的 LocalDB 執(zhí)行個體的話,,這些系統(tǒng)資料庫就會跟另一個具名執(zhí)行個體完全獨立開來,,彼此完全互不影響。

就開發(fā)的角度來說,,你甚至可以在開發(fā)測試的環(huán)境裡建立一套跟客戶端正式主機完全相同的資料庫環(huán)境,,光是這一點就與以往的 SQL Server Express 差別甚大,也是新版 LocalDB 真正厲害的地方!

在建立新的 LocalDB 執(zhí)行個體之前,,必須先了解 SqlLocalDB.exe 工具程式的路徑,請參考以下路徑:

C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe
       

以下是建立 LocalDB 執(zhí)行個體的指令,,其中 “Projects” 是你可以自行命名的執(zhí)行個體名稱:

SqlLocalDB.exe create Projects

 

接著我們透過指令列出所有 LocalDB 已經(jīng)建立的所有執(zhí)行個體,,並查看特定執(zhí)行個體的相關(guān)資訊:

SqlLocalDB.exe info
SqlLocalDB.exe info Projects

 

接著我們在看看文章稍早介紹過的實體檔案路徑,你將會發(fā)現(xiàn)多了一個目錄,,我們用 %LOCALAPPDATA% 環(huán)境變數(shù)進入該目錄看看:

%LOCALAPPDATA%\Microsoft\Microsoft SQL Server Local DB\Instances

 

進入該目錄就會看到如同 SQL Server 完整版一樣有這些系統(tǒng)資料庫檔案,、錯誤紀錄、紀錄追蹤,、加密金鑰,、…等等,如下圖示:

 

 

共用 SQL Server 2012 Express LocalDB 具名執(zhí)行個體

由於同一臺主機裡,,每個使用者都可以建立自己的 LocalDB 具名執(zhí)行個體,,且不同使用者之間彼此都是獨立分開的處理序(Process)在執(zhí)行這個執(zhí)行個體,所以預設(shè)的情況下不同使用者之間無法連接不同使用者建立的具名執(zhí)行個體,,這也是一個基本的安全防護機制,。

若今天你需要必須讓同一臺電腦多個不同的使用者連接特定使用者的具名執(zhí)行個體的話,就必須以 系統(tǒng)管理員 權(quán)限建立共用名稱,,如此一來才能讓其他使用者連接,。

我們先來看看執(zhí)行 SqlLocalDB.exe 時所顯示的說明頁面:

其建立共用與取消共用的步驟如下:

1. 設(shè)定共用具名執(zhí)行個體

  你可列出有哪些具名執(zhí)行個體,然後在指定特定執(zhí)行個體一個分享名稱:

SqlLocalDB.exe info
SqlLocalDB.exe share "will" "Projects" "ProjectsShare"
  • “will” 是執(zhí)行個體處理序的執(zhí)行身分識別
  • ”Projects” 是執(zhí)行個體名稱
  • ”ProjectsShare” 是共用名稱

2. 取消共用具名執(zhí)行個體

我們再看一次 SqlLocalDB.exe 顯示的說明頁面  這裡 unshare 的中文翻譯其實是有問題的,!因為執(zhí)行 unshare 的時候,,輸入的參數(shù)應(yīng)該是 “私用名稱” 才對,但文件卻寫 ”共用名稱”,!

SNAGHTML27b0b579

以下是執(zhí)行取消共用的指令範例:

SqlLocalDB.exe unshare "Projects"

以下是建立共用與取消共用的指令執(zhí)行圖示:

 

連接 SQL Server 2012 Express LocalDB 執(zhí)行個體

由於 SQL Server 2012 Express LocalDB 透過特殊的連接字串自動啟動該執(zhí)行個體,,以前我們連接本機 SQL Server 都會用 (local) 當成伺服器名稱,或用 (local)\執(zhí)行個體名稱 這種格式也蠻常見的,。

當你安裝 LocalDB 後,,如果要透過 Management Studio 管理該執(zhí)行個體,建議使用 SQL Server 2012 Management Studio 進行連接,,因為用新版的 Management Studio 可以使用新的連接字串來連接 LocalDB 執(zhí)行個體,,其伺服器名稱的格式變成:(localdb)\執(zhí)行個體名稱,如下圖示:

這時你可能會納悶問說:「我好像還沒啟動資料庫耶?怎麼就直接連線了,?連得上嗎,?」

SQL Server 2012 Express LocalDB 執(zhí)行個體比較特殊,當你透過 SQL 用戶端嘗試連接 LocalDB 執(zhí)行個體時,,該執(zhí)行個體就會自動啟動,,無須事先手動啟動你想連接的 LocalDB 執(zhí)行個體。

當你用 Management Studio 連接 (localdb)\v11.0 之後,,可以開啟【工作管理員】起來看看,,這時你將會發(fā)現(xiàn)有個用目前登入者身分執(zhí)行的 sqlservr.exe 執(zhí)行個體程序已被啟動,由於這是一個獨立的 SQL 執(zhí)行個體,,因此吃記憶體的能耐也是跟以前差不多的,,你只要把 LocalDB 執(zhí)行個體想像成一臺獨立的 SQL Server Express 執(zhí)行個體就對了!

連接後的畫面與所有功能將會與 SQL Server Express 完全一樣:

如果你想用舊版的 Management Studio ( SQL 2008 之前的版本 ) 連接 LocalDB 執(zhí)行個體,,那就稍微麻煩一些,,你必須先利用 SqlLocalDB.exe 的 start 命令手動啟動 LocalDB 具名執(zhí)行個體,再用 info 命令取得這個執(zhí)行個體的管道名稱(pipe name):

SqlLocalDB.exe start v11.0
SqlLocalDB.exe info v11.0

請注意:唯有已啟動的 LocalDB 執(zhí)行個體才會有管道名稱,,而且每次重新啟動執(zhí)行個體都會有不同的管道名稱,,這也是麻煩的地方。所以還是建議各位改裝 SQL Server 2012 Management Studio 比較方便些,。

以下是我用 SQL Server 2008 Management Studio 連接 LocalDB 執(zhí)行個體的連線畫面:

如果要透過 .NET 程式連接 LocalDB 執(zhí)行個體的話,,最簡單的方式就是連接到目前使用者所擁有的自動執(zhí)行個體,在不指定資料庫的情況下其連接字串如下:

Server=(localdb)\v11.0;Integrated Security=true

請注意:每個執(zhí)行個體都是以不同使用者身分執(zhí)行的不同處理序,,所以以上這段連線字串在同一臺主機裡使用時,,其 UserA 與 UserB 所連接的將會是完全不同的執(zhí)行個體。

如果你想要指定資料庫連接的話,,可以參考以下連線字串:

Server=(LocalDB)\v11.0; Integrated Security=true; AttachDbFileName=D:\Data\MyDB1.mdf

如果要連接共用的具名執(zhí)行個體,,其連線字串中的 Server 參數(shù) 的格式必須有所不同,範例如下:

(localdb)\.\ProjectsShare

 

停止 SQL Server 2012 Express LocalDB 執(zhí)行個體

我們已經(jīng)知道 SQL Server 2012 Express LocalDB 執(zhí)行個體會在用戶端嘗試連接時自動啟動,,但何時才會停止執(zhí)行呢,?其實停止執(zhí)行個體有兩種方法:

  1. 只要該執(zhí)行個體沒有任何 Active 的連線,過幾分鐘該執(zhí)行個體就會自動停止 ( 該程序會自動消失 )
  2. 可以透過 SqlLocalDB.exe 工具程式強迫停止特定執(zhí)行個體,,如下指令:
    SqlLocalDB.exe stop v11.0
          

 

SQL Server 2012 Express LocalDB 與其他 SQL Server 版本的比較

在 SQL Server 2012 問世之前,,SQL Server 依據(jù)不同的執(zhí)行環(huán)境各有推出不同的版本,在執(zhí)行上也有不同的限制,,例如:

  • SQL Server Enterprise ( 企業(yè)版,,適合大量資料或高可用性環(huán)境 )
  • SQL Server Standard   ( 標準版,適合用在一般資料庫處理環(huán)境 )
  • SQL Server Express    ( 輕量版,,適合用在單機或小量資料庫的環(huán)境 )
  • SQL Server Compact   ( 精簡版,,又稱 SQL CE,,適用於行動化或嵌入式系統(tǒng)環(huán)境 )

而 SQL Server 2012 Express LocalDB 又是甚麼樣的一個定位呢?我將依據(jù)其資料庫系統(tǒng)複雜度加以重新排序過如下:

  • SQL Server Enterprise > Standard > Express > LocalDB > Compact

由於 SQL Server 2012 Express LocalDB 跟前版的 SQL Server 2008 R2 Express 很像,,其中的限制有:

  • LocalDB 的執(zhí)行個體定序設(shè)定為 SQL_Latin1_General_CP1_CI_AS,,無法變更。
    • 但支援資料庫層級,、資料行層級運算式層級定序,。
    • 也就是說,你只要在建立資料庫時指定其定序即可,,或是掛載其他資料庫系統(tǒng)移過來的資料庫檔案,,或還原自其他資料庫的備份檔也都不會有問題。
    • 自主資料庫遵循自主資料庫定序所定義的中繼資料和 tempdb 定序規(guī)則,。
  • LocalDB 不得為合併式複寫訂閱者,。
  • LocalDB 不支援 FILESTREAM。
  • LocalDB 針對 Service Broker 只允許本機佇列,。

 

心得分享

這一版 SQL Server 2012 Express LocalDB 真的很棒,,隨時隨地都可以建立不同的資料庫執(zhí)行個體,,讓開發(fā)人員能夠盡情的測試各種 SQL Server 2012 的新功能,,也不用怕搞壞現(xiàn)有的開發(fā)資料庫環(huán)境。

除了開發(fā)環(huán)境外,,對於同一臺主機有許多網(wǎng)站的虛擬主機來說,,也可以說非常方便,因為不同的應(yīng)用程式集區(qū)或本機應(yīng)用程式都可以非常便利的建立起獨立的執(zhí)行個體,,完全不會跟其他網(wǎng)站或應(yīng)用程式發(fā)生衝突,,徹底的降低 SQL Server 2012 Express 的管理複雜度,也大幅提升資料庫佈署的方便性,!

除此之外,,若開發(fā)人員採用 Code First 資料庫開發(fā)模式的話,在開發(fā)與佈署方面來說也確實更加便利,,因為資料庫執(zhí)行個體可以完全執(zhí)行在自己的身分識別下執(zhí)行,,不用再開啟 Management Studio 事先設(shè)定安全性或預先建立資料庫等工作,透過獨立的執(zhí)行個體也不用擔心使用 Code First 開發(fā)的程式執(zhí)行時牽動到多人共用的開發(fā)資料庫,,很輕易的就能在本機電腦自動建立起測試資料庫,。

 

相關(guān)連結(jié)

影片教學

以下錄影是多奇數(shù)位創(chuàng)意有限公司於 2012/11/07 在公司內(nèi)部的技術(shù)分享錄影,這 50 分鐘的分享內(nèi)容包括 SQL Server 2012 Express LocalDB 的運作方式,、管理 LocalDB 執(zhí)行個體的方法與陷阱,、認識 Visual Studio 2012 的資料庫管理工具以及日常開發(fā)使用 LocalDB 時的注意事項等等。

2012/11/07 多奇技術(shù)分享會 - SQL Server 2012 Express LocalDB 深入剖析

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多