Reporting services sqlserver&;活动目录

Reporting services sqlserver&;活动目录,reporting-services,ssis,active-directory,ldap,sql-server-2016,Reporting Services,Ssis,Active Directory,Ldap,Sql Server 2016,将SQL Server与Active Directory(AD)集成的最佳实践是什么 注意。我正在使用SQL Server 2016 问题的症结:我正在使用SSRS 2016,有几个报告需要根据访问报告的用户进行过滤。最初,我创建了一个需要访问报告的用户表。然后在报表生成器中,我将UserID作为参数传递到查询中,以便生成的数据集仅限于用户需要查看的数据 由此产生的问题是必须维护用户表,并且活动目录是动态的。现在我有时间开发一个更好的选项,我想将LDAP数据链接到SQL Server 我想知道这

将SQL Server与Active Directory(AD)集成的最佳实践是什么

注意。我正在使用SQL Server 2016

问题的症结:我正在使用SSRS 2016,有几个报告需要根据访问报告的用户进行过滤。最初,我创建了一个需要访问报告的用户表。然后在报表生成器中,我将
UserID
作为参数传递到查询中,以便生成的数据集仅限于用户需要查看的数据

由此产生的问题是必须维护用户表,并且活动目录是动态的。现在我有时间开发一个更好的选项,我想将LDAP数据链接到SQL Server

我想知道这样做的最佳实践是什么

我实现这一点的一种方法是通过SSIS包ADO.Net连接。然后转换数据。然后把它放进一张桌子里。然后安排一个作业来运行包,不管我多么频繁地需要它。这是有问题的,因为无论出于何种原因,我都无法让数据转换过程正常工作

第二种方法是为广告创建一个链接服务器实例。我的研究表明,我需要创建一个函数来克服xp_sprintf函数的字符串限制。然后利用临时表和循环LDAP数据,绕过AD的1000条记录限制。我已经能够完成所有这些

不过,在这一点上,似乎还有一些其他问题

  • 这最终会增加“我的报告”视图中所需的代码,这可能会使其他数据库用户更难在时机成熟时进行更新。我需要放弃视图,创建存储过程,以便从中提取报告

  • 这还会增加SQL Server之外的事务计数,以便在用户每次访问报表时都包含LDAP

  • 因此,为了解决这个问题,我可以包装LDAP数据的原始查询以创建一个表,然后创建一个作业以每隔一段时间运行该存储过程

    这两个选项都解决了维护用户表的问题,这很好,但并不完美,因为广告随时都可能发生变化

    这里哪种选择更好

    如果SSIS包是更好的路线,我很好奇为什么这是更好的路线。我并不反对回去,找出SSIS包中缺少的东西,让它发挥作用

    如果我想得到最新的Active Directory列表,

    ,还有其他的选择吗?
    谢谢。

    几年前我也遇到过类似的问题。我最终创建了一个从MSSQL到LDAP/AD的链接服务器,然后按照一个时间表运行一个作业,该时间表填充了一个用户表和他们各自的组,以及一些其他内容,如下属和他们的经理列表。这对于当时的报告和其他应用程序非常有用。我确实考虑过其他选项,但这是我能找到的最简单/最干净的了。@AlanSchofield谢谢。我使用了与@AlanSchofield相同的技术,到目前为止它一直运行顺利。