如何从与给定名称匹配的服务器上的所有数据库中删除特定安全用户?

qJa*_*ake 4 sql sql-server sql-server-2005

我有一个类似的设置:

  • SQL-2005-SRVR
    • 安全
      • MYAPP_登录
    • 数据库1
      • 安全
        • MYAPP_USER
        • 其他用户
    • 数据库2
      • 安全
        • 其他用户
    • 数据库3
      • 安全
        • MYAPP_USER
        • 测试用户
    • 数据库4
      • 安全
        • MYAPP_USER
    • 数据库5
      • 安全
        • 其他用户
        • 测试用户

我想弄清楚如何编写一个 SQL 脚本,该脚本将从MYAPP_USER服务器上的所有数据库中删除所有匹配的用户。我不熟悉如何从单个脚本中迭代多个数据库,甚至不熟悉如何查询用户是否存在于该数据库中。此外,我不确定该脚本将从 - mastermsdb、运行什么上下文/目录model

在上面的示例中Database1Database3、 和Database4都将MYAPP_USER删除其用户名。

我还需要从服务器本身删除登录名,但我知道这就像DROP LOGIN MYAPP_LOGIN.

该脚本将以服务器管理员身份运行,因此权限不是问题。

我将如何删除每个数据库中与名称匹配的所有用户MYAPP_USER

小智 7

EXECUTE master.sys.sp_MSforeachdb 'USE [?]; 
begin try
  drop user [<put a name in here>]
  print ''did drop at ?''
end try
begin catch
  print ''did not drop at ?''
end catch
'
GO
Run Code Online (Sandbox Code Playgroud)

容易多了。你可以知道它在哪里起作用。