T-SQL是否有循环语句?类似C语言的for?如何查看有哪些用户连接到服务器上?如何强制其退出?

我要删除一个登陆,直接用sp_droplogin的时候系统提示:  
  //登录   'dubin'   在一个或多个数据库中有别名或映射到了用户上。请除去这些用户或别名后再除去该登录。  
   
  于是我就想了个办法,依次查找每个数据库的sysusers,如果存在这个用户就先将他删除,全部都删除完了就可以删除该登陆了。  
  如此当然可以一个一个数据库的手动查找删除,但要是数据库多了就麻烦了。于是我想通过一个循环,先查   master   数据库中的   sysdatabase   中找出有哪些数据库,在依次循环查找是否有这个用户,有则删除之。如此则需用循环语句,但我不知道T-SQL的循环语句是怎么样的,请高手指教。  
  还有:  
  如何查看有哪些用户连接到服务器上?如何强制其退出?  
declare   @username   sysname  
  set   @username='aa' --要删除的登录名      
  declare   @s   nvarchar(4000)  
  declare   tb   cursor   local   for  
  select   N'use   ['+replace(name,N']',N']]')  
  +N']  
  if   exists(select   *   from   sysusers   where   islogin=1   and   name=@username)  
  exec   sp_revokedbaccess   @name_in_db   =   @username'  
  from   master.dbo.sysdatabases  
  open   tb  
  fetch   tb   into   @s  
  while   @@fetch_status=0  
  begin  
  exec   sp_executesql   @s,N'@username   sysname',@username  
  fetch   tb   into   @s  
  end  
  close   tb  
  deallocate   tb  
  exec   sp_droplogin   @loginame   =   @username
posted @ 2007-07-22 18:14  大牛博客  阅读(1373)  评论(0编辑  收藏  举报