如何使用 AMO 表格库将结构化 ODBC 数据源添加到表格模型
How do I add a structured ODBC data source to a tabular model using the AMO tabular library
将结构化 ODBC 数据源添加到我的模型导致错误。
我想在兼容性级别为 1400 的 SQL Analysis Services 服务器上生成表格模型,使用 Microsoft.AnalysisServices.Tabular 库使用结构化(即 M / Power Query)、非遗留(即.ProviderDataSource) 数据源。
我使用 NuGet 包安装了库 Microsoft.AnalysisServices.retail.amd64 (16.3.0).
这是我的数据源定义。
myDatabase.Model.DataSources.Add(new StructuredDataSource()
{
Name = "ODBC",
Description = "An structured ODBC data source definition",
ConnectionDetails = new ConnectionDetails()
{
Protocol = DataSourceProtocol.Odbc
},
Credential = new Credential()
{
AuthenticationKind = AuthenticationKind.UsernamePassword,
EncryptConnection = false,
Username = "MYUSERNAME",
Password = "MYPASSWORD"
}
}
当我运行这段代码时,我得到:
COM error: Microsoft.Data.Mashup; The given data source reference is not a valid data source.
它没有给我任何指示去哪里看或具体有什么问题。我怀疑定义需要一个服务器地址,但是根据文档无法设置ConnectionDetails对象的地址属性。
ConnectionDetails.Address Property
Address of this connection. It can't be set, instead it should be modified directly.
在查看我的问题并进一步调查文档时,我构建了这个解决方案。对于那些遇到同样问题的人,我认为在这里 post 会很好。
Credential credential = new Credential()
{
AuthenticationKind = AuthenticationKind.UsernamePassword,
EncryptConnection = false,
Username = "MYUSERNAME",
Password = "MYPASSWORD" // Please note that this won't persist.
};
ConnectionDetails connectionDetails = new ConnectionDetails("{ 'protocol': 'odbc', 'address': { 'options': { 'dsn': 'MYODBCDSN' } }, 'authentication': null, 'query': null }");
dbWithDataSource.Model.DataSources.Add(new StructuredDataSource()
{
Name = "ODBC",
Description = "An ODBC structured (ie. non-legacy) data source definition",
ConnectionDetails = connectionDetails,
Credential = credential,
Options = new DataSourceOptions( "{ 'hierarchicalNavigation': true }" )
}
我基本上所做的是在 ConnectionDetails 构造函数中传入一个 JSON 字符串,同时设置 'read-only' 地址 属性。
将结构化 ODBC 数据源添加到我的模型导致错误。
我想在兼容性级别为 1400 的 SQL Analysis Services 服务器上生成表格模型,使用 Microsoft.AnalysisServices.Tabular 库使用结构化(即 M / Power Query)、非遗留(即.ProviderDataSource) 数据源。 我使用 NuGet 包安装了库 Microsoft.AnalysisServices.retail.amd64 (16.3.0).
这是我的数据源定义。
myDatabase.Model.DataSources.Add(new StructuredDataSource()
{
Name = "ODBC",
Description = "An structured ODBC data source definition",
ConnectionDetails = new ConnectionDetails()
{
Protocol = DataSourceProtocol.Odbc
},
Credential = new Credential()
{
AuthenticationKind = AuthenticationKind.UsernamePassword,
EncryptConnection = false,
Username = "MYUSERNAME",
Password = "MYPASSWORD"
}
}
当我运行这段代码时,我得到:
COM error: Microsoft.Data.Mashup; The given data source reference is not a valid data source.
它没有给我任何指示去哪里看或具体有什么问题。我怀疑定义需要一个服务器地址,但是根据文档无法设置ConnectionDetails对象的地址属性。
ConnectionDetails.Address Property
Address of this connection. It can't be set, instead it should be modified directly.
在查看我的问题并进一步调查文档时,我构建了这个解决方案。对于那些遇到同样问题的人,我认为在这里 post 会很好。
Credential credential = new Credential()
{
AuthenticationKind = AuthenticationKind.UsernamePassword,
EncryptConnection = false,
Username = "MYUSERNAME",
Password = "MYPASSWORD" // Please note that this won't persist.
};
ConnectionDetails connectionDetails = new ConnectionDetails("{ 'protocol': 'odbc', 'address': { 'options': { 'dsn': 'MYODBCDSN' } }, 'authentication': null, 'query': null }");
dbWithDataSource.Model.DataSources.Add(new StructuredDataSource()
{
Name = "ODBC",
Description = "An ODBC structured (ie. non-legacy) data source definition",
ConnectionDetails = connectionDetails,
Credential = credential,
Options = new DataSourceOptions( "{ 'hierarchicalNavigation': true }" )
}
我基本上所做的是在 ConnectionDetails 构造函数中传入一个 JSON 字符串,同时设置 'read-only' 地址 属性。