如何在 SQL Server 執行個體之間傳輸登入和密碼

來源:互聯網
上載者:User
----- Begin Script, Create sp_help_revlogin procedure -----USE masterGOIF OBJECT_ID ('sp_hexadecimal') IS NOT NULL  DROP PROCEDURE sp_hexadecimalGOCREATE PROCEDURE sp_hexadecimal    @binvalue varbinary(256),    @hexvalue varchar(256) OUTPUTASDECLARE @charvalue varchar(256)DECLARE @i intDECLARE @length intDECLARE @hexstring char(16)SELECT @charvalue = '0x'SELECT @i = 1SELECT @length = DATALENGTH (@binvalue)SELECT @hexstring = '0123456789ABCDEF' WHILE (@i <= @length) BEGIN  DECLARE @tempint int  DECLARE @firstint int  DECLARE @secondint int  SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))  SELECT @firstint = FLOOR(@tempint/16)  SELECT @secondint = @tempint - (@firstint*16)  SELECT @charvalue = @charvalue +    SUBSTRING(@hexstring, @firstint+1, 1) +    SUBSTRING(@hexstring, @secondint+1, 1)  SELECT @i = @i + 1ENDSELECT @hexvalue = @charvalueGOIF OBJECT_ID ('sp_help_revlogin') IS NOT NULL  DROP PROCEDURE sp_help_revlogin GOCREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL ASDECLARE @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 FOR     SELECT sid, name, xstatus, password FROM master..sysxlogins     WHERE srvid IS NULL AND name <> 'sa'ELSE  DECLARE login_curs CURSOR FOR     SELECT sid, name, xstatus, password FROM master..sysxlogins     WHERE srvid IS NULL AND name = @login_nameOPEN login_curs FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwdIF (@@fetch_status = -1)BEGIN  PRINT 'No login(s) found.'  CLOSE login_curs   DEALLOCATE login_curs   RETURN -1ENDSET @tmpstr = '/* sp_help_revlogin script ' PRINT @tmpstrSET @tmpstr = '** Generated '   + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'PRINT @tmpstrPRINT ''PRINT 'DECLARE @pwd sysname'WHILE (@@fetch_status <> -1)BEGIN  IF (@@fetch_status <> -2)  BEGIN    PRINT ''    SET @tmpstr = '-- Login: ' + @name    PRINT @tmpstr     IF (@xstatus & 4) = 4    BEGIN -- NT authenticated account/group      IF (@xstatus & 1) = 1      BEGIN -- NT login is denied access        SET @tmpstr = 'EXEC master..sp_denylogin ''' + @name + ''''        PRINT @tmpstr       END      ELSE BEGIN -- NT login has access        SET @tmpstr = 'EXEC master..sp_grantlogin ''' + @name + ''''        PRINT @tmpstr       END    END    ELSE BEGIN -- SQL Server authentication      IF (@binpwd IS NOT NULL)      BEGIN -- Non-null password        EXEC sp_hexadecimal @binpwd, @txtpwd OUT        IF (@xstatus & 2048) = 2048          SET @tmpstr = 'SET @pwd = CONVERT (varchar(256), ' + @txtpwd + ')'        ELSE          SET @tmpstr = 'SET @pwd = CONVERT (varbinary(256), ' + @txtpwd + ')'        PRINT @tmpstrEXEC sp_hexadecimal @SID_varbinary,@SID_string OUT        SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name           + ''', @pwd, @sid = ' + @SID_string + ', @encryptopt = '      END      ELSE BEGIN         -- Null passwordEXEC sp_hexadecimal @SID_varbinary,@SID_string OUT        SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name           + ''', NULL, @sid = ' + @SID_string + ', @encryptopt = '      END      IF (@xstatus & 2048) = 2048        -- login upgraded from 6.5        SET @tmpstr = @tmpstr + '''skip_encryption_old'''       ELSE         SET @tmpstr = @tmpstr + '''skip_encryption'''      PRINT @tmpstr     END  END  FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd  ENDCLOSE login_curs DEALLOCATE login_curs RETURN 0GO ----- End Script -----在建立 sp_help_revlogin 預存程序後,請從原始伺服器上的查詢分析器中運行 sp_help_revlogin 過程。sp_help_revlogin 預存程序可同時用於 SQL Server 7.0 和 SQL Server 2000。sp_help_revlogin 預存程序的輸出是登入指令檔,該指令碼可建立帶有原始 SID 和密碼的登入。儲存輸出,然後將其粘貼到目標 SQL Server 上的查詢分析器中,並運行它。例如:EXEC master..sp_help_revlogin

原網址:點擊開啟連結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.