Windows 的 MSSQL 想要列出所有資料庫名稱,然後再執行備份或者其他命令,可以怎麼做呢?
MSSQL 使用 sqlcmd 列出所有資料庫名稱
MSSQL 想要列出所有資料庫的名字,可以使用:SELECT name FROM master.dbo.sysdatabases
跟 sqlcmd 搭配,然後要將資料庫名稱列出來,可以用此命令:
- for /f %%a in ('sqlcmd -U sa -P YOUR_PASSWORD -Q "SELECT name FROM master.dbo.sysdatabases"') do set DbName=%%a
- 列出來會如下:(會有前面兩行 name 和 "--------------",master、tempdb 是內建的,平常看不到)
- name
- ----------------------------------------------
- master
- tempdb
- TEST
- 列出來會如下:(會有前面兩行 name 和 "--------------",master、tempdb 是內建的,平常看不到)
想要將各個資料庫做備份,可以使用下述:
- for /f "skip=2 eol=(" %%a in ('sqlcmd -U sa -P YOUR_PASSWORD -Q "SELECT name FROM master.dbo.sysdatabases"') do sqlcmd -S localhost -U sa -P YOUR_PASSWORD -Q "Backup Database %%a To Disk='%%a.bak' WITH INIT, SKIP"
- skip=2 是把 name 和 "----" 跳過,然後會從資料庫名稱開始一個一個執行下來~~