none
[SQL1017] Imbrication T-SQL RRS feed

  • Question

  • Bonjour,

    J'ai récupéré sur internet deux codes T-SQL qui imbriqués devraient me permettre de gérer les refreshs de DB  depuis mon environnement de PRODUCTION vers mon environnement de DEV (Deux Active Directory différent et deux réseaux différents).

    Seulement n'étant pas du tout dba j'ai essayé d'imbriquer ces deux codes mais le résultat ne produit aucun changement et aucun message d'erreur.

    Pouvez vous me le corriger afin qu'il fonctionne correctement?

    Voici le code complet:

    DECLARE @name VARCHAR(50)
    DECLARE db_cursor CURSOR FOR
    SELECT name FROM master.sys.databases WHERE name != 'master' AND name != 'tempdb' AND name != 'model' AND name != 'msdb';
    OPEN db_cursor
    FETCH NEXT FROM db_cursor INTO @name
    WHILE @@FETCH_STATUS = 0
    BEGIN
          Declare @SQL NVARCHAR(MAX)
            SET @SQL = 'USE ['+@name+']'
            EXEC sp_executesql @SQL
    
    --- > Code 2 debut	    DECLARE @DBOSchemaName SYSNAME;
    
    						DECLARE Schema_Cursor CURSOR FOR
    						SELECT NAME
    						FROM sys.schemas
    						WHERE (NAME NOT IN ('dbo','guest','INFORMATION_SCHEMA','sys'))
    
    						OPEN Schema_Cursor;
    
    						FETCH NEXT FROM Schema_Cursor INTO @DBOSchemaName;
    
    						WHILE @@FETCH_STATUS = 0
    						
    						BEGIN
    						EXEC('ALTER AUTHORIZATION ON SCHEMA::[' + @DBOSchemaName + '] TO [dbo]');
    
    						FETCH NEXT FROM Schema_Cursor INTO @DBOSchemaName;
    
    						END;
    
    						CLOSE Schema_Cursor;
    --- > Code 2 fin		DEALLOCATE Schema_Cursor; 
    
    
         FETCH NEXT FROM db_cursor INTO @name
    END
    CLOSE db_cursor

    Merci de votre aide


    Orwell

    mardi 11 septembre 2018 11:35

Toutes les réponses

  • Bonjour

    Ce que vous faites ne sert à rien, vous changez simplement le propriétaire des schémas. Ce qui ne change en rien les permissions d'accès.

    Techniquement ce code est correct et fait ce qu'on lui demande. Qu'essayez vous de faire exactement ? C'est la seule chose qui nous permettrait de vous aider.

    Comment la base est "recopiée" sur le second serveur? Un simple restore database ?

    Dans ce cas, tous els sysadmins peuvent y accéder.

    Et il est toujours possible d'ajouter de nouvelles connexions, de les mapper en tant que user dans cette base.

    cdlt

    Christophe


    Christophe LAPORTE - Independent Consultant & Trainer - SQL Server MVP-MCM

    jeudi 10 janvier 2019 08:50