當進行測試時, 有時為了測試不同程式是否得到相同結果(如Regression Test), 重覆restore DB 會是其中一個手段. 然而DBA 與developer 不是同一人時, 便會令測試變得麻煩. 故在測試時backup 指定table, 事後再restore 會是更快的方法.
在SQL server 中, 可以利用bcp command 進行table level 的backup / restore. 做法如下.
## Backup pledge table. ensure user have proper privilege. bcp "select * from [DB_NAME].dbo.[TABLE_NAME]" queryout "[BKUP_FILE_NAME].bcp" -N -S <<Server Name>> -T -E -k ## Restore bcp "[DB_NAME].dbo.[TABLE_NAME]" in "[BKUP_FILE_NAME].bcp" -N -S <<Server Name>> -T -E -b 10000
然而, 在restore 前, 但它有部份限制:
- 會被key constrain 限制restore.
- 須要Truncate table 才能夠進行restore.
當然, 如果只用作backup 又restore到不同table 的話, 還有更快的方法:
SELECT * INTO [NEW_TABLE_NAME] FROM [ORIGINAL_TABLE_NAME]
Leave a Reply