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

Développement SQL Server Discussion :

Max Length des champs sous SQL server


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2007
    Messages : 125
    Points : 50
    Points
    50
    Par défaut Max Length des champs sous SQL server
    Bonjour,

    J'ai besoin de votre aide
    Je voudrais developper un petit script pour récuperer et calculer la longeur total de mes champs, afin de ne pas dépasser les 8060Ko de SQL server.

    j'ai donc commencé a rediger un script mais je suis bloqué car je ne sais pas comment parcourir les tables de ma DB (variable @TablesName') et faire le calcule de longeur de champs.
    Si quelqu'un pouvait jetter un oeil et m'aider




    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
     
     
    --Creation d'une table temporaire pour stocker la liste de mes tables presente --dans ma DB
     
    CREATE TABLE #toto (
    	Id int identity (1,1),
    	TablesName nvarchar(255),
    	Cost int
    	)
     
    --insert des tables presentent dans ma DB
    insert	#toto
    	(TablesName)
    	select name from sys.tables
     
     
    declare @ID	int;
    declare	@maxID int;
    declare	@TablesName nvarchar(255);	
     
     
    Select @maxID = Max(Id),@ID = 1 from toto 
     
    while @ID < @MaxID
     
    begin
        insert toto
          (Cost)	
           Select SUM(C.Length) as Length from dbo.SysColumns C,toto t  
        where C.id = object_id ('@TablesName')
    	 SET @ID=@ID +1 
     
    end

  2. #2
    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 : 43
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous pouvez le faire directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT T.name, SUM(C.max_length) AS Cost
    FROM sys.columns C
    JOIN sys.tables T ON C.object_id = T.object_id
    AND T.name NOT LIKE 'sys%'
    AND T.name NOT LIKE 'dt%'
    AND T.name NOT LIKE 'queue%'
    GROUP BY T.name
    ORDER BY T.name
    @++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2007
    Messages : 125
    Points : 50
    Points
    50
    Par défaut
    Merci beaucoup de yon aide
    sinon pour ne pas rester bete
    Comment aurai-je pu faire marcher mon script?

  4. #4
    Membre actif
    Inscrit en
    Février 2009
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 224
    Points : 269
    Points
    269
    Par défaut
    Bonjour,
    La bonne façon de faire est celle indiquée par elsuket car:
    - Les requêtes SQL sont toujours beaucoup plus performante qu'une solution nécessitant une table temporaire
    - A partir de SQL 2005, il faut privilégiers les vues sys.columns et sys.tables au lieu d'accéder directement aux tables systèmes

  5. #5
    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 : 43
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Comment aurai-je pu faire marcher mon script?
    C'est vrai que j'aurais pu te le dire : il te faut construire la requête comme une chaîne de caractère que tu passes ensuite en paramètre à la procédure stockée sp_executeSQL.

    Tu peux aussi utiliser EXEC(@maRequeteSQL) mais c'est moins souple (avec sp_executeSQL tu peux te retourner des variables en OUTPUT, et le contexte d'exécution est le même que l'appelant) et moins performant parce que cette commande ne permet pas de conserver le plan de la requête exécutée

    @++

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2007
    Messages : 125
    Points : 50
    Points
    50
    Par défaut
    Merci beaucoup de votre aide, en faite je voulais juste allé au bout de ce programme meme s'il n'est pas forcemement bon.

  7. #7
    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 : 43
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Un petit alors ?

    @++

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

Discussions similaires

  1. Problème d'affichage des résultats sous SQL server
    Par DevKast dans le forum ADO.NET
    Réponses: 5
    Dernier message: 10/02/2014, 15h39
  2. [2005] Envoie des mails sous sql server
    Par justintak dans le forum Développement
    Réponses: 2
    Dernier message: 29/05/2013, 10h07
  3. Réponses: 5
    Dernier message: 22/05/2012, 17h02
  4. Créer des formulaires sous SQL Server 05
    Par Monkey_D.Luffy dans le forum Développement
    Réponses: 1
    Dernier message: 14/05/2008, 19h30
  5. Réponses: 6
    Dernier message: 31/05/2007, 15h54

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