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

Administration SQL Server Discussion :

Déplacement table dans un autre groupe de fichier


Sujet :

Administration SQL Server

  1. #1
    Membre confirmé Avatar de ariesnojf
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut Déplacement table dans un autre groupe de fichier
    Bonjour à tous,

    J'ai une db assez volumineuse, dont la principale cause est le stockage de document (doc texte, pdf, image, ... de tout en fait).
    J'ai deux questions :
    1) Si je rajoute un groupe de fichier dans la DB lié à un nouvel "ndf" en isolant la table qui stocke ces documents, est ce judicieux ou non pour le futur ? (sachant qu'actuellement on ne rencontre pas trop de soucis, mais cette base a grossi de 25 Go en 6 mois ... et si j'extrapole ...)
    2) J'ai réussi (depuis une base de test et grâce aux différents blogs et posts de ce site ) à déplacer une table (qui au passage est la même chose qu'un index cluster sur le PK, j'ai bien compris ? car ça, je l'ignorais) en utilisant la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE UNIQUE CLUSTERED INDEX PK_col_nomtable1 ON dbo.nomtable1 (col)  
       WITH DROP_EXISTING ON ESCLAVE ;
    Par contre je me suis aperçu que le reste des clés étaient toujours dans l'ancien groupe de fichiers. Je les ai donc déplacés. La question : comment être sûr que la table (et toutes ses dépendances) que je veux déplacer soit dans le bon groupe de fichier ? Comment je peux procèder pour faire cette vérification ?

    Merci pour vos réponses.

    SQL 2008 sur WS 2008R2.

  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
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Pensez aussi à mettre les BLOBs dans un autres groupe de fichier utilisant un fichier situé sur un autre disque physique et en utilisant l'option TEXTIMAGE ON pour la table.

    Pour voir ou est stockée la table :
    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
    SELECT s.name AS SCHEMA_NAME, o.name AS OBJECT_NAME, o.type_desc AS OBJECT_TYPE,
           ds.name AS STORAGE, dbf.physical_name AS FILENAME, ds.type_desc AS STORAGE_TYPE,
           i.name AS index_name, i.index_id, i.type_desc AS index_type, 
           p.partition_id, p.partition_number as pnum, p.rows as partition_rows,
           a.allocation_unit_id as alloc_unit_id, a.type_desc as page_type_desc, a.total_pages as pages,
           internals.total_pages, internals.used_pages, internals.data_pages, 
           first_page, root_page, first_iam_page
    FROM  sys.objects AS o
          INNER JOIN sys.schemas AS s
                ON o.schema_id = s.schema_id
          INNER JOIN  sys.indexes AS i
                ON o.object_id = i.object_id
          INNER JOIN sys.partitions p
                ON p.object_id = i.object_id
                   AND p.index_id = i.index_id
          INNER JOIN sys.allocation_units a
                ON a.container_id = p.partition_id
          INNER JOIN sys.data_spaces ds
                ON ds.data_space_id = a.data_space_id
          LEFT OUTER JOIN sys.database_files dbf
                ON dbf.data_space_id = ds.data_space_id
          inner join sys.system_internals_allocation_units internals 
                on internals.container_id = a.container_id

    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 ariesnojf
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    Bonjour,

    merci pour ta réponse.

    Concernant le conseil, je prends, mais moi un peu boulet , je ne sais pas comment faire. Ta méthode permet d'isoler la colonne BLOBs dans un autre groupe de fichier autre que le reste de la table, méthode applicable à chaque table ou sur la DB en général ?
    J'ai fouiné un peu, trouvé un groupe de fichier de type "FILESTREAM", mais si j'ai bien compris, ce type utilise un stockage sur système et non pas sur DB. (J'espère ne pas dire de bêtises). As tu un lien pour m'aiguiller sur ton conseil ?

    Merci d'avance

    @+

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    J'ai fouiné un peu, trouvé un groupe de fichier de type "FILESTREAM", mais si j'ai bien compris, ce type utilise un stockage sur système et non pas sur DB
    En fait FileStream est une méthode de stockage, comme vous le verrez dans le tutoriel de Mikedavem.
    Il s'agit de ne pas stocker les fichiers dans la base de données mais directement, comme vous le dites, sur le système de fichiers.
    Cela ne change en revanche rien à vos backups, et vous pouvez profiter d'une amélioration des performances en utilisant cette fonctionnalité.

    Je pense que le tutoriel de Mikedavem répond à ce que vous propose SQLPro.

    qui au passage est la même chose qu'un index cluster sur le PK, j'ai bien compris ?
    Quelques précisions : quand vous ajoutez une contrainte de clé primaire à une table, SQL Server crée un index cluster par défaut sur cette colonne.
    Il en va de même lorsque vous ajoutez une contrainte d'unicité, mais dans ce cas l'index est non-cluster par défaut.
    Tout index cluster pointant sur les pages de données de la table, si on déplace l'index cluster de groupe de fichiers comme vous l'avez fait, alors la table est également déplacée dans ce groupe de fichiers : l'index cluster, c'est la table
    J'en ai mis un peu plus là-dessus ici

    @++

  5. #5
    Membre confirmé Avatar de ariesnojf
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    Merci à vous 2,

    J'ai parcouru rapidement le tutoriel, (car pas trop de temps aujourd'hui sur ce sujet, on a quelque soucis au boulot...), juste deux questions malgré tout:
    1) au niveau sauvegarde, il est stipulé que rien ne change, mais si le disque qui supporte les fichier crashe, ou un incendie ou autre catatrosphe à la sauce hollywoodienne..., les sauvegardes (SQL je parle) seront capable de remonter ces fichiers ou faut il en plus de la sauvegarde SQL, une sauvegarde de type Windows classique ? (en fait j'aimerai être sûr de ce que j'ai compris)

    2) au niveau IHM depuis appli web, actuellement, il suffit à l'utilisateur de cliquer sur le doc pour qu'il apparaisse et d'en faire ce qu'il veut (imprimer, dl, ...). Le comportement de l'appli sera t il à modifier si on met en place le Filestream ? Idem pour l'upload ?

    En fait 3 questions :
    3) Peut on imaginer de stocker les docs sur autre serveur que SQL, par exemple IIS où l'appli web est maintenu ? Seulement, il y a risque de perte au niveau perf ? (IIS requete table document sur SQL, qui lui va interroger IIS pour les docs, qui va renvoyer à SQL qui renverra le résultat de la requete vers IIS, )


    Merci encore pour les liens.

    @+

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par ariesnojf Voir le message
    1) au niveau sauvegarde, il est stipulé que rien ne change, mais si le disque qui supporte les fichier crashe, ou un incendie ou autre catatrosphe à la sauce hollywoodienne..., les sauvegardes (SQL je parle) seront capable de remonter ces fichiers ou faut il en plus de la sauvegarde SQL, une sauvegarde de type Windows classique ? (en fait j'aimerai être sûr de ce que j'ai compris)
    Une base est une seule unité de données et se sauvegarde par defaut de façon monolithique FILESTREAM compris.
    Mais rein ne vous empêche de faire des sauvegardes partielles par groupe de fichiers (or un FILESTREAM c'est au moins 1 groupe de fichiers, vois plusieurs).


    2) au niveau IHM depuis appli web, actuellement, il suffit à l'utilisateur de cliquer sur le doc pour qu'il apparaisse et d'en faire ce qu'il veut (imprimer, dl, ...). Le comportement de l'appli sera t il à modifier si on met en place le Filestream ? Idem pour l'upload ?
    Il y a deux méthodes d'accès : soit par le flux SQL dans le dataset (donc idem que si incorporé dans une colonne BLOB de la table), ou alors en accès fichier (via un UNC logique fournit par le serveur) et là dans .net c'est comme si vous étiez directement sur le fichier. Tout dépend du niveau de sécurité que vous exigez (aucun accès direct au fichiers par exemple) et aussi des performances que vous exigez.


    En fait 3 questions :
    3) Peut on imaginer de stocker les docs sur autre serveur que SQL, par exemple IIS où l'appli web est maintenu ? Seulement, il y a risque de perte au niveau perf ? (IIS requete table document sur SQL, qui lui va interroger IIS pour les docs, qui va renvoyer à SQL qui renverra le résultat de la requete vers IIS, )
    Vous avez tout compris : de multiples AR réseau inutile en sus du fait qu'un SGBDR est optimisé pur servir des données alors que ce n'est pas le cas d'un serveur Web.

    Pensez cependant à dédier un agrégat RAID (1 ou 0+1 ou 10) à l'espace de stockage du FILETREAM !

    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/ * * * * *

  7. #7
    Membre confirmé Avatar de ariesnojf
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    Merci pour tout,

    Concernant le Raid, c'est noté et en ferait part à mes amis de l'infra.

    Le mieux maintenant, c'est de créer un environnement de test pour cela.

    Merci mille fois, et reviendrai vers vers vous si problème. (je me laisse une journée ou deux avant de passer ce post en résolu, le temps de lire en profondeur le tuto + index).

  8. #8
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    De plus avec FILESTREAM vous pourrez bénéficier du cache Windows (FILESTREAM n'utilise pas le cache des données du serveur SQL). Vous pourrez affiner son paramétrage à vos besoins.

    Si vous utilisez du stockage SAN avec cache ou cartes contrôleurs RAID avec cache, vous pourrez également en bénéficier. Ces types de cache conviennent bien à ce genre de besoin.

    ++

  9. #9
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    Mikedavem, pouvez-vous nous dire un peu plus sur cette ligne
    ' ... Traitement du document
    ... du genre, comment l'affichez avec word, excel ou comment le prendre comme source d'un contrôle image?
    Merci d'avance

  10. #10
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Qu'est ce que tu veux racconter là ? Nous avons du mal à te suivre.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  11. #11
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    Il s'agit d'une (ou un ensemble) ligne pour le traitement du fichier dans le tuto de mikedavem à ce niveau "VII. Manipulation des données FILESTREAM... Extrait d'un code client permettant la récupération d'un fichier avec FILESTREAM"
    @+

  12. #12
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Réponse tardive .. excusez moi

    Que voulez vous savoir exactement ? Expliquez votre problématique.

    ++

  13. #13
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    A mon tour de m'excuser pour le plus de questions que de contributions
    Le tuto
    Imports System
    Imports System.IO
    Imports System.Text

    'Chaine de connexion à la base
    Dim ConStr As String
    ConStr = "Data Source=SRV-SQL2008;Initial Catalog=filestream_database;Integrated Security=True"

    Dim con As New SqlConnection(ConStr)
    con.Open()

    ' Sélection du document Word 2007
    Dim sqlCommand As New SqlCommand()
    sqlCommand.Connection = con
    sqlCommand.CommandText = "SELECT Doc FROM dbo.Documents WHERE DocID = 'doc1'"

    Dim buffer As Byte() = sqlCommand.ExecuteScalar()

    ' Utilisation de la mémoire comme magasin de stockage du fichier
    Dim ms As MemoryStream = New MemoryStream(buffer)

    ' ... Traitement du document ICI

    'Fermeture connexion
    con.Close()
    Après connexion, récupération du filestream, mise en cache, comment:
    • afficher le fichier (dans word, excel...)?
    • ou comment le prendre comme source d'un contrôle image?

    En faite je cherche à manipuler le filestream avec ACCESS comme IHM mais les résultats de mes recherches sont trop embryonnaires.
    Merci d'avance

Discussions similaires

  1. Insérer tout les id d'une table dans une autre
    Par MaitrePylos dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/09/2006, 16h19
  2. recopi des données d'une table dans une autre
    Par moicats dans le forum Access
    Réponses: 5
    Dernier message: 06/04/2006, 21h12
  3. [9i]Copie de table dans un autre schéma.
    Par sali dans le forum Oracle
    Réponses: 5
    Dernier message: 10/02/2006, 07h52
  4. copier une table dans une autre
    Par Dionisos dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/07/2005, 11h24
  5. concatenation des données d'une table dans une autre
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 04/10/2004, 11h38

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