使用sp_OACreate出现的怪问题

瘦身小蚂蚁 2008-12-04 07:58:29
/*
功能:将AD用户加入组
*/

CREATE PROCEDURE [dbo].[AddToGroup]
(
@Userid Varchar(30),
@GroupId VarChar(30)
)
AS
declare @i int,@intRet int,@intRetCode int,@strErr varchar (255),@strErr1 varchar (255),@CurrentLDAP varchar (200)

Declare @bitUserExists Bit
Set @bitUserExists=0
Declare @bitGroupExists Bit
Set @bitGroupExists=0

Declare @OpResult Int
Set @OpResult=0

/* 首先创建Com 实例 */
exec @intRetCode = sp_OACreate 'cmrADUse.ADUser', @i out
/* 创建成功,开始调用 */
IF (@intRetCode <> 0) goto on_error

EXEC @intRetCode = sp_OAMethod @i,'FindUser',@bitUserExists Out,@Userid /* 查找AD用户 */

If @bitUserExists=1
Begin
EXEC @intRetCode = sp_OAMethod @i,'FindUser', @bitGroupExists Out,@GroupId /* 查找AD组 */
If @bitGroupExists=1
Begin
-- 将AD用户加入组
EXEC @intRetCode = sp_OAMethod @i,'AddMemberToGroup',null,@Userid,@GroupId /* 将AD用户加入组 */
Set @OpResult=0
End
Else
Begin
Print '不存在AD组:'+@GroupId
Set @OpResult=-2
End
End
Else
Begin
Print '不存在AD用户:'+@Userid
Set @OpResult=-1
End


/* 销毁Com 实例 */
exec sp_OADestroy @i
RETURN(@OpResult)

on_error:
BEGIN
/* 错误处理 */
EXEC sp_OAGetErrorInfo @i, @strErr OUT, @strErr1 OUT
PRINT '调用方法失败,失败的原因是:'
PRINT @strErr + ' ' + @strErr1
EXEC sp_OADestroy @i
RETURN(1)
END

当调用这个存储过程(第一个参数为'liutao02')时,会出现提示信息:“不存在AD用户:liutao02”
[AddToGroup] 'liutao02','123456'
只有在第一个参数为'liutao02'时出现此提示,查看AD,里面有liutao02用户并且无异常状态


请问各位大侠,这是怎么回事?
...全文
153 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcuandy 2008-12-05
  • 打赏
  • 举报
回复
不太明白,域用户操作为什么要放在sql里完成。

"不存在AD用户:liutao02"
查一下,这个用户是域用户还是域服务器上的本机帐户。

还有一点,就是记不起,adsi里调用finduser方法,或者枚举用户时,输入 或返回的 只是用户,还是要带路径。你可自己做个测试,列出所有域用户,看它返回的是什么,用户名有没有前辍。

另外,记得系统盘符下,ms已提供了adsi接口操作的vbs,只需调用就可以了。


这里没有域环境,无法测试。
瘦身小蚂蚁 2008-12-05
  • 打赏
  • 举报
回复
麻烦各位高手帮我看一下吧!

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧