如何在Azure SSAS上部署多维数据集(XMLA格式)
各位下午好, 首先,我祝你在2021年甚至2022年一切顺利 这是我的问题,我正在等待我们的技术团队授予我访问Azure Devops平台的权限(这可能需要一段时间),但同时我希望有一个临时解决方案,允许我直接在现有SSAS实例上部署xmla(Json格式),以便使用powershell创建多维数据集 我已经阅读了一些文档,似乎最好的解决方案是使用invokeAscmd(如果我错了,请纠正我);我认为通过RESTAPI不可能做到这一点 这个想法是以自动化的方式创建一个新的多维数据集 这是我的密码如何在Azure SSAS上部署多维数据集(XMLA格式),azure,powershell,automation,ssas,Azure,Powershell,Automation,Ssas,各位下午好, 首先,我祝你在2021年甚至2022年一切顺利 这是我的问题,我正在等待我们的技术团队授予我访问Azure Devops平台的权限(这可能需要一段时间),但同时我希望有一个临时解决方案,允许我直接在现有SSAS实例上部署xmla(Json格式),以便使用powershell创建多维数据集 我已经阅读了一些文档,似乎最好的解决方案是使用invokeAscmd(如果我错了,请纠正我);我认为通过RESTAPI不可能做到这一点 这个想法是以自动化的方式创建一个新的多维数据集 这是我的密码
$myfile = "c:\temp\test2.xmla"
$mybody=Get-Content -Path c:\temp\test2.xmla
$myaas="asazure://northeurope.asazure.windows.net/pocenvironment"
$myaasname="pocenvironment"
$mytenant = "1234"
$myclientID = "ABCD";
$mykeyID = "theKeyID";
$myauthority = "https://login.windows.net/" + $mytenant + "/oauth2/authorize";
$TokenRequestParams = @{
Method = 'POST'
Uri = "$myauthority"
Body = @{
grant_type = "urn:ietf:params:oauth:grant-type:device_code"
code = $DeviceCodeRequest.device_code
client_id = $myclientID
}
}
$TokenRequest = Invoke-RestMethod @TokenRequestParams
$myconnectstr="Provider=MSOLAP;User ID=;Password="+$TokenRequest+";Data Source="+$myaas+";Persist Security Info=True;Impersonation Level=Impersonate"
Invoke-ASCmd -InputFile $myfile -ConnectionString $myconnectstr -Server $myaas
XMLA是这样的
{
"create": {
"database": {
"name": "TESTME",
"compatibilityLevel": 1500,
"model": {
"culture": "en-GB",
"dataSources": [
],
"tables": [
],
"relationships": [
],
"roles": [
{
"name": "Admin",
"modelPermission": "administrator",
"members": [
{
"memberName": "myemail@domain.com",
"identityProvider": "AzureAD"
}
]
},
{
"name": "Reader",
"modelPermission": "read",
"members": [
]
}
],
"annotations": [
{
"name": "ClientCompatibilityLevel",
"value": "400"
}
]
}
}
}
}
但我收到以下错误消息(尝试使用powershell ise x86和64位)
Invoke-ASCmd:对象引用未设置为对象的实例。
第24行字符:1
+调用ASCmd-InputFile$myfile-ConnectionString$myconnectstr-Serv。。。
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(:)[Invoke ASCmd],NullReferenceE
例外
+FullyQualifiedErrorId:System.NullReferenceException,Microsoft.Analysis
Services.PowerShell.cmdlet.ExecuteScriptCommand
我一直在尝试类似于Azure AAS表格模型上的“createoreplace”多表的东西,在我的情况下$connectionstring是一个问题,如果您还没有尝试过,请先尝试使用您的id进行身份验证。。感谢找到并修复了解决方案
事实上,powershell模块sqlserver在版本20下无法正常运行,但版本21允许选择-tenantid
无更多错误,部署运行平稳:)
谢谢您的帮助:)如果我添加uid/pwd,我会收到相同的错误消息。你能找到解决办法吗?您使用哪个连接字符串?调用ASCmd:对象引用未设置为对象的实例。前提条件:安装模块-名称Az.AnalysisServices连接AzAccount设置AzContext-订阅“xxxx-xxxx-xxxx-XXXXXXXXXXXXXX”调用ASCmd-服务器:asazure://xxregionxx.asazure.windows.net/xxservernamexx -数据库:xxDbNamexx-输入文件:“C:\temp\temp.xmla”--此步骤应提示对第一步中使用的AzaAccount进行身份验证在我的情况下,存在两个问题服务主体在AAS服务器上没有权限,然后令牌连接不正确,无法形成connectionstring,上述步骤帮助我验证脚本是否正常工作,这是一个很好的例子谢谢你的链接,已经在我的收藏夹中了(一旦我们的Azure Devops准备好了^^^),同时我也遵循了你的建议,除了Invoke ASCmd之外一切都很好。调用ASCmd:对象引用未设置为对象的实例。我甚至尝试添加我的连接字符串(如我问题顶部提到的),但没有成功。您是否成功实施了解决方案?
<b>Invoke-ASCmd : Object reference not set to an instance of an object.
At line:24 char:1
+ Invoke-ASCmd -InputFile $myfile -ConnectionString $myconnectstr -Serv ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Invoke-ASCmd], NullReferenceE
xception
+ FullyQualifiedErrorId : System.NullReferenceException,Microsoft.Analysis
Services.PowerShell.Cmdlets.ExecuteScriptCommand
</b>