Serveur d'impression

Comment transférer des noms de connexion et des mots de passe entre des instances de SQL Server – Serveur d’impression

Le 3 mai 2019 - 4 minutes de lecture

Pour transférer des noms de connexion et des mots de passe entre différentes versions de SQL Server, procédez comme suit:

  1. Exécutez le script suivant sur le serveur SQL source. Passez à l'étape 2 lorsque vous avez terminé de créer la procédure stockée sp_help_revlogin.
    
    
    ----- Début du script, création de la procédure sp_help_revlogin -----
    
    UTILISER le maître
    ALLER
    SI OBJECT_ID ('sp_hexadecimal') N'EST PAS NULL
      DROP PROCEDURE sp_hexadecimal
    ALLER
    CREATE PROCEDURE sp_hexadecimal
        @binvalue varbinary (256),
        @hexvalue varchar (256) OUTPUT
    COMME
    DECLARE @charvalue varchar (256)
    DÉCLARE @i int
    DECLARE @length int
    DECLARE @hexstring char (16)
    SELECT @charvalue = '0x'
    SELECT @ i = 1
    SELECT @length = DATALENGTH (@binvalue)
    SELECT @hexstring = '0123456789ABCDEF'
    PENDANT (@i 'sa'
    AUTRE
      DÉCLARER login_curs CURSEUR POUR
        SÉLECTIONNER le sid, nom, xstatus, mot de passe FROM master..sysxlogins
        O srvid EST NULL AND name = @login_name
    OPEN login_curs
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
    SI (@@ fetch_status = -1)
    COMMENCER
      IMPRIMER 'Aucun identifiant trouvé.'
      FERMER login_curs
      DEALLOCATE login_curs
      RETOUR -1
    FIN
    SET @tmpstr = '/ * sp_help_revlogin script'
    IMPRIMER @tmpstr
    SET @tmpstr = '** Generated'
      + CONVERT (varchar, GETDATE ()) + 'sur' + @@ SERVERNAME + '* /'
    IMPRIMER @tmpstr
    IMPRESSION ''
    IMPRIMER 'DECLARE @pwd sysname'
    PENDANT (@@ fetch_status -1)
    COMMENCER
      SI (@@ fetch_status -2)
      COMMENCER
        IMPRESSION ''
        SET @tmpstr = '- Login:' + @name
        IMPRIMER @tmpstr
        SI (@xstatus & 4) = 4
        BEGIN - Compte / groupe authentifié par NT
          SI (@xstatus & 1) = 1
          BEGIN - L'accès à la connexion NT est refusé
            SET @tmpstr = 'EXEC master..sp_denylogin' '' + @name + '' ''
            IMPRIMER @tmpstr
          FIN
          ELSE BEGIN - La connexion NT a un accès
            SET @tmpstr = 'Master EXEC..sp_grantlogin' '' + @name + '' ''
            IMPRIMER @tmpstr
          FIN
        FIN
        ELSE BEGIN - Authentification SQL Server
          SI (@binpwd N'EST PAS NUL)
          BEGIN - Mot de passe non nul
            EXEC sp_hexadecimal @binpwd, @txtpwd OUT
            SI (@xstatus & 2048) = 2048
              SET @tmpstr = 'SET @pwd = CONVERT (varchar (256),' + @txtpwd + ')'
            AUTRE
              SET @tmpstr = 'SET @pwd = CONVERT (varbinary (256),' + @txtpwd + ')'
            IMPRIMER @tmpstr
    EXEC sp_hexadecimal @ SID_varbinary, @ SID_string OUT
            SET @tmpstr = 'EXEC master..sp_addlogin' '' + @name
              + '' ', @pwd, @sid =' + @SID_string + ', @encryptopt ='
          FIN
          ELSE COMMENCE
            - Mot de passe nul
    EXEC sp_hexadecimal @ SID_varbinary, @ SID_string OUT
            SET @tmpstr = 'EXEC master..sp_addlogin' '' + @name
              + '' ', NULL, @sid =' + @SID_string + ', @encryptopt ='
          FIN
          SI (@xstatus & 2048) = 2048
            - login mis à jour de 6.5
            SET @tmpstr = @tmpstr + '' 'skip_encryption_old' ''
          AUTRE
            SET @tmpstr = @tmpstr + '' 'skip_encryption' ''
          IMPRIMER @tmpstr
        FIN
      FIN
      FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
      FIN
    FERMER login_curs
    DEALLOCATE login_curs
    RETOUR 0
    ALLER
     ----- Fin du script -----
    
  2. Après avoir créé la procédure stockée sp_help_revlogin, exécutez la procédure sp_help_revlogin à partir de l'Analyseur de requêtes sur le serveur source.
    La procédure stockée sp_help_revlogin peut être utilisée sur toutes les versions de SQL Server. La sortie de la procédure stockée sp_help_revlogin
    sont des scripts de connexion qui créent des connexions avec le SID et le mot de passe d'origine.

    
    
    Maître EXEC..sp_help_revlogin
    

    Exemple de sortie:

    
    
    DECLARE @pwd sysname
    
    - Identifiant: 71EDC628A9574AB7BEE1EA914F1A0A7E
    SET @pwd = CONVERT (varbinary (256), 0x01003069FE2D1BFBF6407872FA61BE9C669B632F05C458B2B9883AAA835EF208D28C84CFB753004C50D42C759D)
    Maître EXEC..sp_addlogin '71EDC628A9574AB7BEE1EA914F1A0A7E', @pwd, @sid = 0x2E8DF4909C0CEB4B8C8A49493414B759, @encryptopt = 'skip_encryption'
     
    - Login: admin
    SET @pwd = CONVERT (varbinary (256), 0x0100CA7C6475AC2FF8DC9247A785BFDC4EC0EA38620CAD2E2B0EF24A434708AA91793114CE0F394E0F4939EC013053E5)
    Maître EXEC..sp_addlogin 'admin', @pwd, @sid = 0x9FDF121BED431D4EB7EAC551F67D276A, @encryptopt = 'skip_encryption'
    
    ...
    
  3. Enregistrez la sortie, puis collez-la et exécutez-la dans SQL Server Management Studio.
    sur le serveur SQL de destination.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.