我如何 return 只有一个数据库的兼容性级别?
How do i return compatibility level of just one database?
我引用了这个页面:https://technet.microsoft.com/en-us/hh213141(v=sql.100)
Import-Module SqlServer
$as = New-Object Microsoft.AnalysisServices.Server
$as.connect("$Server")
$as.databases
Write-Host "Compatibility level ="$as.DefaultCompatibilityLevel
但是这 return 所有数据库都回来了...
我只想指定一个数据库以获得兼容级别...
我试过了,
$as.databases["$Database"]
我感兴趣的数据库有 1103 级,
但它似乎不 return 适当的水平,因为它 returning 1200...
我不熟悉这个 API,但我看到 $as.Databases
property is of type DatabaseCollection
. The DatabaseCollection
class does have indexers 需要一个 Int32
或一个 String
,就像你试图与 $as.databases["$Database"]
.
一起使用
请注意 String
索引器的文档说该参数是要返回的数据库的 "identifier"。还要注意Database
class has separate properties for ID
and Name
,所以两者是有区别的。因此,我的建议是,当您尝试以这种方式检索 Database
实例时,请确保您传递的是 ID,而不是名称。
或者,如果您确实想按名称搜索,您可以使用 FindByName
method...
$as.Databases.FindByName($Database)
...或GetByName
method...
$as.Databases.GetByName($Database)
...区别在于前者returns $null
如果不存在这样的数据库而后者抛出异常
如果所有其他方法都失败了,您可以像这样检索所需的数据库...
$as.Databases | Where-Object { $_.ID -eq $Database }
...或者像这样...
$as.Databases | Where-Object { $_.Name -eq $Database }
...取决于哪个属性对应于$Database
中的值。
最后,在您的代码中,您正试图访问 DefaultCompatibilityLevel
属性,我没有在 Database
class. There is, however, a CompatibilityLevel
property.
中看到它的定义
我引用了这个页面:https://technet.microsoft.com/en-us/hh213141(v=sql.100)
Import-Module SqlServer
$as = New-Object Microsoft.AnalysisServices.Server
$as.connect("$Server")
$as.databases
Write-Host "Compatibility level ="$as.DefaultCompatibilityLevel
但是这 return 所有数据库都回来了...
我只想指定一个数据库以获得兼容级别...
我试过了,
$as.databases["$Database"]
我感兴趣的数据库有 1103 级, 但它似乎不 return 适当的水平,因为它 returning 1200...
我不熟悉这个 API,但我看到 $as.Databases
property is of type DatabaseCollection
. The DatabaseCollection
class does have indexers 需要一个 Int32
或一个 String
,就像你试图与 $as.databases["$Database"]
.
请注意 String
索引器的文档说该参数是要返回的数据库的 "identifier"。还要注意Database
class has separate properties for ID
and Name
,所以两者是有区别的。因此,我的建议是,当您尝试以这种方式检索 Database
实例时,请确保您传递的是 ID,而不是名称。
或者,如果您确实想按名称搜索,您可以使用 FindByName
method...
$as.Databases.FindByName($Database)
...或GetByName
method...
$as.Databases.GetByName($Database)
...区别在于前者returns $null
如果不存在这样的数据库而后者抛出异常
如果所有其他方法都失败了,您可以像这样检索所需的数据库...
$as.Databases | Where-Object { $_.ID -eq $Database }
...或者像这样...
$as.Databases | Where-Object { $_.Name -eq $Database }
...取决于哪个属性对应于$Database
中的值。
最后,在您的代码中,您正试图访问 DefaultCompatibilityLevel
属性,我没有在 Database
class. There is, however, a CompatibilityLevel
property.