Sql-Server-2005
保存 DBCC ShrinkFile 的結果
當我們執行以下命令時:
DBCC SHRINKFILE('MyDB_log', 1)
我們在 SSMS 中得到以下結果:
DBID | Field | CurrentSize | MinimumSize | UsedPages | Estimated Pages -----|-------|-------------|-------------|-----------|---------------- 11 | 2 | 128 | 128 | 128 | 128
問題:
我們如何在不使用 SSMS 輸出視窗的情況下創建將這些結果輸出到文本文件的查詢。
我試過這個:
CREATE TABLE #x ( [DBID] int, FileID int, CurrentSize int, MinimumSize int, UsedPages int, EstimatedPages int ) INSERT #x EXEC('DBCC SHRINKFILE(''MyDB_log'', 1)') SELECT * FROM #x DROP TABLE #x
但我收到以下錯誤:
Msg 8920, Level 16, State 2, Line 1 Cannot perform a shrinkfile operation inside a user transaction. Terminate the transaction and reissue the statement.
我還嘗試了以下方法:
DECLARE @Statement AS VARCHAR(2000); SET @Statement = 'bcp "DBCC SHRINKFILE(''MyDB_log'', 1)" queryout C:\Test.txt -c -UDBAdmin -P1234 -S192.168.123.123'; exec xp_cmdshell @Statement
我得到:
Error = [Microsoft][SQL Native Client]BCP host-files must contain at least one column
我看到的最簡單的方法是使用 sqlcmd 的批處理文件:
sqlcmd -S .\SQL2008R2 -E -Q "dbcc loginfo" >> log.txt
重定向運算符在文件末尾附加數據。
-Q 參數用於立即關閉 sqlcmd 會話。
如果您正在查看一次性查詢,則可以通過按 Ctrl+Shift+F 將查詢結果輸出到文件。
如果您正在尋找可以自動化的東西,您可以將查詢包裝在 Powershell 或其他腳本語言中並讓其寫入文件。