2016-09-29 76 views
0

我感興趣的方式來抓住一個SQL日誌文件可以縮小到最小的大小。 閱讀這個博客:http://social.technet.microsoft.com/wiki/contents/articles/22661.sql-server-misleading-database-initial-size-label.aspx 我知道我需要以某種方式抓取文件頭中的最小大小(也稱爲初始大小)值。 我該如何做到這一點?如何通過powershell從文件頭獲取sql minsize屬性?

+0

因此,您需要連接到某個實例,通過PowerShell獲取所有數據庫及其初始大小?你只需要LOG信息,或者ROWS? – gofr1

回答

1

要獲得所有的數據庫及其初始大小,通過PowerShell的,在某些情況下,你可以使用這個:

Import-Module SQLPS -DisableNameChecking 
$instance = 'SERVER\INSTANCE' 
$results = @() 

try { 
    $sqlres = Invoke-SQLcmd -Server $instance -Database master 'SELECT [name],(size * 8/1024) InitialSize FROM sys.master_files WHERE [type] = 1' 

    ForEach($st in $sqlres) { 
     $dbinfo = @{    
       Name = $st.Name 
       InitialSize = $st.InitialSize 
     } 
     $results += New-Object PSObject -Property $dbinfo  
    } 
} catch { 
    "error when running Invoke-SQLcmd "+$instance 
    Write-Host($error) 
} 

$results | export-csv -Path D:\sql_db_info.csv -NoTypeInformation 

這將數據庫名和初始大小寫入D:\sql_db_info.csv文件。

注意:在查詢中,我使用[type] = 1來獲取有關LOG文件的信息,如果您需要ROWS使用[type] = 0,如果您需要全部 - 刪除WHERE語句。

相關問題