-
[MSSQL] MSSQL2000 사용자계정 추출SQL Server/스크립트 2022. 4. 9. 16:12
서버 이관 시, 데이터베이스 엔진의 데이터베이스는 백업해서 이관하면 되지만
SQL Server로그인 유저는 따로 추출을 해야 한다.
Microsoft도큐먼트에 2012?였던가 추출스크립트가 제공되어있던것 같은데
MSSQL2000에서는 제공해준 스크립트가 실행이 안된다.
테이블 구조라든지 여러가지 개정이 되었기때문에.
MSSQL2000에서 SQL Server로그인 유저를 추출하는 스크립트는 이하와 같다.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182DECLARE @login_name sysnameselect @login_name = nullDECLARE @name sysnameDECLARE @xstatus intDECLARE @binpwd varbinary(256)DECLARE @txtpwd sysnameDECLARE @tmpstr varchar(256)DECLARE @SID_varbinary varbinary(85)DECLARE @SID_string varchar(256)IF (@login_name IS NULL)DECLARE login_curs CURSOR FORSELECT sid, name, xstatus, password FROM master..sysxloginsWHERE srvid IS NULL AND name <> 'sa'ELSEDECLARE login_curs CURSOR FORSELECT sid, name, xstatus, password FROM master..sysxloginsWHERE srvid IS NULL AND name = @login_nameOPEN login_cursFETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwdIF (@@fetch_status = -1)BEGINPRINT 'No login(s) found.'CLOSE login_cursDEALLOCATE login_cursENDSET @tmpstr = '/* sp help revlogin script'PRINT @tmpstrSET @tmpstr = '** Generated' + CONVERT (varchar, GETDATE()) + 'on' + @@SERVERNAME + '*/'PRINT @tmpstrPRINT ''PRINT 'DECLARE @pwd sysname'WHILE (@@fetch_status <> -1 )BEGINIF (@@fetch_status <> -2)BEGINPRINT ''SET @tmpstr = '-- Login: ' + @namePRINT @tmpstrIF (@xstatus & 4) = 4BEGIN -- NT authenticated account/groupIF (@xstatus & 1) = 1BEGIN -- NT login is denied accessSET @tmpstr = 'EXEC master..sp_denylogin ''' + @name + ''''PRINT @tmpstrENDELSE BEGIN -- NT login has accessSET @tmpstr = 'EXEC master..sp_grantlogin '''+ @name + ''''PRINT @tmpstrENDENDELSE BEGIN -- SQL Server authenticationIF (@binpwd IS NOT NULL)BEGIN -- Non-null passwordSELECT @txtpwd = REPLACE(UPPER(master.dbo.fn_varbintohexstr(@binpwd)),'0X','0x')IF (@xstatus & 2048) = 2048SET @tmpstr = 'SET @pwd = CONVERT (varchar(256),' + @txtpwd + ')'ELSESET @tmpstr = 'SET @pwd = CONVERT (varbinary(256),' + @txtpwd + ')'PRINT @tmpstrSELECT @SID_string = REPLACE(UPPER(master.dbo.fn_varbintohexstr(@SID_varbinary)),'0X','0x')SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name + ''', @pwd, @sid = ' + @SID_string + ', @encryptopt = 'ENDELSE BEGIN-- Null passwordSELECT @SID_string = REPLACE(UPPER(master.dbo.fn_varbintohexstr(@SID_varbinary)), '0X','0x')SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name + ''', NULL, @sid = ' + @SID_string + ', @encryptopt = 'ENDIF (@xstatus & 2048) = 2048-- login upgraded from 6.5SET @tmpstr = @tmpstr + '''skip_encryption_old'''ELSESET @tmpstr = @tmpstr + '''skip_encryption'''PRINT @tmpstrENDENDFETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwdENDCLOSE login_cursDEALLOCATE login_curscs 'SQL Server > 스크립트' 카테고리의 다른 글
[MSSQL] 에이전트잡(AgentJob) 스크립트 추출 (0) 2023.09.18 [MSSQL] 연결된서버(LinkedServer) 스크립트 추출 (0) 2023.09.18 [MSSQL] 테이블 건수 확인(Row) (0) 2022.04.09 [MSSQL] MSSQL2012 사용자계정 추출 (0) 2022.04.09 [MSSQL] 트리거(Trigger) 스크립트 추출 (0) 2022.04.09