假设您的环境中有许多应用程序,所有应用程序都将其连接字符串存储在Web配置中的SQL Server中。是否可以让应用程序从Active Directory中检索这些连接字符串?
我们正在移动一些数据库服务器,并希望能够从中心位置读取它们。建议使用Active Directory作为一种可能性,但我们不知道是否可能。
理论上,这将允许我们逐步更改我们的应用程序以使用AD来读取连接字符串,然后在移动数据库服务器时,在AD中进行一次更改以更新所有应用程序。
这可能吗?也许你有更好的建议。谢谢!
答案 0 :(得分:3)
从技术上讲,您无法将信息存储在LDAP中,因为它是一种协议,而不是存储机制。但是,我没有理由(我知道)您无法将信息存储在Active Directory或其他目录服务类型引擎中,并使用应用程序中的查询检索它们。您只需要提出一些组织方案,我会在库中建议一些常用代码或者允许您访问信息的东西。
我不是说将它存储在Active Directory中是最好的选择,但我相信你应该能够毫无问题地完成它。
答案 1 :(得分:1)
我们有一个设计来做到这一点。我们的架构允许多个服务器,每个服我们使用Active Directory来管理用户的属性,包括他们有权访问的数据库。
当时似乎是逻辑设计,因为我们要么必须这样做,要么有一个“主”数据库来指导。使用Active Directory,我们不再有单点故障。
不知道结果如何,我离开了那家公司。
答案 2 :(得分:1)
“LDAP应该用于目录信息”
这是什么意思?配置信息是存储在Dit中的理想选择 - 它是读密集,安全,复制和易于访问的。存储在Active Directory中的大部分内容都是“配置信息”。
答案 3 :(得分:0)
您可以创建一个非个人用户,并将连接字符串作为用户的属性,但这会误用LDAP,IMO。
更好的方法是使用依赖注入,只需要连接字符串等常用信息,在一个文件中,只需在应用程序启动时读入,或者在重新编译时将其注入。
例如,您可以使用Spring或Spring.NET,但是有无数的DI框架可以使用。
更新:您还可以创建一个包含此信息的数据库表,并且所有应用程序都可以从数据库中读取以获取其所有配置信息。
我认为,LDAP应该用于与目录相关的问题,以及现在的用户管理和帐户信息。
答案 4 :(得分:0)
您可以将连接字符串存储在任何您想要的位置。您甚至可以将它们作为DSN服务器上的TXT记录来执行。但是你必须自己构建解决方案框架。还要记住,连接字符串包含安全信息。 (如密码)。如果您将这些存储在LDAP中(我通常会说任何基于ldap的服务器),您将需要确保该属性不公开。好处是LDAP代理帐户(匿名连接)无法查看信息。缺点是您必须先执行LDAP绑定,然后才能从系统中获取信息。只要在将要进行数据库调用的客户端/服务器上缓存连接字符串,就不应该看到任何真正的性能问题。但是,如果必须在每次数据库调用之前查询LDAP服务器,则可能会遇到问题。
自定义对象甚至是现有对象的扩展属性可能是最好的。