IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

MS SQL Server Discussion :

Déplacer une table vers un fichier NDF dans un autre filegroup


Sujet :

MS SQL Server

  1. #1
    Membre confirmé Avatar de joKED
    Profil pro
    Imposteur en chef
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Imposteur en chef

    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Points : 458
    Points
    458
    Par défaut Déplacer une table vers un fichier NDF dans un autre filegroup
    Bonjour à tous,

    J'ai beau chercher dans la doc, (peut être mal, je l'avoue), mais je n'arrive pas à trouver comment faire pour déplacer une table vers un fichier NDF existant dans un autre FILEGROUP.

    En effet, j'ai sous la main une base de données en prod qui a été créée sans le moindre filegroup, ni fichier ndf, alors que le volume important de données traitées l'aurait mérité. D'autre part, afin d'accélérer les accès à une table très sollicitée et très volumineuse, nous avons installé un nouveau disque plus rapide, qui n'attend plus que ladite table.

    J'ai donc créé un filegroup secondaire, un fichier .ndf que j'ai ajouté à ce nouveau filegroup, et je souhaiterais y déplacer ma table.

    Avez vous une idée de la syntaxe à utiliser pour ce faire? Je sais que ce genre de chose se fait lors de la création de la table, mais je pense (peut être à tort), que ça doit bien être possible via un alter table... ou pas
    D'autre part, avec vous une idée globale du temps que cela risque de prendre, sachant que ladite table 'pèse' une petite dizaine de Go?

    Si jamais cela s'avère impossible, quid d'une solution du genre : je crée une table ayant la même structure mais cette fois ci dans le bon filegroup, je la remplit grâce aux données de l'ancienne table, que je supprime ensuite, puis je renomme ma nouvelle table, comme si de rien était ?

    Merci de vos conseils avisés
    Tant va la cruche à l'eau qu'à la fin y'a plus d'eau.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 839
    Points : 52 932
    Points
    52 932
    Billets dans le blog
    5
    Par défaut
    En principe votre table doit avoir une clef primaire et si vous avez laissé faire SQL Server sans rien précisé cette clef primaire à construit un index de type CLUSTER qui est en fait physiquement la table.

    En conclusion pour déplacer votre table il suffit de reconstruire votre primary key dans le bon file group....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    CREATE DATABASE TEST;
    GO
     
    USE TEST;
    GO
     
    CREATE TABLE T_TOTO (C INT PRIMARY KEY);
    GO
     
    INSERT INTO T_TOTO VALUES (1);
     
    INSERT INTO T_TOTO
    SELECT MAX(C) + 1
    FROM   T_TOTO;
    GO 1000
     
    ALTER DATABASE TEST
    ADD FILEGROUP FG;
     
    ALTER DATABASE TEST
    ADD FILE
    (
    NAME = F,
    FILENAME = 'C:\titi',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
    ) TO FILEGROUP FG;
     
    -- quel est le nom de l'index cluster sous jacent à la clef primaire ?
    SELECT name
    FROM   sys.indexes
    WHERE  object_id = OBJECT_ID('T_TOTO')
      AND index_id = 1; 
     
    -- recréation de l'index :
    CREATE UNIQUE CLUSTERED INDEX PK__T_TOTO__3EFEB186
    ON T_TOTO (C)
    WITH (DROP_EXISTING = ON)
    ON FG;
    CQFD !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre confirmé Avatar de joKED
    Profil pro
    Imposteur en chef
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Imposteur en chef

    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Points : 458
    Points
    458
    Par défaut
    Merci de votre aide, je m'en vais mettre en pratique vos conseils sur le champ.
    Tant va la cruche à l'eau qu'à la fin y'a plus d'eau.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Macro]exporter une table vers un fichier.csv
    Par samca dans le forum IHM
    Réponses: 2
    Dernier message: 24/04/2007, 21h25
  2. Réponses: 3
    Dernier message: 06/01/2007, 17h44
  3. comment copier une table vers un fichier texte ou le contraire
    Par kham40 dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/11/2006, 13h51
  4. Réponses: 1
    Dernier message: 21/07/2006, 11h54
  5. Export d'une table vers un fichier Txt
    Par Max30 dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 18h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo