如何实现SSIS通过OData或SQL Server连接认证PowerApps Dataverse
解决方案:SSIS连接Dataverse的可行路径及疑问解答
一、OData接口连接:自定义脚本组件实现OAuth认证
SSIS原生OData连接管理器不支持Entra ID的客户端凭据流,需通过脚本任务/组件手动实现认证逻辑:
- 在SSIS项目的脚本组件中引入
Microsoft.Identity.ClientNuGet包 - 编写代码获取Bearer Token:
var clientId = "你的Entra客户端ID"; var clientSecret = "你的客户端密钥"; var tenantId = "你的租户ID"; var scope = "https://你的组织域名.crm.dynamics.com/.default"; var app = ConfidentialClientApplicationBuilder .Create(clientId) .WithClientSecret(clientSecret) .WithTenantId(tenantId) .Build(); var result = await app.AcquireTokenForClient(new[] { scope }) .ExecuteAsync(); var accessToken = result.AccessToken;
- 使用
HttpClient发起请求,在请求头中携带Authorization: Bearer {accessToken},访问Dataverse的OData端点(如https://你的组织域名.crm.dynamics.com/api/data/v9.2/),将返回数据加载到SSIS数据流中。
二、ADO.NET连接Dataverse:正确配置SQL Server提供程序
Dataverse支持通过SQL Server ADO.NET提供程序连接,需严格遵循以下配置:
- 标准连接字符串格式:
Server=tcp:你的组织域名.crm.dynamics.com,5558;Authentication=Active Directory Password;Database=你的组织唯一名称;Uid=授权用户UPN;Pwd=用户密码;Encrypt=Yes;TrustServerCertificate=No;
- SSIS连接管理器配置要点:
- 选择「ADO.NET连接管理器」,提供程序选
.NET Framework Data Provider for SqlServer - 认证模式选「Active Directory Password」(对应「Entra Password」)
- 服务器地址必须指定端口
5558,格式为你的组织域名.crm.dynamics.com,5558 - 数据库名称填写Dataverse组织的唯一名称(可在Power Platform管理中心查询)
- 选择「ADO.NET连接管理器」,提供程序选
三、核心疑问解答
- 是否可通过ADO.NET连接管理器连接Dataverse?
可以,Dataverse官方支持SQL Server ADO.NET提供程序的连接,只要配置正确的连接参数即可。 - 通用场景下,ADO.NET/SQL Server的Entra认证连接是否可行?
完全可行,SQL Server ADO.NET提供程序支持多种Entra认证模式(Integrated、Password、客户端证书、客户端密钥等),适用于Azure SQL Database、Dataverse等场景。 - 「Entra Password」认证的用户名和密码应填写什么?
用户名是拥有Dataverse访问权限的用户UPN(用户主体名称)(如user@你的租户域名.onmicrosoft.com),密码为该用户的Microsoft 365登录密码。若用户启用MFA,此方式不可用,需切换到「Active Directory Integrated」(当前Windows用户需有权限)或客户端凭据流认证。
内容的提问来源于stack exchange,提问作者Seva Alekseyev
相关产品推荐
相关产品推荐

