deployment - 如何在表格模型部署期间传递数据源的凭据?
问题描述
问题:当我使用部署向导部署表格模型时。它工作正常。但是我们的问题是我们有 20 个数据源,并且在部署时,我们需要提供 20 次凭据,因为它要求每个数据源的凭据。这是非常痛苦的。这就是我们想要自动化部署的原因。
方法:我按照这篇文章https://notesfromthelifeboat.com/post/analysis-services-1-deployment/ 进行操作,我可以在没有错误的情况下部署表格模型,但是当我刷新模型时。它失败并出现以下错误
无法将修改保存到服务器。返回错误:'OLE DB 或 ODBC 错误:
The credentials provided for the File source are invalid. (Source at \\share\acaidatatempshare\data\lumeneventpropertiesexport.tsv.).
OLE DB or ODBC error: The command has been canceled..
OLE DB or ODBC error: The command has been canceled..
OLE DB or ODBC error: The command has been canceled..
我的数据源是 tsv 文件,下面是 model.bim 文件的数据源部分。如您所见,它不会将凭证的密码保存在 model.bim、asdatabase 或 xmla 文件中。
….
….
{
"type": "structured",
"name": "File/\\\\Share\\AcaiDataTempShare\\Data\\LumenEventPropertiesExport tsv",
"connectionDetails": {
"protocol": "file",
"address": {
"path": "\\\\share\\AcaiDataTempShare\\Data\\LumenEventPropertiesExport.tsv"
},
"authentication": null,
"query": null
},
"credential": {
"AuthenticationKind": "Windows",
"kind": "File",
"path": "\\\\Share\\acaidatatempshare\\data\\lumeneventpropertiesexport.tsv",
"Username": "domain\\username"
},
"contextExpression": [
"let",
" #\"0001\" = Csv.Document(..., [Delimiter = \"#(tab)\", Columns = 3, Encoding = 1252, QuoteStyle = QuoteStyle.None]),",
" #\"0002\" = Table.TransformColumnTypes(#\"0001\", {{\"Column1\", type text}, {\"Column2\", type text}, {\"Column3\", type text}})",
"in",
" #\"0002\""
]
},
…..
…..
如何在部署期间以编程方式传递数据源的凭据?
解决方案
不幸的是,当您部署模型时,结构化(又名 Power Query)数据源凭据不会保留。我前段时间向产品团队报告了这个错误,但还没有得到回复。如果可以,请考虑改用旧版(又名提供者)数据源,因为它们会在部署之间保留凭据。
或者,您可以使用TMSL“createOrReplace”脚本以编程方式应用密码。创建脚本等最简单的方法是连接到 SSMS 中的 Analysis Services,右键单击连接(也称为数据源),然后选择“脚本连接为”>“创建或替换到”>“新建查询编辑器窗口” ”。在生成的脚本中,确保密码设置正确:
{
"createOrReplace": {
"object": {
"database": [...] ,
"dataSource": "File/\\\\Share\\AcaiDataTempShare\\Data\\LumenEventPropertiesExport tsv"
},
"dataSource": {
[...]
"credential": {
"AuthenticationKind": "Windows",
"kind": "File",
"path": "\\\\Share\\acaidatatempshare\\data\\lumeneventpropertiesexport.tsv",
"Username": "domain\\username",
"Password": "<<< YOUR PASSWORD HERE >>>"
},
[...]
}
然后,您可以将此脚本作为部署管道的一部分调用 - 例如使用 PowerShell Invoke-AsCmd cmdlet。
推荐阅读
- lottie - 在lottie json中动态更改颜色
- django - 如何在 django 模板的 for 循环中使用 if 条件
- amazon-web-services - 错误消息:{"code":"BadRequest","message":"服务器不理解所请求的操作。","type":"client"}
- python - 使用 CSV 和多输出进行代码更正
- angular - 如何在Angular 7的多选下拉列表中预选选项
- python - 如何获得具有指定值的最后一行的排名?
- reactjs - 类型错误:firebase.auth 不是函数
- wordpress - 在 WordPress Gutenberg Block 插件中包含图像资产
- python - 如何在某些条件下制作一个 numpy 数组?
- python-3.x - 如何更新不同项目中的自定义库?