sql-server - 如何从分析服务器获取数据库的兼容级别?
问题描述
我四处搜索,发现有一种方法可以通过以下方式在 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
但是,我在尝试获取分析服务器上的数据库的兼容性级别时遇到错误
获取“项目”的异常:“无法连接到服务器......”
我意识到它可能适用于常规数据库引擎,但其他东西可能用于分析服务器。我在 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"]
但似乎没有返回正确的级别,因为我通过的 DB 的 lvl 为 1103,而不是 1200...
解决方案
我想到了!
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
推荐阅读
- json - 错误:在颤振中使用 fromjson 时,类型“String”不是“index”类型“int”的子类型
- r - 向上舍入到下一个显着数字
- javascript - 如何使用javascript将数据从一个html页面发送到另一个页面
- php - 如何从评论产品中删除昵称和摘要?
- wordpress - Wordpress 在 > 第三个 url 段中显示主页 (200) 而不是 404
- wordpress - 是否有任何插件将上传到 woo 商务产品的照片数量限制为 5
- python - 如何在现有列表之后添加列表但不扩展它?
- flutter - Dart 数据转换性能发布 vs 调试
- r - 如何用 highcharter 库做一个半圆形甜甜圈?
- ios - 更新到 MacOS Catalina 后 Xcode 无法打开