You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于.NET Core的Azure SSAS表格模型连接Azure SQL数据源问题

Azure SSAS表格模型连接Azure SQL的两种方式示例与最佳实践

1. 使用Azure AD认证创建数据源

代码示例

using Microsoft.AnalysisServices.Tabular;

// 连接Azure SSAS服务器
var server = new Server();
server.Connect("Provider=MSOLAP;Data Source=asazure://westus.asazure.windows.net/your-ssas-server;User ID=azuread\\your-admin@domain.com;");

// 获取或创建目标表格数据库
var database = server.Databases.FindByName("YourTabularDB") ?? new Database { Name = "YourTabularDB", ID = "YourTabularDB" };
if (!server.Databases.Contains(database.Name))
{
    server.Databases.Add(database);
    database.Update(UpdateOptions.ExpandFull);
}

// 配置Azure SQL数据源(Azure AD集成认证)
var dataSource = new ProviderDataSource
{
    Name = "AzureSQL_AAD_DataSource",
    ID = "AzureSQL_AAD_DataSource",
    ConnectionString = "Provider=SQLNCLI11;Data Source=your-azure-sql.database.windows.net;Initial Catalog=YourAzureSQLDB;Authentication=Active Directory Integrated;",
    ImpersonationMode = ImpersonationMode.ImpersonateAccount,
    Account = "azuread\\your-service-principal-id@tenant-id" // 服务主体格式,用用户账号则填对应AAD账号
};

// 添加数据源并更新模型
database.Model.DataSources.Add(dataSource);
database.Model.Update(UpdateOptions.ExpandFull);

最佳实践

  • 优先采用Azure AD托管标识替代用户账号/服务主体密钥,避免长期凭证泄露,托管标识无需手动维护密码。
  • 连接字符串Authentication参数可选值:
    • Active Directory Integrated:适用于本地开发环境或托管标识场景
    • Active Directory Password:用于AAD用户账号认证
    • Active Directory Service Principal:服务主体认证时需在连接字符串补充UID=客户端ID;PWD=客户端密钥
  • 确保AAD身份拥有Azure SQL数据库的db_datareader最小权限,以及Azure SSAS服务器的模型编辑权限。

2. 使用数据库用户名和密码创建数据源

代码示例

using Microsoft.AnalysisServices.Tabular;

// 连接Azure SSAS服务器
var server = new Server();
server.Connect("Provider=MSOLAP;Data Source=asazure://westus.asazure.windows.net/your-ssas-server;User ID=azuread\\your-admin@domain.com;");

var database = server.Databases.FindByName("YourTabularDB") ?? new Database { Name = "YourTabularDB", ID = "YourTabularDB" };
if (!server.Databases.Contains(database.Name))
{
    server.Databases.Add(database);
    database.Update(UpdateOptions.ExpandFull);
}

// 配置Azure SQL数据源(SQL账号认证)
var dataSource = new ProviderDataSource
{
    Name = "AzureSQL_SQLAuth_DataSource",
    ID = "AzureSQL_SQLAuth_DataSource",
    ConnectionString = "Provider=SQLNCLI11;Data Source=your-azure-sql.database.windows.net;Initial Catalog=YourAzureSQLDB;User ID=sql-account-name;",
    ImpersonationMode = ImpersonationMode.ImpersonateAccount,
    Account = "sql-account-name",
    Password = "your-strong-sql-password"
};

// 添加数据源并更新模型
database.Model.DataSources.Add(dataSource);
database.Model.Update(UpdateOptions.ExpandFull);

最佳实践

  • 绝对禁止硬编码密码,使用.NET Core配置系统+Azure Key Vault存储敏感凭证,通过IConfiguration读取。
  • SQL账号遵循最小权限原则,仅授予db_datareader等必要数据访问权限,避免过高权限带来的风险。
  • 开启Azure SQL数据库的审计功能,监控SQL账号的访问行为,及时发现异常操作。

通用最佳实践

  • 使用最新版Microsoft.AnalysisServices.Tabular NuGet包,确保支持Azure SQL和Azure AD的最新认证特性。
  • 添加数据源前先通过database.Model.DataSources.FindByName()检查是否已存在,避免重复创建。
  • 可调用dataSource.TestConnection()方法验证连接配置的正确性,提前排查问题。

内容的提问来源于stack exchange,提问作者Alberto Gentilcore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 01:54:22