--각 데이터베이스에 대한 사용자 계정 정보

 

DECLARE @tmpstr  varchar (1024)

 

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'TMP_DB_USER_ROLE')

    DROP TABLE TMP_DB_USER_ROLE

 

GO

 

CREATE TABLE TMP_DB_USER_ROLE

(

Database_Name VARCHAR(20) NOT NULL

, UserName SYSNAME NOT NULL

, UserRole SYSNAME NOT NULL

, type CHAR(1) NOT NULL

, type_desc NVARCHAR(120) NULL

, default_schema_name SYSNAME NULL

)

GO

 

EXEC sp_msforeachdb

'

INSERT INTO TMP_DB_USER_ROLE(Database_Name, UserName, UserRole, type, type_desc, default_schema_name)

SELECT  ''?'' AS Database_Name  -- 데이터베이스이름

,dp.name AS UserName            -- 계정이름

,dp2.name AS UserRole           -- 계정역활

,dp.type                        -- S : SQL 로그인

                                -- U : Windows 로그인

                                -- G : Windows 그룹

                                -- R : 서버역활

,dp.type_desc

,dp.default_schema_name         -- 기본스키마

FROM [?].sys.database_principals AS dp

INNER JOIN [?].sys.database_role_members AS dr

        ON dp.principal_id = dr.member_principal_id

INNER JOIN [?].sys.database_principals AS dp2

    ON dr.role_principal_id = dp2.principal_id

WHERE dp2.name LIKE ''%db_jkuser%''

        AND ''?'' != ''master''

'

GO

 

--데이터 베이스별 사용자 역할 추가

SELECT 'USE ' + Database_Name + '

GO

exec sp_addrolemember '+'[' + 'db_datawriter' +'], '+ UserName + ';'

+ char(13) FROM TMP_DB_USER_ROLE

GO

 

--데이터 베이스별 사용자 역할 추가

SELECT 'USE ' + Database_Name + '

GO

exec sp_addrolemember '+'[' + 'db_ddladmin' +'], '+ UserName + ';'

+ char(13) FROM TMP_DB_USER_ROLE

GO

 

 

--데이터베이스별 로그인

SELECT 'USE' + Database_Name + '

GO

ALTER USER ' + UserName + ' WITH DEFAULT_SCHEMA = ' + default_schema_name  + ';'

+char(13) FROM TMP_DB_USER_ROLE

 

'Database > SQL Server' 카테고리의 다른 글

역할 멤버 보기  (0) 2018.12.05
사용자 계성 생성 스크립트 추출  (0) 2018.12.05
복합열 UNPIVOT  (0) 2018.12.05
NESTED LOOP  (0) 2018.08.17
대용량 데이터 DML(I/U/D)  (0) 2018.08.17

+ Recent posts