sql server drop login failed
https://stackoverflow.com/questions/37275/sql-query-for-logins
https://www.mssqltips.com/sqlservertip/4299/sql-server-errors-with-drop-login-and-drop-user/
获取所有的用户
SELECT sid FROM master..syslogins
筛选出db owner不是sa的数据库
SELECT ROW_NUMBER() OVER ( ORDER BY name ) AS RowNumber , name AS DatabaseName , SUSER_SNAME(owner_sid) AS DBOwner , is_read_only , state_desc FROM sys.databases WHERE SUSER_SNAME(owner_sid) <> 'sa';
通过下面的sql,批量将数据库owner不是sa的设置为sa。 排除了offline和readonly的,并且排除掉master,model,tempdb,distribution四个系统数据库
DECLARE @MyTable TABLE ( RowNumber INT NOT NULL , DatabaseName NVARCHAR(500) NOT NULL , DBOwner NVARCHAR(500) NOT NULL ); INSERT INTO @MyTable ( RowNumber , DatabaseName , DBOwner ) SELECT ROW_NUMBER() OVER ( ORDER BY name ) AS RowNumber , name AS DatabaseName , SUSER_SNAME(owner_sid) AS DBOwner FROM sys.databases WHERE state_desc <> 'OFFLINE' AND is_read_only = 0 AND name NOT IN ( 'master', 'tempdb', 'model' , 'distribution' ); DECLARE @CurrentRowNumber INT = 1; DECLARE @MaxRowNumber INT; SELECT @MaxRowNumber = MAX(RowNumber) FROM @MyTable; DECLARE @SQLString NVARCHAR(500); DECLARE @TempDatabaseName NVARCHAR(500); WHILE ( @CurrentRowNumber <= @MaxRowNumber ) BEGIN SELECT @TempDatabaseName = DatabaseName FROM @MyTable WHERE RowNumber = @CurrentRowNumber; SET @SQLString = 'Use ' + @TempDatabaseName + '; EXECUTE sp_changedbowner ''sa'''; PRINT @SQLString; EXECUTE sp_executesql @SQLString; SET @CurrentRowNumber = @CurrentRowNumber + 1; END;
作者:Chuck Lu GitHub |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了