2016-09-29 60 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语句。