【问题标题】:How to access Active directory from within SQL Server?如何从 SQL Server 中访问 Active Directory?
【发布时间】:2014-05-27 08:02:23
【问题描述】:

我需要提取/检索公司的 AD 用户列表。我拥有对 SQL Server 数据库的完全访问权限(开发人员访问权限)(我认为它等同于 Oracle 架构?)。我拥有像 DBA 一样管理它的全部权利。

  1. 我在网上搜索过各种指南,大多数在代码中使用use master。即使我不熟悉 SQL Server,这是否意味着我需要对 SQL Server 安装进行类似 dba 的访问? 如果您也可以包含工作代码,那就太好了。

  2. 我正在考虑创建一个 SQL Server 视图来存储数据。这可能吗?我想是的,但只是想检查一下。我看过一些例子,但都是从 2003 年开始的。从那以后可能发生了很多变化。

  3. 您认为我可能还需要什么?

非常感谢提前

【问题讨论】:

    标签: sql-server sql-server-2008 active-directory


    【解决方案1】:

    我过去曾用它来查询 AD 用户。

    SELECT
        * 
    FROM
        OPENROWSET('ADSDSOObject', 
               '127.0.0.1';
               'domain\username';'password', 
               'SELECT 
                    distinguishedName, 
                    manager, 
                    objectGUID, 
                    samAccountName, 
                    givenName, 
                    SN, 
                    mail 
                FROM 
                    ''LDAP://127.0.0.1/DC=namepart,DC=namepart'' 
                WHERE 
                    objectClass=''User'' 
                AND objectCategory=''Person'' 
    '); 
    

    您需要先启用 ad-hoc 分布式查询。

    EXEC sp_configure 'Ad Hoc Distributed Queries',1;
    GO
    RECONFIGURE;
    

    【讨论】:

      【解决方案2】:

      基本上:你没有。从程序运行它,不要从 SQL Server 中运行它。如果需要,请定期将 SQL Server 中的表与您从 AD 中提取的数据同步。

      我在网上搜索过各种指南,大多数使用“使用 master”在代码中。即使我不熟悉 SQL Server, 这是否意味着我需要对 SQL Server 安装进行类似 dba 的访问? 如果您也可以包含工作代码,那就太好了。

      考虑在您职业生涯的某个阶段阅读一些文档。 “使用主服务器”正是如此——它告诉 SQL Server 使用名为 MASTER 的数据库。由于所有操作都在当前数据库(上下文)中执行,这会将这个上下文放到一个已知位置。对于某些事情,这可能很好,因为删除当前数据库可能会导致问题,因此最好先更改当前上下文来完成某些事情。所有这些都在文档中。

      我正在考虑创建一个 SQL Server 视图来存储数据。

      你知道 SQL 吗?任何地方都没有视图存储数据。它可能会实现它,但它永远不会存储。这就是 TABLES 所做的。视图就像宏。

      你认为我可能还需要什么?

      文档。阅读。你错过了我所知道的任何 SQL 服务器实现的基础知识——既不是 Oracle,也不是 Informix、DB2、Microsoft SQL Server。) VIEW 不是主数据存储。基础知识。

      一般来说,不要尝试从任何数据库服务器中访问 AD。

      【讨论】:

      • 其实可以。您可以通过将 SQL Server 设置为链接服务器并使用 OPENQUERY 从 SQL Server 查询 AD,它工作得很好,尽管编写查询可能会很痛苦,因为您最终会陷入引号地狱。没有充分的理由不应该从数据库服务器访问 AD:它只是另一个数据存储。当然,如果 OP 没有管理员权限,那么他们将需要他们的 DBA 根据this walkthrough 设置链接服务器。
      • @StevePettifer:该功能 (a) 非常有限(无法访问 AD 中的任何多值属性)和 (b) 已弃用,因此我绝对建议不要使用此功能开始新的开发。 ...
      • @marc_s 是的,但您可以查询它们。也就是说,我没有意识到它已被弃用,这是不使用它的一个很好的理由,答案应该解决的问题,而不是没有解释的有点居高临下的“不要这样做”的声明。那时,CLR 集成可能是要走的路。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多