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 來測試連接是否成功。在熟練之后,就可以不使用這個, 直接去試了。
配置文件的寫法參考。
在ASP.NET程序中配置的連接字符串如下:
// 指定連接到這個數據庫文件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://blog.csdn.net/Holmofy/article/details/77917999?utm_source=blogxgwz9