我一直在努力为一堆服务器自动化一些SQL Server的安装后配置设置。其中一项任务是将数据库文件的默认增长和growthtype从百分比更改为KB / MB。
对于测试,我将只使用单个实例和测试数据库。这就是我到目前为止所提出的。
$sqlServer = "SQLSVRNM\INSTNM"
#Load SqlServer SMO assembly
[void][Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO")
#Connect to the instance using SMO
$smosvr = New-Object Microsoft.SqlServer.Management.Smo.Server $sqlServer
#Filter database, assign db properties to variable
$database = $smosvr.databases | where name -eq "testdb"
#Check database size
$dbsize = $database.size
#Check database name
$name = $database.name
#Get logfile properties
$logfile = $database.logfiles
#Get logfile name
$logfileName = $logfile.filename
#Get file growth val
$logfileGrowth = $logfile.growth
#Get growthtype
$logfileGrowthtype = $logfile.growthtype
#Get logfile size
$logfileSize = $logfile.size
当我使用
设置新的增长大小时$logfile.growth = [double](2.0 * 32.0)
我收到以下错误。
The property 'growth' cannot be found on this object. Verify that the property exists and can be set.
At line:1 char:1
+ $logfile.growth = [double](2.0 * 32.0)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException
但是,如果我在$ logfile上执行get-member,则属性存在。
$logfile | Get-Member -Name Growth*
TypeName: Microsoft.SqlServer.Management.Smo.LogFile
Name MemberType Definition
---- ---------- ----------
Growth Property double Growth {get;set;}
GrowthType Property Microsoft.SqlServer.Management.Smo.FileGrowthType GrowthType {get;set;}
那么,有人可以帮助我理解我在这里可能缺少的东西吗? 谢谢!
答案 0 :(得分:0)
代码中的$ logfile是一个集合。即使只有一个你必须打破它来设置属性