SQLServer 使用ADSI执行分布式查询ActiveDorectory对象
发布时间:2024-01-18 11:22:18
Step 1:Creating a Linked Server.
EXEC sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5', 'ADSDSOObject', 'adsdatasource'
Step 2:Creating a SQL Server Authenticated Login
EXEC sp_addlinkedsrvlogin @rmtsrvname = N'ADSI', @locallogin = NULL , @useself = N'False', @rmtuser = N'domain\Account', @rmtpassword = N'Password'
对于 SQL Server 授权登录,可以使用sp_addlinkedsrvlogin 系统存储过程配置用于连接到目录服务的适当的登录/密码.
参考这里: http://blogs.msdn.com/euanga/archive/2007/03/22/faq-how-do-i-query-active-directory-from-sql-server.aspx
如果SQLServer使用Windows 授权登录,只需自映射就足以通过使用 SQL Server 安全委托来访问AD。简单点说就是直接运行第三步语句即可.
Step 3:Querying the Directory Service.
-- Query for a list of User entries in an OU using the SQL query dialect
select convert(varchar(50), [Name]) as FullName,
convert(varchar(50), Title) as Title,
convert(varchar(50), TelephoneNumber) as PhoneNumber
from openquery(ADSI,
'select Name, Title, TelephoneNumber
from ''LDAP://OU=Directors,OU=Atlanta,OU=Intellinet,DC=vizability,DC=intellinet,DC=com''
where objectClass = ''User''')
-- Query for a list of Group entries in an OU using the SQL query dialect
select convert(varchar(50), [Name]) as GroupName,
convert(varchar(50), [Description]) GroupDescription
from openquery(ADSI,
'select Name, Description
from ''LDAP://OU=VizAbility Groups,DC=vizability,DC=intellinet,DC=com''
where objectClass = ''Group''')
引用:
http://msdn2.microsoft.com/en-us/library/aa772380.aspx
http://www.atlantamdf.com/presentations/AtlantaMDF_111201_examples.txt
说明:但是这样默认查询出来的是1000个对象.怎么办呢?
方法一,通过字母来循环.见以下:
CREATE TABLE #tmpADUsers
( employeeId varchar(10) NULL,
SAMAccountName varchar(255) NOT NULL,
email varchar(255) NULL)
GO
/**//* AD is limited to send 1000 records in one batch. In an ADO interface you can define this batch size, not in OPENQUERY.
Because of this limitation, we just loop through the alphabet.
*/
DECLARE @cmdstr varchar(255)
DECLARE @nAsciiValue smallint
DECLARE @sChar char(1)
SELECT @nAsciiValue = 65
WHILE @nAsciiValue < 91
BEGIN
SELECT @sChar= CHAR(@nAsciiValue)
EXEC master..xp_sprintf @cmdstr OUTPUT, 'SELECT employeeId, SAMAccountName, Mail FROM OPENQUERY( ADSI, ''SELECT Mail, SAMAccountName, employeeID FROM ''''LDAP://dc=central,dc=mydomain,dc=int''''WHERE objectCategory = ''''Person'''' AND SAMAccountName = ''''%s*'''''' )', @sChar
INSERT #tmpADUsers
EXEC( @cmdstr )
SELECT @nAsciiValue = @nAsciiValue + 1
END
DROP TABLE #tmpADUsers
以上方法源自于:http://www.sqlservercentral.com/Forums/Topic231658-54-1.aspx#bm231954
我推荐的方法:在微软搜索到的.如何通过 NTDSUtil为服务器修改限制 maxPageSize
1. | Click Start, and then click Run. |
2. | In the Open text box, type ntdsutil, and then press ENTER. To view help at any time, type ? at the command prompt. |
Modifying policy settings
1. | At the Ntdsutil.exe command prompt, type LDAP policies, and then press ENTER. |
2. | At the LDAP policy command prompt, type Set setting to variable, and then press ENTER. For example, type Set MaxPoolThreads to 8. |
3. | You can use the Show Values command to verify your changes. |
4. | When you finish, type q, and then press ENTER. |
5. | To quit Ntdsutil.exe, at the command prompt, type q, and then press ENTER. |
资料来源:
http://support.microsoft.com/kb/315071/en-us
http://support.microsoft.com/?scid=kb%3Bzh-cn%3B299410&x=16&y=10
如何使用SQL查询活动目录对象语法: http://www.microsoft.com/china/technet/community/columns/scripts/sg0505.mspx#EMBAC


猜你喜欢
- 网页的圆角处理,其实最开始的九宫格的表格处理是挺方便的,只是现在都不用表格布局了,自然就被非法取缔了。呵呵。微软的有VML画圆角,由于只是它
- 本文实例为大家分享了python多线程下信号处理程序示例的具体代码,供大家参考,具体内容如下下面是一个网上转载的实现思路,经过验证,发现是可
- 本文主要介绍了pandas统计重复值次数的方法实现,分享给大家,具体如下:from pandas import DataFramedf =
- 1.对数据库常用命令1.连接数据库mysql -u用户名 -p密码2.显示已有数据库show databases;3.创建数据库create
- python嵌套函数使用外部函数变量的方法,Python2和Python3均可使用python3 def b(): b = 1 def bc
- 关于Ajax在使用中要使浏览器产生前进后退的方法,网上比较多的方法有两种:一是采用hash值的方式,这是我们在地图preview版中使用的方
- 先说一下背景和要求背景:由于业务或是其他不描述的原因的问题导致原有存储的数据发生变动,与现有数据有差别,但还是能勉强看明白数据内容。要求:实
- 损失函数通过torch.nn包实现,1 基本用法criterion = LossCriterion() #构造函数有自己的参数loss =
- python爬虫学习之定向爬取淘宝商品价格,供大家参考,具体内容如下import requestsimport redef getHTMLT
- 本文实例讲述了MySQL学习笔记之数据定义表约束,分页方法。分享给大家供大家参考,具体如下:1. primary key 主键特点:主键是用
- Django 基本命令本节主要是为了让您了解一些django最基本的命令,请尝试着记住它们,并且多多练习下1. 新建一个 django pr
- 1. 栗子为了加深大家的印象,首先我们来看个例子:图示如下:2. 矩形计算面积我们知道,在数学中,积分运算表示上述曲线和x轴围成的封闭区域的
- .data文件格式.data文件是用来存储数据的一种文件格式。之前通常数据是用逗号隔开或tab健隔开的格式,现在也可能是文本文件格式或二进制
- 背景golang版本:1.16之前遇到的问题,docker启动时禁用了oom-kill(kill后服务受损太大),导致golang内存使用接
- 本文实例讲述了php查询whois信息的方法。分享给大家供大家参考。具体如下:这里使用php通过查询whois信息的网站列表进行查询func
- 匿名函数lambdaPython使用lambda关键字创造匿名函数。所谓匿名,意即不再使用def语句这样标准的形式定义一个函数。这种语句的目
- 前言今天学习Django框架,用ajax向后台发送post请求,直接报了403错误,说CSRF验证失败;先前用模板的话都是在里面加一个 {%
- 在深度学习的数据训练过程中,虽然tensorflow和pytorch都会自带打乱数据进行训练的方法,但是当我们自己生成数据,或者某些情况下依
- 在python中我们可以使用openCV给图片添加水印,这里注意openCV无法添加汉字水印,添加汉字水印上可使用PIL库给图片添加水印一:
- 一,问题因为我想在我的服务器上部署两个vue项目,但是vue打包后默认的项目名是dist,这样子就跟我上一个vue项目冲突了。因此查了一下资