假设我有 2 台服务器服务器 1 和服务器 2。
在每台服务器中都有 x 个数据库,每个数据库都连接到一个全局数据库。
server1 有database1、datatabse2、database3。
server2有database4、database5
我们将有 2 个文件,一个包含服务器的文件,另一个包含“数据库”
那么循环将是:
Import-Module SqlServer
foreach ($server in $servers_file)
{
$Analysis_Server = New-Object Microsoft.AnalysisServices.Server
$Analysis_Server.connect("$server")
foreach ($database in $databases_file)
{
$database = $Analysis_Server.Databases.FindByName($database)
####### Setting connection property for $database #######
$database.DataSources[0].ConnectionString = "UserId=…;Password=…."
}
}
这里的问题是这个循环不考虑数据库属于服务器的位置。
例如,如果我的数据库文件为:
数据库1
数据库2
数据库3
数据库4
数据库5
我怎样才能让这个循环知道当 database1-3 从 server1 完成时它必须退出内循环,现在你必须转到外循环以连接到 database4 和 5 的 server2。
ConnectionInfo 类:https ://docs.microsoft.com/it-it/dotnet/api/microsoft.analysisservices.connectioninfo?view=sqlserver-2016