如何通过编程方式更新SSRS数据源凭据的Windows账号密码
问题根因
你仅修改了本地内存中的DataSourceDefinition对象属性,未将变更提交到SSRS服务器,因此修改不会落地生效。
解决步骤
- 完成密码属性赋值后,先确认两个和凭据存储相关的属性配置与界面选择一致
- 调用SSRS服务的
SetItemDataSources接口提交修改
完整可用代码
ReportingService2010.ReportingService2010 rsClient = new ReportingService2010.ReportingService2010(); rsClient.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; // 获取报表关联的数据源 DataSource[] dataSources = rsClient.GetItemDataSources("/MyFolder/MyReport"); DataSource ds = dataSources[0]; DataSourceDefinition dsd = (DataSourceDefinition)ds.Item; // 配置凭据属性和界面选择对齐 dsd.CredentialRetrieval = ReportingService2010.CredentialRetrievalEnum.Store; dsd.WindowsCredentials = true; // 更新密码 dsd.Password = "MyPwd"; // 关键步骤:将修改后的数据源提交回SSRS服务器 rsClient.SetItemDataSources("/MyFolder/MyReport", dataSources);
注意事项
- 运行代码的身份需要具备目标报表路径的内容编辑权限
- 如果是共享数据源,将路径替换为共享数据源的存储路径即可,调用逻辑完全一致
- 修改完成后可重新调用
GetItemDataSources接口验证属性是否更新,再前往SSRS页面测试连接
内容的提问来源于stack exchange,提问作者faujong
相关产品推荐
相关产品推荐

