将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记录限制。我已经完成了这一切。
此时,似乎还有其他一些问题。
这最终会增加我的报告视图中所需的代码,这可能会使其他数据库用户更难以更新,如果&在时机成熟时。至于我需要放弃视图并为报告创建存储过程。
每次用户访问报告时,这也会增加SQL Server之外的事务计数,以包含LDAP。
因此,为了解决这个问题,我可以将LDAP数据的原始查询包装起来创建一个表,然后创建一个每隔一段时间运行该存储过程的作业。
这两个选项都解决了维护用户表的问题,但这并不完美,因为AD可以随时进行更改。
哪个选项更好?
如果SSIS包是更好的路线,我很好奇为什么那是更好的路线。我并不反对回过头来弄清楚我在SSIS包装上缺少什么才能让它发挥作用。
如果我想获得最新的Active Directory列表,是否还有其他选项?
感谢。