sql LocalDB 的安裝環境和使用方法
LocalDB
LocalDB專門為開發商。它是非常容易安裝,無需管理,但它提供了相同的T-SQL語言,程式設計表面和客戶端供應商定期的SQL Server Express。實際上,目標SQL Server不再需要安裝和管理他們的筆記本電腦和其他開發機器的SQL Server Express全例項開發。此外,如果簡單(和限制)LocalDB適合目標應用環境的需要,開發人員可以繼續使用在生產中,為使一個很好的嵌入式資料庫LocalDB池。
通過上文的瞭解,明白了LocalDB 相當於是一個比較小型的資料庫,它沒有SQL Server 那樣繁複的安裝過程和龐大的體積,相對於普通的資料庫來講,它可以稱為很輕量級別的資料庫。
接下來我會根據我目前的學習和了解,來學習一下這個localdb。
環境
一般來講,localdb 是作為開發者來使用的,主要的作用就是用於滿足開發這個的開發需求,所以從VS2012 和 SQL Server 2008 一般都自帶有localdb了 ,這兩款自帶的元件的localdb 版本是 sql localdb 2012 查詢的版本號為v11.0。
這個版本localdb 是沒有預設例項。
後面自帶的版本的有 VS 2013~2017 這裡到目前的sql localdb的版本是2012~2016版本,從VS2013 自帶的local 2014版本之後,到目前我所瞭解到的最新版本local 2017 都是有一個預設的例項名MSSQLocalDB。這個例項是可以直接使用的。
接下來我們講一下,一般在不安裝任何VS 和SQL server的 安裝環境,這裡的windows 系統,分別是win7 和 win10 。
這裡我推薦使用的是localdb 2016這個版本,因為我本機裝的vs2017 ,自帶的這個版本,這個版本的localdb 相較於其他的版本在我測試了很多次之後,發現這個版本是最好使用的一個版本。
要達成 localdb 2016 的使用,目前我發現的環境,只需要滿足兩個條件就可以一臺完全乾淨的windows (這裡我指的是win7 和win10 我都測試過可以ping 通資料庫)系統下使用,這兩個環境分別是 .net 4.0 和 Microsoft SQL Server 2012 Native Client 。
使用方法
localdb 的使用方法,雖然網上很多,但是我還是貼出來。( 這裡注意所有的CMD命令都要管理員執行 )
查詢所有 例項
sqllocaldb i 查詢當前所有的例項(包括共享名)
要是查單獨的 sqllocaldb i (你要查詢的例項名)
這裡如果狀態是啟動的,那麼就會有例項管道名(例項管道名可以),這裡的自動建立指的是 是不是localdb 自帶的例項名,沒有影響。
這裡我們建立一個新的來完整的測試一遍。
1、建立一個新的例項名
sqllocaldb c MyLocaldb
2、啟動這個例項名
sqllocaldb s MyLocaldb
3、 檢視例項名詳情
sqllocaldb i MyLocaldb
4、停止這個例項名
sqllocaldb p MyLocaldb
5、刪除這個例項名
sqllocaldb d MyLocaldb
在 建立 ,並 啟動 例項名之後,我們可以直接通過 (localdb)\MyLocaldb 然後通過windows使用者來訪問資料庫。
這裡我推薦使用Navicat Premium 來測試連線是否成功。在熟練之後,就可以不使用這個, 直接去試了。
配置檔案的寫法參考。
// 指定連線到這個資料庫檔案MDF
Server=(LocalDB)\MSSQLLocalDB; Integrated Security=true;AttachDbFileName=D:\Data\MyDB1.mdf
// 不指定到MDF檔案路徑,指定預設資料庫名
Server=(LocalDB)\MSSQLLocalDB; Integrated Security=true;Initial Catalog=MyDB1"
// 類似第一種
Data Source=(localdb)\MSSQLLocalDB;Integrated Security=true;AttachDbFileName=D:\Data\MyDB1.mdf
// 指定使用者名稱和密碼(目前使用這是這種,簡單明瞭)
server=(localdb)\MSSQLLocalDB;uid=sa;pwd=123456;Initial Catalog=MyDB1
共享例項名
這裡特別提一下共享例項名
共享例項名要用到的情況是你同時有幾個程序同時需要訪問這個資料庫的話,那麼會發生佔用的情況,這種情況就需要共享例項名來處理這個問題了。
共享例項名的使用方法。
1、宣告一個共享例項名。
sqllocaldb h "MyLocaldb" "mylocaldb"
這樣我們就可以通過共享例項名 mylocaldb 來訪問到例項名MyLocaldb 了
2、訪問共享例項名
(localdb)\.\mylocaldb
(這裡建立完了共享例項名有時候會出現訪問超時,或者找不到這個共享名。這裡我查過官方的說法是這個會有一丟丟延遲,要等一會才能訪問,我一般的做法是重啟電腦就能訪問)
3、停止共享例項名
sqllocaldb u .\mylocaldb
停止完了就不能使用了。
一般要
// 使用SSMS連線工具連線時,也要使用管理員許可權開啟.例項名變成 (localdb)\.\mylocaldb 第一個\後面的.\mylocaldb 就是共享例項別名
為什麼上面的SSMS要使用管理員工具開啟,因為下面的驗證方式是帳號密碼形式的,如果使用WINDOWS驗證,則不需要.
給LOCALDB設定連線帳號
到這步之後,將WEB程式的連線字串寫成指定帳號和密碼的這種,結果依然不能訪問,還是沒有許可權,
server=(localdb)\.\mylocaldb;uid=sa;pwd=123456;AttachDbFileName=D:\Data\MyDB1.mdf
檢視資料庫帳號,發現LOCALDB並沒有SA這個帳號,於是加上它,並且給於 DB_OWNER
除了這種方法之外,還有一種不用設定sa的方法,但是我目前只用用於在服務之中呼叫的方法,
如果你同時使用windows服務訪問這個資料庫,可以嘗試一下這個方法,
在安裝完成之後,找到這個服務,然後切到登入,到下面紅框裡面輸入,管理員賬號的賬號和密碼。然後重啟服務。
補充的內容
localdb 建立的例項名所在的資料夾(這裡可以檢視log)
C:\Users\XXX\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances
這裡存著所有的例項名,如果刪除例項名之後,可以來這裡檢查一下, 有沒有刪除,沒有的話,你就幫幫忙,因為localdb 的刪除不是很給力。
localdb 啟動檔案。(你所有的命令都是它在執行。)
C:\Program Files\Microsoft SQL Server\ 110 \Tools\Binn
這裡的110是不一定的,是跟你安裝的localdb 版本來的,比如 localdb 2012就是110,2016就是130 ,如果你電腦裝著多種版本的localdb ,有一句語法可以指定使用哪個版本
REM Create an instance of LocalDB
"C:\Program Files\Microsoft SQL Server\ 130 \Tools\Binn\SqlLocalDB.exe" create LocalDBApp1
REM Start the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\ 130 \Tools\Binn\SqlLocalDB.exe" start LocalDBApp1
REM Gather information about the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\ 130 \Tools\Binn\SqlLocalDB.exe" info LocalDBApp1
根據你的版本調整數值。
以上就是目前我對sql localdb 的全部瞭解。基本都能在網上找到,我這裡只是做個一個學習的總結。
主要參考了:
https://www.cnblogs.com/mirrortom/p/5946817.html
https://docs.microsoft.com/zh-cn/sql/database-engine/configure-windows/sql-server-2016-express-localdb?view=sql-server-2017
https://blog.csdn.net/Holmofy/article/details/77917999?utm_source=blogxgwz9