所以我有以下脚本返回服务器下数据库的连接字符串
Import-Module SqlServer
#SSAS 1103
$oldAS = New-Object Microsoft.AnalysisServices.Server
$oldAS.connect("server1")
foreach ($db in $oldAS.Databases){
#$dbName = $db.Name
Write-Host $db.Name -Fore green
$db.DataSources | ForEach-Object{$_.ConnectionString}
}
#SSAS 1200-1400
$AS = new-Object Microsoft.AnalysisServices.Tabular.Server
$AS.Connect("server1")
foreach ($dbt in $AS.Databases){
$dbName = $dbt.Name
$dbName
$dbt.model.datasources[0].ConnectionString
}
第一个连接/命名空间用于兼容级别1103
第二个连接/命名空间Microsoft.AnalysisServices.Tabular.Server
用于数据库的1200-1400
但是,我们最近得到的数据库为1400,但是具有完全不同的连接字符串格式。与传统的长连接字符串相比,即使从属性上看,连接似乎也采用JSON
即
User Id=;Data Source=;Persist Security Info=True
VS
图片中具有该格式数据源的任何数据库都不会显示
我认为它不会显示,因为字符串是JSON格式(如图片中所示),而不是像这样的常规字符串格式:
User Id=;Data Source=;Persist Security Info=True
是否可以将输出转换为JSON?也许那样就能显示出来?
答案 0 :(得分:1)
类型名称为表格结构化数据源
Microsoft.AnalysisServices.Tabular.ConnectionAddress具有.ToString()甚至tojson()
$dbt.model.datasources[0].ConnectionDetails.ToString()
$dbt.model.datasources[0].Credential.ToString()