用于删除不再位于 Active Directory 中的帐户的 SQL Server 脚本

8 security sql-server sql-server-2000 logins

我们有一个 SQL Server 2000,很快就会迁移到 SQL Server 2005。它创建了多年的 Windows 身份验证帐户,这些帐户不再存在于 Active Directory 中,这会阻止复制数据库向导在新服务器上创建这些帐户。

是否有脚本或某种自动方法可以删除我们的 Active Directory 中不再存在的帐户?


编辑:需要明确的是,需要删除的登录名是在 SQL Server 2000 上,它不支持该DROP LOGIN命令。

另外,手动删除 SQL Server 2000 中exec sp_droplogin 'loginname'的登录名将(我认为)完成,但在我的,无法找到登录名,无论我使用“域\登录名”还是“登录名”

只是为了增加混乱,exec sp_revokelogin 'domain\loginname'似乎确实有效。

编辑2:终于解决了这个问题。许多有问题的登录以编程方式添加到数据库中,虽然它们在用户可以连接的意义上工作,但当 SQL Server 期望没有域时,用户名与 NT 登录名的域前缀登录不匹配,反之亦然反之。

为了解决这个问题,我修改了 sp_droplogin 过程以删除其中一项出错的检查。

我接受我自己的答案,因为它适用于 SQL Server 2000。

小智 6

我最后做的是列出帐户:

    exec sp_validatelogins
Run Code Online (Sandbox Code Playgroud)

并运行

    exec sp_dropuser loginname
    exec sp_droplogin loginname
Run Code Online (Sandbox Code Playgroud)

在结果上。