3

使用指令建立 SQL LocalDB mdf 檔

 2 years ago
source link: https://blog.darkthread.net/blog/create-localdb/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

使用指令建立 SQL LocalDB mdf 檔

calendar.svg 2022-04-08 10:31 PM comment.svg 0 eye.svg 1,638

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 檔,之後資料庫即可使用。

and has 0 comments

Comments

Be the first to post a comment

Post a comment

Comment
Name Captcha 46 + 28 =

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK