Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Restauration de base et nom des tables


Sujet :

Administration SQL Server

  1. #1
    Candidat au Club
    Restauration de base et nom des tables
    Bonjour,

    Premier post dans le forum SQL Server

    J'ai un applicatif métier pour lequel je dispose :
    - d'une infra de test
    - d'une infra de prod


    Chaque infra possède son installation et son installation SQLServer2014 propre
    - pour l'infra de test, la base SQL s'appelle WINDTEST.
    - pour l'infra de prod, la base SQL s'appelle WINDPROD.

    Pour mettre à jour la base de test, je fais un backup de la base WINDTEST et je fais un restore sur la base WINDPROD.
    L'import est ok, mais visuellement, il y a un truc qui me gène.
    Sous ma base WINDTEST, toutes mes tables s'appellent WINDPROD.xxxx



    est il possible de renommer sur ma base de test les tables WINDPROD.xxxx en WINDTEST.xxxx de manière simple ?
    Cela éviterait d'avoir potentiellement des requêtes sur les tables du genre :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    update WINDTEST.WINDPROD.FvHost  ......


    Merci pour vos retours

    Vincent

  2. #2
    Rédacteur

    Visiblement vous avez confondu la notion de schéma SQL et de base de données. Pas grave en soi, mais problématique si vous avez des requêtes déjà enregistrées car
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    SELECT * FROM MonSchema.MaTable

    est différent de
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    SELECT * FROM MonAutreSchema.MaTable


    Pour renommer vos tables, il suffit de faire un transfert de schéma, le schéma SQL dans lequel vous voulez transférer vos données doit préalablement exister.
    La syntaxe est :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ALTER SCHEMA MonSchemaDestination TRANSFER MonSchemaActuel.Matable


    Si vous voulez transférer toutes vos tables (ou d'autres objets : vues, procédures, UDF...) il faut faire un script SQL généré dynamiquement.
    Exemple :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DECLARE @OLD_SCHEMA sysname = 'WINDTEST',
            @NEW_SCHEMA sysname = 'WINPROD',
            @SQL NVARCHAR(max) = N'';
    SELECT @SQL = @SQL + N'ALTER SCHEMA ' + @NEW_SCHEMA + N' TRANSFER ' + @OLD_SCHEMA + N'.' + TABLE_NAME + N';'
    FROM   INFORMATION_SCHEMA.TABLES
    WHERE  TABLE_TYPE = 'BASE TABLE'
      AND  TABLE_SCHEMA = @OLD_SCHEMA;


    Et pour apprendre SQL Server, notre ouvrage :


    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  3. #3
    Candidat au Club
    Merci pour ce retour Fréderic
    Cela me précise bien les choses.
    Je vais tester tout çà des que possible
    Bonne journée

###raw>template_hook.ano_emploi###