如何从分析服务器获取数据库的兼容性级别?

时间:2018-10-03 21:18:19

标签: sql-server powershell azure-sql-database ssas

我四处搜索,发现有一种方法可以通过以下方式获取Powershell中数据库的兼容性级别:

    Import-Module SqlServer

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
$SqlConnection.ConnectionString = "Server=$Server;Initial Catalog=$DB;Integrated Security=SSPI"
$conn = new-object Microsoft.SqlServer.Management.Common.ServerConnection($sqlConnection)
$srv = new-object Microsoft.SqlServer.Management.Smo.Server($conn) 

$db = New-Object Microsoft.SqlServer.Management.Smo.Database  
$db = $srv.Databases.Item("$DB")  

$comp_lvl = New-Object Microsoft.SqlServer.Management.Smo.CompatibilityLevel  
$comp_lvl = $db.CompatiblityLevel  
Write-Host "Compatibility level =" $db.CompatibilityLevel

但是,尝试获取分析服务器上数据库的兼容性级别时遇到错误

  

获取“ Item”的异常:“无法连接到服务器...”

我意识到它可能适用于常规数据库引擎,但是其他某些东西也可以用于分析服务器。我环顾了MS Docs,却没有发现任何有用的东西。

这有可能吗?

更新:

我能够在此页面上找到一些东西: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

但这会返回所有数据库...

我只想指定一个数据库来获得...的兼容性级别。

我尝试过了,

$as.databases["$Database"]

但似乎未返回正确的级别,因为我传递的数据库的lvl为1103,而不是1200 ...

1 个答案:

答案 0 :(得分:1)

我知道了!

Import-Module SqlServer

$as = New-Object Microsoft.AnalysisServices.Server  
$as.connect("$Server")  

$c = $as.Databases | Where-Object { $_.ID -eq $Database }

Write-Host "Compatibility level =" $c.CompatibilityLevel