LocalDB的使用详解
LocalDB是什么
我們知道微軟有一個SQL Server的免費版本SQL Server Express,它是作為學習以及構建桌面或小型服務器應用的入門級的免費數據庫。但是作為編程人員,還是覺得體積過大。所以微軟為開發者量身定制了一款專門用于編程開發的小數據庫SQL Server Express LocalDB(實際上就是從SQL Server Express中抽離出來的)。
下載和安裝LocalDB
如果你使用Visual Studio開發,那么恭喜你Visual Studio從2012版本開始就自帶了LocalDB。
比如我的VS2017中就帶了LocalDB。
如果你覺得Visual Studio體積太大了(吃了我好幾個G),不想安裝這個巨無霸,那么可以從https://www.microsoft.com/en-us/sql-server/sql-server-downloads下載一個Express版本的下載器:!
選擇LocalDB單獨下載
下載完成后只有一個44M的安裝包(很小(⊙o⊙)哦)。
安裝過程很簡單這里就不演示了。
注意:
安裝完成后,LocalDB就可以創建并打開數據庫了,系統默認的數據庫文件會存儲在用戶的AppData下,比如C:\Users\Administrator\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances,該目錄下是數據庫實例,我們可以用SqlLocalDB命令行工具類管理數據庫實例。
sqllocaldb工具的參考文檔:https://docs.microsoft.com/en-us/sql/tools/sqllocaldb-utility
使用sqllocaldb命令行工具管理數據庫實例
命令行工具很好用,所有的文檔都是中文的:
C:\>sqllocaldb /? Microsoft (R) SQL Server Express LocalDB 命令行工具 版本 13.0.1601.5 版權所有(C) Microsoft Corporation。保留所有權利。用法: SqlLocalDB 操作 [parameters...]操作:-?打印此信息create|c ["instance name" [version-number] [-s]]使用指定的名稱和版本創建新的 LocalDB 實例如果忽略 [version-number] 參數,則它默認為系統中安裝的最新 LocalDB 版本。-s 創建后啟動新的 LocalDB 實例delete|d ["instance name"]刪除具有指定名稱的 LocalDB 實例start|s ["instance name"]啟動具有指定名稱的 LocalDB 實例stop|p ["instance name" [-i|-k]]當前查詢完成后,停止具有指定名稱的 LocalDB 實例-i 使用 NOWAIT 選項請求關閉 LocalDB 實例-k 在不與之聯系的情況下終止 LocalDB 實例進程share|h ["owner SID or account"] "專用名稱" "共享名稱"使用指定的共享名稱共享指定的專用實例。如果省略了用戶 SID 或帳戶名稱,它將默認為當前用戶。unshare|u ["shared name"]停止共享指定的共享 LocalDB 實例。info|i列出當前用戶所擁有的所有現有 LocalDB 實例以及所有共享的 LocalDB 實例。info|i "實例名稱"打印有關指定的 LocalDB 實例的信息。versions|v列出在計算機上安裝的所有 LocalDB 版本。trace|t on|off打開或關閉跟蹤SqlLocalDB 將空格作為分隔符處理。需要用引號將 包含空格和特殊字符的實例名稱引起來。 例如:SqlLocalDB create "My LocalDB Instance"如上所述,有時可以省略實例名稱,或者 將其指定為 ""。在這種情況下,引用的是默認的 LocalDB 實例 "MSSQLLocalDB"。創建數據庫實例
C:\>sqllocaldb create MyLocalDB 已使用版本 13.1.4001.0 創建 LocalDB 實例“MyLocalDB”。如果你電腦里裝了多個版本的LocalDB那你還需要指定LocalDB的版本
命令執行完成后就會在C:\Users\Administrator\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances創建一個文件夾保存該實例的數據庫文件。
啟動并查看數據庫實例信息
C:\>sqllocaldb create MyLocalDB 已使用版本 13.1.4001.0 創建 LocalDB 實例“MyLocalDB”。C:\>sqllocaldb start MyLocalDB LocalDB 實例“MyLocalDB”已啟動。C:\>sqllocaldb info MyLocalDB 名稱: MyLocalDB 版本: 13.1.4001.0 共享名稱: 所有者: DESKTOP-DQJB4BI\Holmofy 自動創建: 否 狀態: 正在運行 上次啟動時間: 2017/9/9 17:23:40 實例管道名稱: np:\\.\pipe\LOCALDB#BC6488BE\tsql\query C:\>tasklist | find "sql" sqlwriter.exe 15488 Services 0 7,364 K sqlservr.exe 13680 Console 1 170,684 K這里的sqlservr進程就是LocalDB的后臺進程,這個exe文件就在LocalDB的安裝目錄下:C:\Program Files\Microsoft SQL Server\130\LocalDB\Binn。
共享數據庫實例
為了支持多個計算機用戶連接到單個LocalDB實例,可以使用sqllocaldb share命令選擇允許計算機上的其他用戶連接到該實例,注意不是將實例共享給其他計算機(跟網絡沒啥關系),所以這個功能很雞肋。
連接LocalDB
1、 客戶端應用連接
使用sqlcmd命令行(前身是osql)工具連接。
1、 安裝:如果你使用VS,這個工具又可以不用安裝了,VS自帶(SQLServer Manager Studio中也自帶了)。
如果你追求簡潔,這里也有sqlcmd的下載地址:https://www.microsoft.com/en-us/download/details.aspx?id=53591,只有3M不到放心的下吧
不過這個軟件還依賴于odbc驅動,下載鏈接:https://www.microsoft.com/en-us/download/details.aspx?id=53339,這個也不超過4M。
安裝完成后可以使用了:
C:\>sqlcmd /? Microsoft (R) SQL Server Command Line Tool Version 13.1.811.168 NT Copyright (c) 2015 Microsoft. All rights reserved.usage: Sqlcmd [-U login id] [-P password][-S server] [-H hostname] [-E trusted connection][-N Encrypt Connection][-C Trust Server Certificate][-d use database name] [-l login timeout] [-t query timeout][-h headers] [-s colseparator] [-w screen width][-a packetsize] [-e echo input] [-I Enable Quoted Identifiers][-c cmdend] [-L[c] list servers[clean output]][-q "cmdline query"] [-Q "cmdline query" and exit][-m errorlevel] [-V severitylevel] [-W remove trailing spaces][-u unicode output] [-r[0|1] msgs to stderr][-i inputfile] [-o outputfile] [-z new password][-f <codepage> | i:<codepage>[,o:<codepage>]] [-Z new password and exit][-k[1|2] remove[replace] control characters][-y variable length type display width][-Y fixed length type display width][-p[1] print statistics[colon format]][-R use client regional setting][-K application intent][-M multisubnet failover][-b On error batch abort][-v var = "value"...] [-A dedicated admin connection][-X[1] disable commands, startup script, environment variables [and exit]][-x disable variable substitution][-j Print raw error messages][-g enable column encryption][-G use Azure Active Directory for authentication][-? show syntax summary]使用sqlcmd連接MyLocalDB:
C:\>sqllocaldb start MyLocalDB LocalDB 實例“MyLocalDB”已啟動。C:\>sqlcmd -S (localdb)\MyLocalDB 1> :help :!! [<command>]- Executes a command in the Windows command shell. :connect server[\instance] [-l timeout] [-U user [-P password]]- Connects to a SQL Server instance. :ed- Edits the current or last executed statement cache. :error <dest>- Redirects error output to a file, stderr, or stdout. :exit- Quits sqlcmd immediately. :exit()- Execute statement cache; quit with no return value. :exit(<query>)- Execute the specified query; returns numeric result. go [<n>]- Executes the statement cache (n times). :help- Shows this list of commands. :list- Prints the content of the statement cache. :listvar- Lists the set sqlcmd scripting variables. :on error [exit|ignore]- Action for batch or sqlcmd command errors. :out <filename>|stderr|stdout- Redirects query output to a file, stderr, or stdout. :perftrace <filename>|stderr|stdout- Redirects timing output to a file, stderr, or stdout. :quit- Quits sqlcmd immediately. :r <filename>- Append file contents to the statement cache. :reset- Discards the statement cache. :serverlist- Lists local and SQL Servers on the network. :setvar {variable}- Removes a sqlcmd scripting variable. :setvar <variable> <value>- Sets a sqlcmd scripting variable.sqlcmd中除了可以輸入T-SQL語句,還有很多內建命令:
| [:] RESET | :Error |
| [:] ED | :Out |
| [:] !! | :Perftrace |
| [:] QUIT | :Connect |
| [:] EXIT | :On Error |
| :r | :Help |
| :ServerList | :XML [ON | OFF] |
| :Setvar | :Listvar |
其中除 GO 以外,所有 sqlcmd 命令必須以冒號 (:) 為前綴。
不過為了保持現有 osql 腳本的向后兼容性,有些命令會被視為不帶冒號。 這由 [:] 指示。
更多命令的詳細參考可以參考官方文檔:https://docs.microsoft.com/zh-cn/sql/tools/sqlcmd-utility
使用navicat連接
如果你喜歡圖形界面,可能會首先想到微軟自己的推出的SQL Server Management Studio,SSMS集成了一大堆的工具,包括配置、監控、管理SQLServer實例等等(上面說的sqlcmd也包括在內),但是八百多兆的安裝包,你實際用到的功能少得可憐。個人推薦使用navicat premium,首先就是因為它可以連接各種數據庫,不單單局限于SQLServer,navicat premium下載百度一下隨處都有。不過SSMS下載鏈接我也扔這了,你自己選擇,https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms
不過使用navicat等圖形界面客戶端需要Native Client依賴庫,不過在官網找了一下,發現SQLServer 2016等版本都是使用SQLServer2012的Native Client依賴庫,所以下載時候不要因為版本不一樣而有什么疑慮。sqlncli.msi依賴:https://www.microsoft.com/zh-cn/download/details.aspx?id=50402。
創建數據庫
這部分就屬于T-SQL語言的部分了,忘記了趕快翻大學課本回憶一下:
CREATE DATABASE [MyFirstDB] ON PRIMARY (NAME = 'MyFirstDB',FILENAME = 'C:\Users\Administrator\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MyLocalDB\MyFirstDB.ndf',SIZE = 8192KB,MAXSIZE = UNLIMITED,FILEGROWTH = 65536KB ) LOG ON (NAME = 'MyFirstDB_log',FILENAME = 'C:\Users\Administrator\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MyLocalDB\MyFirstDB_log.ldf',SIZE = 8192KB,MAXSIZE = UNLIMITED,FILEGROWTH = 65536KB )需要注意的是SQLServer在創建數據庫的時候不能和model database有任何連接,不然就會創建數據庫失敗。model database是其他數據庫創建的模板,這里有對model database的詳細介紹:https://docs.microsoft.com/en-us/sql/relational-databases/databases/model-database
最后貼一個微軟官方在Github上提供的各語言的SQLServer連接的Demo:
https://github.com/Azure/azure-sql-database-samples
參考鏈接 :
MSDN:
- https://docs.microsoft.com/zh-cn/sql/sql-server/editions-and-components-of-sql-server-2016
- https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-2016-express-localdb
總結
以上是生活随笔為你收集整理的LocalDB的使用详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 噪声dba是什么单位_声音的大小dB,到
- 下一篇: 人生的开始