使用指令建立 SQL LocalDB mdf 檔
| | 0 | | ![]() |
SQL LocalDB 是開發測試 SQL 程式的好夥伴,免費,比 SQL Server 輕巧,行為模式比照標準 SQL Server,很適合裝在開發主機扮演 SQL 資料庫角色。(延伸閱讀:SQL Server 2012 Express LocalDB (SqlLocalDB) 深入剖析 by 保哥)
想新增 LocalDB 資料庫(建立 mdf 檔),最簡單的方法是透過 Visual Studio 的 SQL Server Object Exploere:
如果是用 VSCode 寫 .NET 6 程式,要怎麼生出 mdf 給 EF Core 使用?
以下示範建立名為 DummyTest 的 LocalDB 資料庫,放在 D:\LocalDB\DummyTest.mdf 及 DummyTest.ldf。
開始前先確認有安裝 SQL Server LocalDB,找得到 SQLLocalDB.exe,使用 SQLLocalDB.exe info 查詢 LocalDB 的預設個體名稱,一般會是 MSSQLLocalDB。
接下來只需連上 Data Source=(local)\MSSQLLocalDB,執行以下指令即可建立空白資料庫及 mdf、ldf 檔案:
CREATE DATABASE <db_name>
ON PRIMARY (
NAME=<db_name>_data,
FILENAME = '<path>\<db_name>_data.mdf'
)
LOG ON (
NAME=<db_name>_log,
FILENAME = '<paht>\<db_name>_log.ldf'
)
既然知道原理,實作的選擇很多,可以用 PowerShell 建 SqlConnection("Data Source=(localdb)\MSSQLLocalDB") 再 CreateCommand() 跑指令,或是直接用 ODBC 工具 sqlcmd 簡單搞定:(以下範例將 mdf 建在目前所在路徑(透過 %cd% 取得))
set /P DB_NAME=資料庫名稱:
set MDF_PATH=%cd%
sqlcmd -S "(localdb)\MSSQLLocalDB" -Q "CREATE DATABASE [%DB_NAME%] ON PRIMARY ( NAME=[%DB_NAME%_data], FILENAME = '%MDF_PATH%\%DB_NAME%_data.mdf') LOG ON (NAME=[%DB_NAME%_log], FILENAME = '%MDF_PATH%\%DB_NAME%_log.ldf');"
至於要移除 LocalDB 資料庫,sqlcmd -S "(localdb)\MSSQLLocalDB" -Q "DROP DATABASE DummyTest"
即可。(注意:DROP DATABASE 時,mdf/ldf 檔會被刪除)
將 .mdf 檔部署至其他已安裝 SQL LocalDB 機器執行時,使用連線字串 Data Source=("(localdb)\MSSQLLocalDB;AttachDBFileName=<path_to_mdf>
建立 SqlConnection,MDF 檔將會以全大寫路徑名自動掛載成 LocalDB 資料庫(如下圖),.ldf 檔不用提供,系統將自動生成 *_log.ldf 檔,之後資料庫即可使用。
Tips of how to create SQL LocalDB .mdf file with command.
Comments
Be the first to post a comment