【发布时间】:2020-02-25 14:28:52
【问题描述】:
我的任务如下:使用 Power BI 报表服务器 (PBIRS) REST API,上传嵌入式报表(嵌入式意味着数据模型集成在报表本身中 - 从 SQL Server 数据库简单导入,因此没有实时连接或 DirectQuery 等)到 PBIRS,设置凭据(ConnectionString、Windows 身份验证用户名和密码)以访问数据源(数据库)并设置每日计划刷新。
使用 Powershell 脚本,我可以毫无问题地上传报告,但是当我尝试将凭据设置为数据源时会出现复杂情况。这是我目前必须完成的代码:
$payload0 =
'
{
"Name": "Data Source test",
"Description": "string",
"Path": "/Valid/Path",
"Type": "DataSource",
"Hidden": false,
"Size": 0,
"ModifiedBy": "string",
"ModifiedDate": "2020-01-13T15:51:04Z",
"CreatedBy": "string",
"CreatedDate": "2020-01-13T15:51:04Z",
"IsFavorite": false,
"IsEnabled": true,
"ConnectionString": "valid.connection\\string",
"DataModelDataSource": {
"AuthType": "Windows",
"SupportedAuthTypes": [
"Windows"
],
"Kind": "SQL",
"ModelConnectionName": "string",
"Secret": "",
"Type": "Import ",
"Username": "myUserName"
},
"DataSourceSubType": "DataModel",
"DataSourceType": "SQL",
"IsOriginalConnectionStringExpressionBased": false,
"IsConnectionStringOverridden": false,
"CredentialRetrieval": "prompt",
"CredentialsByUser": {
"DisplayText": "someText",
"UseAsWindowsCredentials": true
},
"CredentialsInServer": {
"UserName": "myUserName",
"Password": "myPassword",
"UseAsWindowsCredentials": true,
"ImpersonateAuthenticatedUser": true
},
"IsReference": false
}
'
$restApiUri = $ReportPortalUri + "/api/v2.0/DataSources"
Invoke-RestMethod -Uri $restApiUri -Method Post -Body $payload0 -ContentType "application/json" -UseDefaultCredentials -UseBasicParsing -Verbose
运行代码后,我得到一个201 Created 响应 JSON,它指示数据源及其访问凭据的成功创建。如果我查看 PBIRS 报告的 Manage 窗格我看不到对数据源进行任何更改。
我的下一步是手动设置凭据,方法是在报表服务器上输入我的用户名和密码,然后执行以下代码来设置计划刷新:
$payload1 =
'
{
"ParameterValues":[
],
"Description":"testSchedule",
"CatalogItemPath":"/Valid/Path",
"EventType":"DataModelRefresh",
"Schedule":{
"Definition":{
"EndDate":"0001-01-01T00:00:00Z",
"StartDateTime":"2019-01-15T02:00:00Z",
"EndDateSpecified":false,
"Recurrence":{
"DailyRecurrence": {
"DaysInterval":1
}
}
}
}
}
'
$restApiUri = $ReportPortalUri + "/api/v2.0/CacheRefreshPlans"
Invoke-RestMethod -Uri $restApiUri -Method Post -Body $payload1 -ContentType "application/json" -UseDefaultCredentials -UseBasicParsing -Verbose
如果我事先手动设置了数据源的凭据,则运行此代码会成功创建计划刷新。
简而言之,我的问题是:如何使用 PBIRS REST API 设置数据源(由有效 ConnectionString 定义的 SQL Server 连接)的凭据(Windows 身份验证和用户名/密码)?
任何帮助将不胜感激!
【问题讨论】:
标签: powershell rest power-bi-report-server