• 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;
  • 相关阅读:
    RocketMQ
    Docker的基本使用
    logstash、ELK
    spring cloud杂文总结
    手写一个starter
    @SpringBootApplication你知多少?
    使用ElasticSearch
    ElasticSearch安装
    啥是ElasticSearch???
    socket、端口、进程的关系
  • 原文地址:https://www.cnblogs.com/chucklu/p/8309129.html
Copyright © 2020-2023  润新知