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