如何通过powershell从文件头获取sql minsize属性?

时间:2016-09-29 08:57:38

标签: sql-server powershell

我有兴趣以某种方式获取sql日志文件可以缩小到的最小大小。 阅读此博客:http://social.technet.microsoft.com/wiki/contents/articles/22661.sql-server-misleading-database-initial-size-label.aspx 我知道我需要以某种方式获取文件头中的minsize(也称为初始大小)值。 我该如何做到这一点?

1 个答案:

答案 0 :(得分: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语句。