Очевидно, что базы данных / кубы на сервере анализа содержат параметр «сценарий подключения как> изменить», например, так:
Я хочу использовать скрипт powershell, например так:
$hashtable = @{}
Import-Csv "CSV_file" | ForEach-Object {
$hashtable += @{$($_.Server) = ($_.Cube -split '\s*,\s*') }
}
Import-Module SqlServer
foreach($server in $hashtable.Keys){
$Analysis_Server = New-Object Microsoft.AnalysisServices.Server
$Analysis_Server.connect("$server")
foreach($CUBE in $hashtable[$server]) {
####### Setting connection property for $Cube #######
"
<Alter ObjectExpansion="ExpandFull" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>$CUBE</DatabaseID>
</Object>
<ObjectDefinition>
<DataSource xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns:ddl400="http://schemas.microsoft.com/analysisservices/2012/engine/400" xmlns:ddl400_400="http://schemas.microsoft.com/analysisservices/2012/engine/400/400" xmlns:ddl500="http://schemas.microsoft.com/analysisservices/2013/engine/500" xmlns:ddl500_500="http://schemas.microsoft.com/analysisservices/2013/engine/500/500" xsi:type="RelationalDataSource">
<ConnectionString>Connection Timeout=60;User Id=someID;Password=pass;Data Source=td.domain.com;Persist Security Info=True;Session Character Set=UTF8</ConnectionString>
</DataSource>
</ObjectDefinition>
</Alter>
"
}
}
, который принимает входной файл CSV
Сервер, Куб
server1.domain.com, Database1
и просматривает базы данных / кубы на сервере, чтобы изменить их источник данных <ConnectionString>
Однако я уверен, что в этом скрипте чего-то не хватает, но дело в том, что, если я запускаю этот XML в SSMS, он жалуется на элемент <Name>
для <DataSource>
. Я понимаю, что необходим полный XML, но он не будет работать с точки зрения сценария, который я пытаюсь выполнить, потому что у меня не может быть тот же источник данных для других баз данных, которые есть на сервере. возможно, все они разные, поэтому ID, имя и т. д. должны быть удалены из XML-запроса в сценарии powershell.
я получаю эту ошибку
Определение объекта, предоставленное для инструкции ALTER, относится к другому типу, что ссылка на объект, подлежащая изменению.
Примечание : причина, по которой я вместо этого не использую свойства сервера анализа, заключается в том, что метод свойств анализа, который я здесь пробовал Свойство ConnectionString не печатает строку соединения
не работал и был передан в Microsoft как испорченное свойство,