SQL Server&活动目录

时间:2017-06-02 19:01:28

标签: reporting-services ssis active-directory ldap sql-server-2016

将SQL Server与Active Directory(AD)集成的最佳做法是什么?

NB。我正在使用SQL Server 2016

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

创建的问题是必须维护User表,并且Active Directory是动态的。现在我有时间开发更好的选项,我想将LDAP数据与SQL Server相关联。

我想知道这样做的最佳做法是什么。

我追求的一种方法是通过SSIS包ADO.Net连接。然后转换数据。然后将其加载到表中。然后安排一个工作来运行包,但是我经常需要它。这是有问题的,因为无论出于何种原因我都无法使数据转换过程起作用。

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

此时,似乎还有其他一些问题。

  1. 这最终会增加我的报告视图中所需的代码,这可能会使其他数据库用户更难以更新,如果&在时机成熟时。至于我需要放弃视图并为报告创建存储过程。

  2. 每次用户访问报告时,这也会增加SQL Server之外的事务计数,以包含LDAP。

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

    这两个选项都解决了维护用户表的问题,但这并不完美,因为AD可以随时进行更改。

    哪个选项更好?

    如果SSIS包是更好的路线,我很好奇为什么那是更好的路线。我并不反对回过头来弄清楚我在SSIS包装上缺少什么才能让它发挥作用。

    如果我想获得最新的Active Directory列表,是否还有其他选项?

    感谢。

0 个答案:

没有答案