Bonjour à toutes et à tous,
Contexte: 1 serveur Compaq G3 ML370 avec 2 Go Ram + Raid1 U3Scsi (2*18) +
Raid5 U3Scsi (4*36 Go) - Bi-Pro Xéon 2,4 Ghz. Une vingtaine de petites
(les plus grosses font entre 500 Mo et 1,3 Go et ne sont que 4).
Fonctionnement: les utilisateurs s'authentifient à partir d'une
Intranet (sur un serveur indépendant Redhat Linux + PHP), la base de
l'intranet est stockée sur le serveur BDD. L'authentification est assez
rapide, ce qui l'est moins c'est le temps de chargement de l'application
(côté PHP, c'est assez optimisé). Les flux passent par un connecteur
(côté Linux / PHP).
Une fois l'authentification passée, ils accèdent à une autre application
(transactionnelle)qui fonctionne sur le même serveur de BDD (les
peuvent passer par Citrix, car sites distants). Cette seconde applications
(VB6 + JAVA + SQL) dialogue avec le serveur BDD via un connecteur JDBC
SQL Serveur 2000.
Questions:
1)- Je souhaiterais capturer les trames, flux et éventuellement ordres,
transitent au travers de ces deux connecteurs (en entrée et en sortie). Le
Générateur de Profils est-il capable de faire ces tâches ? Si oui, quels
les paramètres à indiquer ?
2)- Je souhaiterais faire la même chose, mais au niveau de la seconde
application, pour capturer les trames, flux et ordres, lancés par depuis
l'application VB, qui contient des procédures SQL, dans le code VB. Est-ce
possible ? Si oui, comment et avec quels outils ?
3)-Le Générateur de Profils peut fonctionner conjointement avec
de requêtes. Je souhaitement capturer les transactions qui prennent
trop de temps et ainsi proposer une amélioration du code. Quels sont les
paramètres les plus pertinents à utiliser pour réaliser cette capture ?
4)- Existe-t-il des outils (autre que ceux intégrés à SQL 2000) pour
identifier les problématiques de "tuning" et d'optimisation ?
5)-Dans le code des procédures stockées (et des fonctions définies par
l"utilisateurs), il est toujours fait appel à des curseurs (FETCH), des
jointures (pas forcement nécessaires comme LEFT OUTER JOIN, RIGHT OUTER
6)-Que doit-on utiliser, procédures ou fonctions, qui est le plus rapide ?
Sachant que dans tous les cas, le passage de paramètres est utilisé.
7)-Peut-on remplacer les OUTER JOIN par des SELECT IN et des vues ? Cela
augmente-t-il les performances ? Comment fonctionne réellement ces
instructions (dans les cours, ils ne précisent rien) ? Les curseurs sont
employés continuellement, peut-on s'en passer ? Si oui, dans quels cas et
cela joue-t-il dans une problématique de performances ?
Merci d'avoir pris le temps de me lire (même si c'est long) et je vous
remercie d'avance pour vos réponses pertinentes.
Meilleurs voeux pour 2005 et continuez de nous abreuver de toutes ces
merveilleuses techniques.
Houdini
Bonjour à toutes et à tous,
Contexte: 1 serveur Compaq G3 ML370 avec 2 Go Ram + Raid1 U3Scsi (2*18) +
Raid5 U3Scsi (4*36 Go) - Bi-Pro Xéon 2,4 Ghz. Une vingtaine de petites
(les plus grosses font entre 500 Mo et 1,3 Go et ne sont que 4).
Fonctionnement: les utilisateurs s'authentifient à partir d'une
Intranet (sur un serveur indépendant Redhat Linux + PHP), la base de
l'intranet est stockée sur le serveur BDD. L'authentification est assez
rapide, ce qui l'est moins c'est le temps de chargement de l'application
(côté PHP, c'est assez optimisé). Les flux passent par un connecteur
(côté Linux / PHP).
Une fois l'authentification passée, ils accèdent à une autre application
(transactionnelle)qui fonctionne sur le même serveur de BDD (les
peuvent passer par Citrix, car sites distants). Cette seconde applications
(VB6 + JAVA + SQL) dialogue avec le serveur BDD via un connecteur JDBC
SQL Serveur 2000.
Questions:
1)- Je souhaiterais capturer les trames, flux et éventuellement ordres,
transitent au travers de ces deux connecteurs (en entrée et en sortie). Le
Générateur de Profils est-il capable de faire ces tâches ? Si oui, quels
les paramètres à indiquer ?
2)- Je souhaiterais faire la même chose, mais au niveau de la seconde
application, pour capturer les trames, flux et ordres, lancés par depuis
l'application VB, qui contient des procédures SQL, dans le code VB. Est-ce
possible ? Si oui, comment et avec quels outils ?
3)-Le Générateur de Profils peut fonctionner conjointement avec
de requêtes. Je souhaitement capturer les transactions qui prennent
trop de temps et ainsi proposer une amélioration du code. Quels sont les
paramètres les plus pertinents à utiliser pour réaliser cette capture ?
4)- Existe-t-il des outils (autre que ceux intégrés à SQL 2000) pour
identifier les problématiques de "tuning" et d'optimisation ?
5)-Dans le code des procédures stockées (et des fonctions définies par
l"utilisateurs), il est toujours fait appel à des curseurs (FETCH), des
jointures (pas forcement nécessaires comme LEFT OUTER JOIN, RIGHT OUTER
6)-Que doit-on utiliser, procédures ou fonctions, qui est le plus rapide ?
Sachant que dans tous les cas, le passage de paramètres est utilisé.
7)-Peut-on remplacer les OUTER JOIN par des SELECT IN et des vues ? Cela
augmente-t-il les performances ? Comment fonctionne réellement ces
instructions (dans les cours, ils ne précisent rien) ? Les curseurs sont
employés continuellement, peut-on s'en passer ? Si oui, dans quels cas et
cela joue-t-il dans une problématique de performances ?
Merci d'avoir pris le temps de me lire (même si c'est long) et je vous
remercie d'avance pour vos réponses pertinentes.
Meilleurs voeux pour 2005 et continuez de nous abreuver de toutes ces
merveilleuses techniques.
Houdini
Bonjour à toutes et à tous,
Contexte: 1 serveur Compaq G3 ML370 avec 2 Go Ram + Raid1 U3Scsi (2*18) +
Raid5 U3Scsi (4*36 Go) - Bi-Pro Xéon 2,4 Ghz. Une vingtaine de petites
(les plus grosses font entre 500 Mo et 1,3 Go et ne sont que 4).
Fonctionnement: les utilisateurs s'authentifient à partir d'une
Intranet (sur un serveur indépendant Redhat Linux + PHP), la base de
l'intranet est stockée sur le serveur BDD. L'authentification est assez
rapide, ce qui l'est moins c'est le temps de chargement de l'application
(côté PHP, c'est assez optimisé). Les flux passent par un connecteur
(côté Linux / PHP).
Une fois l'authentification passée, ils accèdent à une autre application
(transactionnelle)qui fonctionne sur le même serveur de BDD (les
peuvent passer par Citrix, car sites distants). Cette seconde applications
(VB6 + JAVA + SQL) dialogue avec le serveur BDD via un connecteur JDBC
SQL Serveur 2000.
Questions:
1)- Je souhaiterais capturer les trames, flux et éventuellement ordres,
transitent au travers de ces deux connecteurs (en entrée et en sortie). Le
Générateur de Profils est-il capable de faire ces tâches ? Si oui, quels
les paramètres à indiquer ?
2)- Je souhaiterais faire la même chose, mais au niveau de la seconde
application, pour capturer les trames, flux et ordres, lancés par depuis
l'application VB, qui contient des procédures SQL, dans le code VB. Est-ce
possible ? Si oui, comment et avec quels outils ?
3)-Le Générateur de Profils peut fonctionner conjointement avec
de requêtes. Je souhaitement capturer les transactions qui prennent
trop de temps et ainsi proposer une amélioration du code. Quels sont les
paramètres les plus pertinents à utiliser pour réaliser cette capture ?
4)- Existe-t-il des outils (autre que ceux intégrés à SQL 2000) pour
identifier les problématiques de "tuning" et d'optimisation ?
5)-Dans le code des procédures stockées (et des fonctions définies par
l"utilisateurs), il est toujours fait appel à des curseurs (FETCH), des
jointures (pas forcement nécessaires comme LEFT OUTER JOIN, RIGHT OUTER
6)-Que doit-on utiliser, procédures ou fonctions, qui est le plus rapide ?
Sachant que dans tous les cas, le passage de paramètres est utilisé.
7)-Peut-on remplacer les OUTER JOIN par des SELECT IN et des vues ? Cela
augmente-t-il les performances ? Comment fonctionne réellement ces
instructions (dans les cours, ils ne précisent rien) ? Les curseurs sont
employés continuellement, peut-on s'en passer ? Si oui, dans quels cas et
cela joue-t-il dans une problématique de performances ?
Merci d'avoir pris le temps de me lire (même si c'est long) et je vous
remercie d'avance pour vos réponses pertinentes.
Meilleurs voeux pour 2005 et continuez de nous abreuver de toutes ces
merveilleuses techniques.
Houdini
inline
br
"Houdini" wrote in message
news:
> Bonjour à toutes et à tous,
>
> Contexte: 1 serveur Compaq G3 ML370 avec 2 Go Ram + Raid1 U3Scsi (2*18) +
> Raid5 U3Scsi (4*36 Go) - Bi-Pro Xéon 2,4 Ghz. Une vingtaine de petites
bases
> (les plus grosses font entre 500 Mo et 1,3 Go et ne sont que 4).
>
> Fonctionnement: les utilisateurs s'authentifient à partir d'une
application
> Intranet (sur un serveur indépendant Redhat Linux + PHP), la base de
> l'intranet est stockée sur le serveur BDD. L'authentification est assez
> rapide, ce qui l'est moins c'est le temps de chargement de l'application
> (côté PHP, c'est assez optimisé). Les flux passent par un connecteur
FreeTDS
> (côté Linux / PHP).
>
> Une fois l'authentification passée, ils accèdent à une autre application
> (transactionnelle)qui fonctionne sur le même serveur de BDD (les
utilisateurs
> peuvent passer par Citrix, car sites distants). Cette seconde applications
> (VB6 + JAVA + SQL) dialogue avec le serveur BDD via un connecteur JDBC
natif
> SQL Serveur 2000.
>
> Questions:
> 1)- Je souhaiterais capturer les trames, flux et éventuellement ordres,
qui
> transitent au travers de ces deux connecteurs (en entrée et en sortie). Le
> Générateur de Profils est-il capable de faire ces tâches ? Si oui, quels
sont
> les paramètres à indiquer ?
>
le profiler ne capture pas de trames, pour cela il faut utiliser un sniffer,
par ex network monitor
Par contre il capture toutes les requetes faites au serveur, les filtres
permettent de limiter à des users, des bases, des hotes, des requetes d'une
certaine durée ...
> 2)- Je souhaiterais faire la même chose, mais au niveau de la seconde
> application, pour capturer les trames, flux et ordres, lancés par depuis
> l'application VB, qui contient des procédures SQL, dans le code VB. Est-ce
> possible ? Si oui, comment et avec quels outils ?
>
voir 1) , pour des stats plus larges, le moniteur system (perfmon) peut etre
utilisé
> 3)-Le Générateur de Profils peut fonctionner conjointement avec
l'Optimiseur
> de requêtes. Je souhaitement capturer les transactions qui prennent
beaucoup
> trop de temps et ainsi proposer une amélioration du code. Quels sont les
> paramètres les plus pertinents à utiliser pour réaliser cette capture ?
>
on peut aussi récupérer le texte des requetes dans le profiler pour les
analyser dans QA
> 4)- Existe-t-il des outils (autre que ceux intégrés à SQL 2000) pour
> identifier les problématiques de "tuning" et d'optimisation ?
>
Je ne connais pas d'outils externes de tuning (non MS)
> 5)-Dans le code des procédures stockées (et des fonctions définies par
> l"utilisateurs), il est toujours fait appel à des curseurs (FETCH), des
> jointures (pas forcement nécessaires comme LEFT OUTER JOIN, RIGHT OUTER
JOIN).
>
> 6)-Que doit-on utiliser, procédures ou fonctions, qui est le plus rapide ?
> Sachant que dans tous les cas, le passage de paramètres est utilisé.
>
les fonctions dans la liste de sélection sont souvent pénalisantes, entre
fonction et SP pas de différence de perf mais d'utilisation
> 7)-Peut-on remplacer les OUTER JOIN par des SELECT IN et des vues ? Cela
> augmente-t-il les performances ? Comment fonctionne réellement ces
> instructions (dans les cours, ils ne précisent rien) ? Les curseurs sont
> employés continuellement, peut-on s'en passer ? Si oui, dans quels cas et
> cela joue-t-il dans une problématique de performances ?
>
le JOIN est plus performant, mais OUTER JOIN est couteux, on ne l'utilise
que quand c'est "absolument" nécessaire
les tables temporaires peuvent être intéressantes
On peut presque toujours se passer de curseur et gagner beaucoup en perf
> Merci d'avoir pris le temps de me lire (même si c'est long) et je vous
> remercie d'avance pour vos réponses pertinentes.
> Meilleurs voeux pour 2005 et continuez de nous abreuver de toutes ces
> merveilleuses techniques.
> Houdini
inline
br
"Houdini" <Houdini@discussions.microsoft.com> wrote in message
news:AE9B8147-CA4B-4265-B88C-24A07A996642@microsoft.com...
> Bonjour à toutes et à tous,
>
> Contexte: 1 serveur Compaq G3 ML370 avec 2 Go Ram + Raid1 U3Scsi (2*18) +
> Raid5 U3Scsi (4*36 Go) - Bi-Pro Xéon 2,4 Ghz. Une vingtaine de petites
bases
> (les plus grosses font entre 500 Mo et 1,3 Go et ne sont que 4).
>
> Fonctionnement: les utilisateurs s'authentifient à partir d'une
application
> Intranet (sur un serveur indépendant Redhat Linux + PHP), la base de
> l'intranet est stockée sur le serveur BDD. L'authentification est assez
> rapide, ce qui l'est moins c'est le temps de chargement de l'application
> (côté PHP, c'est assez optimisé). Les flux passent par un connecteur
FreeTDS
> (côté Linux / PHP).
>
> Une fois l'authentification passée, ils accèdent à une autre application
> (transactionnelle)qui fonctionne sur le même serveur de BDD (les
utilisateurs
> peuvent passer par Citrix, car sites distants). Cette seconde applications
> (VB6 + JAVA + SQL) dialogue avec le serveur BDD via un connecteur JDBC
natif
> SQL Serveur 2000.
>
> Questions:
> 1)- Je souhaiterais capturer les trames, flux et éventuellement ordres,
qui
> transitent au travers de ces deux connecteurs (en entrée et en sortie). Le
> Générateur de Profils est-il capable de faire ces tâches ? Si oui, quels
sont
> les paramètres à indiquer ?
>
le profiler ne capture pas de trames, pour cela il faut utiliser un sniffer,
par ex network monitor
Par contre il capture toutes les requetes faites au serveur, les filtres
permettent de limiter à des users, des bases, des hotes, des requetes d'une
certaine durée ...
> 2)- Je souhaiterais faire la même chose, mais au niveau de la seconde
> application, pour capturer les trames, flux et ordres, lancés par depuis
> l'application VB, qui contient des procédures SQL, dans le code VB. Est-ce
> possible ? Si oui, comment et avec quels outils ?
>
voir 1) , pour des stats plus larges, le moniteur system (perfmon) peut etre
utilisé
> 3)-Le Générateur de Profils peut fonctionner conjointement avec
l'Optimiseur
> de requêtes. Je souhaitement capturer les transactions qui prennent
beaucoup
> trop de temps et ainsi proposer une amélioration du code. Quels sont les
> paramètres les plus pertinents à utiliser pour réaliser cette capture ?
>
on peut aussi récupérer le texte des requetes dans le profiler pour les
analyser dans QA
> 4)- Existe-t-il des outils (autre que ceux intégrés à SQL 2000) pour
> identifier les problématiques de "tuning" et d'optimisation ?
>
Je ne connais pas d'outils externes de tuning (non MS)
> 5)-Dans le code des procédures stockées (et des fonctions définies par
> l"utilisateurs), il est toujours fait appel à des curseurs (FETCH), des
> jointures (pas forcement nécessaires comme LEFT OUTER JOIN, RIGHT OUTER
JOIN).
>
> 6)-Que doit-on utiliser, procédures ou fonctions, qui est le plus rapide ?
> Sachant que dans tous les cas, le passage de paramètres est utilisé.
>
les fonctions dans la liste de sélection sont souvent pénalisantes, entre
fonction et SP pas de différence de perf mais d'utilisation
> 7)-Peut-on remplacer les OUTER JOIN par des SELECT IN et des vues ? Cela
> augmente-t-il les performances ? Comment fonctionne réellement ces
> instructions (dans les cours, ils ne précisent rien) ? Les curseurs sont
> employés continuellement, peut-on s'en passer ? Si oui, dans quels cas et
> cela joue-t-il dans une problématique de performances ?
>
le JOIN est plus performant, mais OUTER JOIN est couteux, on ne l'utilise
que quand c'est "absolument" nécessaire
les tables temporaires peuvent être intéressantes
On peut presque toujours se passer de curseur et gagner beaucoup en perf
> Merci d'avoir pris le temps de me lire (même si c'est long) et je vous
> remercie d'avance pour vos réponses pertinentes.
> Meilleurs voeux pour 2005 et continuez de nous abreuver de toutes ces
> merveilleuses techniques.
> Houdini
inline
br
"Houdini" wrote in message
news:
> Bonjour à toutes et à tous,
>
> Contexte: 1 serveur Compaq G3 ML370 avec 2 Go Ram + Raid1 U3Scsi (2*18) +
> Raid5 U3Scsi (4*36 Go) - Bi-Pro Xéon 2,4 Ghz. Une vingtaine de petites
bases
> (les plus grosses font entre 500 Mo et 1,3 Go et ne sont que 4).
>
> Fonctionnement: les utilisateurs s'authentifient à partir d'une
application
> Intranet (sur un serveur indépendant Redhat Linux + PHP), la base de
> l'intranet est stockée sur le serveur BDD. L'authentification est assez
> rapide, ce qui l'est moins c'est le temps de chargement de l'application
> (côté PHP, c'est assez optimisé). Les flux passent par un connecteur
FreeTDS
> (côté Linux / PHP).
>
> Une fois l'authentification passée, ils accèdent à une autre application
> (transactionnelle)qui fonctionne sur le même serveur de BDD (les
utilisateurs
> peuvent passer par Citrix, car sites distants). Cette seconde applications
> (VB6 + JAVA + SQL) dialogue avec le serveur BDD via un connecteur JDBC
natif
> SQL Serveur 2000.
>
> Questions:
> 1)- Je souhaiterais capturer les trames, flux et éventuellement ordres,
qui
> transitent au travers de ces deux connecteurs (en entrée et en sortie). Le
> Générateur de Profils est-il capable de faire ces tâches ? Si oui, quels
sont
> les paramètres à indiquer ?
>
le profiler ne capture pas de trames, pour cela il faut utiliser un sniffer,
par ex network monitor
Par contre il capture toutes les requetes faites au serveur, les filtres
permettent de limiter à des users, des bases, des hotes, des requetes d'une
certaine durée ...
> 2)- Je souhaiterais faire la même chose, mais au niveau de la seconde
> application, pour capturer les trames, flux et ordres, lancés par depuis
> l'application VB, qui contient des procédures SQL, dans le code VB. Est-ce
> possible ? Si oui, comment et avec quels outils ?
>
voir 1) , pour des stats plus larges, le moniteur system (perfmon) peut etre
utilisé
> 3)-Le Générateur de Profils peut fonctionner conjointement avec
l'Optimiseur
> de requêtes. Je souhaitement capturer les transactions qui prennent
beaucoup
> trop de temps et ainsi proposer une amélioration du code. Quels sont les
> paramètres les plus pertinents à utiliser pour réaliser cette capture ?
>
on peut aussi récupérer le texte des requetes dans le profiler pour les
analyser dans QA
> 4)- Existe-t-il des outils (autre que ceux intégrés à SQL 2000) pour
> identifier les problématiques de "tuning" et d'optimisation ?
>
Je ne connais pas d'outils externes de tuning (non MS)
> 5)-Dans le code des procédures stockées (et des fonctions définies par
> l"utilisateurs), il est toujours fait appel à des curseurs (FETCH), des
> jointures (pas forcement nécessaires comme LEFT OUTER JOIN, RIGHT OUTER
JOIN).
>
> 6)-Que doit-on utiliser, procédures ou fonctions, qui est le plus rapide ?
> Sachant que dans tous les cas, le passage de paramètres est utilisé.
>
les fonctions dans la liste de sélection sont souvent pénalisantes, entre
fonction et SP pas de différence de perf mais d'utilisation
> 7)-Peut-on remplacer les OUTER JOIN par des SELECT IN et des vues ? Cela
> augmente-t-il les performances ? Comment fonctionne réellement ces
> instructions (dans les cours, ils ne précisent rien) ? Les curseurs sont
> employés continuellement, peut-on s'en passer ? Si oui, dans quels cas et
> cela joue-t-il dans une problématique de performances ?
>
le JOIN est plus performant, mais OUTER JOIN est couteux, on ne l'utilise
que quand c'est "absolument" nécessaire
les tables temporaires peuvent être intéressantes
On peut presque toujours se passer de curseur et gagner beaucoup en perf
> Merci d'avoir pris le temps de me lire (même si c'est long) et je vous
> remercie d'avance pour vos réponses pertinentes.
> Meilleurs voeux pour 2005 et continuez de nous abreuver de toutes ces
> merveilleuses techniques.
> Houdini
Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore besoin
votre aide sur les points suivants:
A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
ils servent réellement, car dans les cours MS SQL, il n'est jamais fait
allusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
concret, avec un exemple de code ?
B)-Comment déterminer la famille d'index sur un colonne d'une table ? Je
voudrais savoir si il s'agit d'un index cluster ou non cluster, soit en
passant par une commande DBCC / sp ou par l'Enterprise Manager.
C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf) de
plusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes les
plus fiables et les plu s performantes ?
-Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
emplacement, puis réattacher)
-Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
(dans ce cas un simple Modify file suffirait-il ?)
-Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être déplacés
aussi ?
(Avec un exemple concert de commandes si besoins)
D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
TEMPDB ?
Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore besoin
votre aide sur les points suivants:
A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
ils servent réellement, car dans les cours MS SQL, il n'est jamais fait
allusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
concret, avec un exemple de code ?
B)-Comment déterminer la famille d'index sur un colonne d'une table ? Je
voudrais savoir si il s'agit d'un index cluster ou non cluster, soit en
passant par une commande DBCC / sp ou par l'Enterprise Manager.
C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf) de
plusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes les
plus fiables et les plu s performantes ?
-Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
emplacement, puis réattacher)
-Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
(dans ce cas un simple Modify file suffirait-il ?)
-Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être déplacés
aussi ?
(Avec un exemple concert de commandes si besoins)
D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
TEMPDB ?
Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore besoin
votre aide sur les points suivants:
A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
ils servent réellement, car dans les cours MS SQL, il n'est jamais fait
allusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
concret, avec un exemple de code ?
B)-Comment déterminer la famille d'index sur un colonne d'une table ? Je
voudrais savoir si il s'agit d'un index cluster ou non cluster, soit en
passant par une commande DBCC / sp ou par l'Enterprise Manager.
C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf) de
plusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes les
plus fiables et les plu s performantes ?
-Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
emplacement, puis réattacher)
-Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
(dans ce cas un simple Modify file suffirait-il ?)
-Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être déplacés
aussi ?
(Avec un exemple concert de commandes si besoins)
D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
TEMPDB ?
"Houdini" a écrit dans le message de
news:
> Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore besoin
de
> votre aide sur les points suivants:
self: tout d'abord, merci pour ta réponse sur le post 'retour d'expérience
DBA ..
'
>
> A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
quoi
> ils servent réellement, car dans les cours MS SQL, il n'est jamais fait
> allusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
exemple
> concret, avec un exemple de code ?
On peut s'en passer. Je retrouve l'astuce et je te (vous) tiens au courant.
>
> B)-Comment déterminer la famille d'index sur un colonne d'une table ? Je
> voudrais savoir si il s'agit d'un index cluster ou non cluster, soit en
> passant par une commande DBCC / sp ou par l'Enterprise Manager.
sp_helpindex 'nom_table' ou sp_help 'nom_table'
par EM, clique droit sur une table, toutes les tâches -> gérer les index, il
y a une colonne "ordonné"
>
> C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf) de
> plusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes les
> plus fiables et les plu s performantes ?
>
> -Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
> emplacement, puis réattacher)
>
self: ca me parait la plus aisée et fiable, soit par requetes, soit par EM
par sécurité, faire un dbcc checkdb avant.
> -Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
> (dans ce cas un simple Modify file suffirait-il ?)
>
> -Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être déplacés
> aussi ?
>
self: pas nécessaire, sauf tempdb, voir en dessous
> (Avec un exemple concert de commandes si besoins)
>
> D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
foutue
> TEMPDB ?
self; idéalement, il faut la mettre sur un disque dédié car très gourmand en
I/O
Il est conseillé de lui mettre une taille fixe (assez large), éviter
l'accroissement auto+réduction auto.
la tempdb n'est pas très optimisable, c'est plutôt ce qu'on y insére qu'il
faut optimiser (voir indexer)
Et voir si on peut s'en passer:
- les variables tables permettent d'éviter les tables temporaires, c'est
sensé être plus performant. A tester en fonction du besoin.
pour la déplacer, voici un "How-to"
Moving the tempdb database
--------------------------
You can move tempdb files by using the ALTER DATABASE statement.
1. Determine the logical file names for the tempdb database by using
sp_helpfile
as follows:
use tempdb
go
sp_helpfile
go
The logical name for each file is contained in the name column. This example
uses
the default file names of tempdev and templog.
2. Use the ALTER DATABASE statement, specifying the logical file name as
follows:
use master
go
Alter database tempdb modify file (name = tempdev, filename > 'E:Mssql8Datatempdb.mdf')
go
Alter database tempdb modify file (name = templog, filename > 'E:Mssql8Datatemplog.ldf')
go
You should receive the following messages confirming the change:
File 'tempdev' modified in sysaltfiles. Delete old file after restarting
SQL
Server.
File 'templog' modified in sysaltfiles. Delete old file after restarting
SQL
Server.
3. Using sp_helpfile in tempdb will not confirm these changes until you
restart
SQL Server.
4. Stop and restart SQL Server.
5. Delete the old tempdb.mdf and templog.ldf files.
"Houdini" <Houdini@discussions.microsoft.com> a écrit dans le message de
news:3FE42846-1A8E-4F7A-AF12-8DF0B12F4C09@microsoft.com...
> Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore besoin
de
> votre aide sur les points suivants:
self: tout d'abord, merci pour ta réponse sur le post 'retour d'expérience
DBA ..
'
>
> A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
quoi
> ils servent réellement, car dans les cours MS SQL, il n'est jamais fait
> allusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
exemple
> concret, avec un exemple de code ?
On peut s'en passer. Je retrouve l'astuce et je te (vous) tiens au courant.
>
> B)-Comment déterminer la famille d'index sur un colonne d'une table ? Je
> voudrais savoir si il s'agit d'un index cluster ou non cluster, soit en
> passant par une commande DBCC / sp ou par l'Enterprise Manager.
sp_helpindex 'nom_table' ou sp_help 'nom_table'
par EM, clique droit sur une table, toutes les tâches -> gérer les index, il
y a une colonne "ordonné"
>
> C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf) de
> plusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes les
> plus fiables et les plu s performantes ?
>
> -Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
> emplacement, puis réattacher)
>
self: ca me parait la plus aisée et fiable, soit par requetes, soit par EM
par sécurité, faire un dbcc checkdb avant.
> -Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
> (dans ce cas un simple Modify file suffirait-il ?)
>
> -Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être déplacés
> aussi ?
>
self: pas nécessaire, sauf tempdb, voir en dessous
> (Avec un exemple concert de commandes si besoins)
>
> D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
foutue
> TEMPDB ?
self; idéalement, il faut la mettre sur un disque dédié car très gourmand en
I/O
Il est conseillé de lui mettre une taille fixe (assez large), éviter
l'accroissement auto+réduction auto.
la tempdb n'est pas très optimisable, c'est plutôt ce qu'on y insére qu'il
faut optimiser (voir indexer)
Et voir si on peut s'en passer:
- les variables tables permettent d'éviter les tables temporaires, c'est
sensé être plus performant. A tester en fonction du besoin.
pour la déplacer, voici un "How-to"
Moving the tempdb database
--------------------------
You can move tempdb files by using the ALTER DATABASE statement.
1. Determine the logical file names for the tempdb database by using
sp_helpfile
as follows:
use tempdb
go
sp_helpfile
go
The logical name for each file is contained in the name column. This example
uses
the default file names of tempdev and templog.
2. Use the ALTER DATABASE statement, specifying the logical file name as
follows:
use master
go
Alter database tempdb modify file (name = tempdev, filename > 'E:Mssql8Datatempdb.mdf')
go
Alter database tempdb modify file (name = templog, filename > 'E:Mssql8Datatemplog.ldf')
go
You should receive the following messages confirming the change:
File 'tempdev' modified in sysaltfiles. Delete old file after restarting
SQL
Server.
File 'templog' modified in sysaltfiles. Delete old file after restarting
SQL
Server.
3. Using sp_helpfile in tempdb will not confirm these changes until you
restart
SQL Server.
4. Stop and restart SQL Server.
5. Delete the old tempdb.mdf and templog.ldf files.
"Houdini" a écrit dans le message de
news:
> Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore besoin
de
> votre aide sur les points suivants:
self: tout d'abord, merci pour ta réponse sur le post 'retour d'expérience
DBA ..
'
>
> A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
quoi
> ils servent réellement, car dans les cours MS SQL, il n'est jamais fait
> allusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
exemple
> concret, avec un exemple de code ?
On peut s'en passer. Je retrouve l'astuce et je te (vous) tiens au courant.
>
> B)-Comment déterminer la famille d'index sur un colonne d'une table ? Je
> voudrais savoir si il s'agit d'un index cluster ou non cluster, soit en
> passant par une commande DBCC / sp ou par l'Enterprise Manager.
sp_helpindex 'nom_table' ou sp_help 'nom_table'
par EM, clique droit sur une table, toutes les tâches -> gérer les index, il
y a une colonne "ordonné"
>
> C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf) de
> plusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes les
> plus fiables et les plu s performantes ?
>
> -Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
> emplacement, puis réattacher)
>
self: ca me parait la plus aisée et fiable, soit par requetes, soit par EM
par sécurité, faire un dbcc checkdb avant.
> -Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
> (dans ce cas un simple Modify file suffirait-il ?)
>
> -Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être déplacés
> aussi ?
>
self: pas nécessaire, sauf tempdb, voir en dessous
> (Avec un exemple concert de commandes si besoins)
>
> D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
foutue
> TEMPDB ?
self; idéalement, il faut la mettre sur un disque dédié car très gourmand en
I/O
Il est conseillé de lui mettre une taille fixe (assez large), éviter
l'accroissement auto+réduction auto.
la tempdb n'est pas très optimisable, c'est plutôt ce qu'on y insére qu'il
faut optimiser (voir indexer)
Et voir si on peut s'en passer:
- les variables tables permettent d'éviter les tables temporaires, c'est
sensé être plus performant. A tester en fonction du besoin.
pour la déplacer, voici un "How-to"
Moving the tempdb database
--------------------------
You can move tempdb files by using the ALTER DATABASE statement.
1. Determine the logical file names for the tempdb database by using
sp_helpfile
as follows:
use tempdb
go
sp_helpfile
go
The logical name for each file is contained in the name column. This example
uses
the default file names of tempdev and templog.
2. Use the ALTER DATABASE statement, specifying the logical file name as
follows:
use master
go
Alter database tempdb modify file (name = tempdev, filename > 'E:Mssql8Datatempdb.mdf')
go
Alter database tempdb modify file (name = templog, filename > 'E:Mssql8Datatemplog.ldf')
go
You should receive the following messages confirming the change:
File 'tempdev' modified in sysaltfiles. Delete old file after restarting
SQL
Server.
File 'templog' modified in sysaltfiles. Delete old file after restarting
SQL
Server.
3. Using sp_helpfile in tempdb will not confirm these changes until you
restart
SQL Server.
4. Stop and restart SQL Server.
5. Delete the old tempdb.mdf and templog.ldf files.
Bonsoir,
Merci d'avoir répondu si rapidement à mes questions et j'attends avec
impatience les astuces pour éviter les curseurs.
Pour ce qui concerne le "retour d'expérience DBA", c'est avec plaisir que
t'ai renseigné (je prends la permission de vous tutoyer, tu peux faire de
même, je ne suis ni ministre, ni président). Etant sur Rennes et les
départements limitrophes, c'est plus facile.
Merci d'avance...
Houdini
"self" a écrit :
>
> "Houdini" a écrit dans le message de
> news:
> > Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore
> de
> > votre aide sur les points suivants:
>
> self: tout d'abord, merci pour ta réponse sur le post 'retour
> DBA ..
> '
> >
> > A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
> quoi
> > ils servent réellement, car dans les cours MS SQL, il n'est jamais
> > allusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
> exemple
> > concret, avec un exemple de code ?
>
> On peut s'en passer. Je retrouve l'astuce et je te (vous) tiens au
> >
> > B)-Comment déterminer la famille d'index sur un colonne d'une table ?
> > voudrais savoir si il s'agit d'un index cluster ou non cluster, soit
> > passant par une commande DBCC / sp ou par l'Enterprise Manager.
>
> sp_helpindex 'nom_table' ou sp_help 'nom_table'
> par EM, clique droit sur une table, toutes les tâches -> gérer les
> y a une colonne "ordonné"
>
>
> >
> > C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf)
> > plusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes
> > plus fiables et les plu s performantes ?
> >
> > -Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
> > emplacement, puis réattacher)
> >
> self: ca me parait la plus aisée et fiable, soit par requetes, soit par
> par sécurité, faire un dbcc checkdb avant.
>
> > -Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
> > (dans ce cas un simple Modify file suffirait-il ?)
> >
> > -Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être
> > aussi ?
> >
> self: pas nécessaire, sauf tempdb, voir en dessous
>
> > (Avec un exemple concert de commandes si besoins)
> >
> > D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
> foutue
> > TEMPDB ?
>
> self; idéalement, il faut la mettre sur un disque dédié car très
> I/O
> Il est conseillé de lui mettre une taille fixe (assez large), éviter
> l'accroissement auto+réduction auto.
>
> la tempdb n'est pas très optimisable, c'est plutôt ce qu'on y insére
> faut optimiser (voir indexer)
>
> Et voir si on peut s'en passer:
> - les variables tables permettent d'éviter les tables temporaires, c'est
> sensé être plus performant. A tester en fonction du besoin.
>
>
> pour la déplacer, voici un "How-to"
>
> Moving the tempdb database
> --------------------------
>
> You can move tempdb files by using the ALTER DATABASE statement.
>
> 1. Determine the logical file names for the tempdb database by using
> sp_helpfile
> as follows:
>
> use tempdb
> go
> sp_helpfile
> go
>
> The logical name for each file is contained in the name column. This
> uses
> the default file names of tempdev and templog.
>
> 2. Use the ALTER DATABASE statement, specifying the logical file name as
> follows:
>
> use master
> go
> Alter database tempdb modify file (name = tempdev, filename > > 'E:Mssql8Datatempdb.mdf')
> go
> Alter database tempdb modify file (name = templog, filename > > 'E:Mssql8Datatemplog.ldf')
> go
>
> You should receive the following messages confirming the change:
>
> File 'tempdev' modified in sysaltfiles. Delete old file after
> SQL
> Server.
>
> File 'templog' modified in sysaltfiles. Delete old file after
> SQL
> Server.
>
> 3. Using sp_helpfile in tempdb will not confirm these changes until you
> restart
> SQL Server.
>
> 4. Stop and restart SQL Server.
>
> 5. Delete the old tempdb.mdf and templog.ldf files.
>
>
>
>
>
>
Bonsoir,
Merci d'avoir répondu si rapidement à mes questions et j'attends avec
impatience les astuces pour éviter les curseurs.
Pour ce qui concerne le "retour d'expérience DBA", c'est avec plaisir que
t'ai renseigné (je prends la permission de vous tutoyer, tu peux faire de
même, je ne suis ni ministre, ni président). Etant sur Rennes et les
départements limitrophes, c'est plus facile.
Merci d'avance...
Houdini
"self" a écrit :
>
> "Houdini" <Houdini@discussions.microsoft.com> a écrit dans le message de
> news:3FE42846-1A8E-4F7A-AF12-8DF0B12F4C09@microsoft.com...
> > Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore
> de
> > votre aide sur les points suivants:
>
> self: tout d'abord, merci pour ta réponse sur le post 'retour
> DBA ..
> '
> >
> > A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
> quoi
> > ils servent réellement, car dans les cours MS SQL, il n'est jamais
> > allusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
> exemple
> > concret, avec un exemple de code ?
>
> On peut s'en passer. Je retrouve l'astuce et je te (vous) tiens au
> >
> > B)-Comment déterminer la famille d'index sur un colonne d'une table ?
> > voudrais savoir si il s'agit d'un index cluster ou non cluster, soit
> > passant par une commande DBCC / sp ou par l'Enterprise Manager.
>
> sp_helpindex 'nom_table' ou sp_help 'nom_table'
> par EM, clique droit sur une table, toutes les tâches -> gérer les
> y a une colonne "ordonné"
>
>
> >
> > C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf)
> > plusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes
> > plus fiables et les plu s performantes ?
> >
> > -Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
> > emplacement, puis réattacher)
> >
> self: ca me parait la plus aisée et fiable, soit par requetes, soit par
> par sécurité, faire un dbcc checkdb avant.
>
> > -Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
> > (dans ce cas un simple Modify file suffirait-il ?)
> >
> > -Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être
> > aussi ?
> >
> self: pas nécessaire, sauf tempdb, voir en dessous
>
> > (Avec un exemple concert de commandes si besoins)
> >
> > D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
> foutue
> > TEMPDB ?
>
> self; idéalement, il faut la mettre sur un disque dédié car très
> I/O
> Il est conseillé de lui mettre une taille fixe (assez large), éviter
> l'accroissement auto+réduction auto.
>
> la tempdb n'est pas très optimisable, c'est plutôt ce qu'on y insére
> faut optimiser (voir indexer)
>
> Et voir si on peut s'en passer:
> - les variables tables permettent d'éviter les tables temporaires, c'est
> sensé être plus performant. A tester en fonction du besoin.
>
>
> pour la déplacer, voici un "How-to"
>
> Moving the tempdb database
> --------------------------
>
> You can move tempdb files by using the ALTER DATABASE statement.
>
> 1. Determine the logical file names for the tempdb database by using
> sp_helpfile
> as follows:
>
> use tempdb
> go
> sp_helpfile
> go
>
> The logical name for each file is contained in the name column. This
> uses
> the default file names of tempdev and templog.
>
> 2. Use the ALTER DATABASE statement, specifying the logical file name as
> follows:
>
> use master
> go
> Alter database tempdb modify file (name = tempdev, filename > > 'E:Mssql8Datatempdb.mdf')
> go
> Alter database tempdb modify file (name = templog, filename > > 'E:Mssql8Datatemplog.ldf')
> go
>
> You should receive the following messages confirming the change:
>
> File 'tempdev' modified in sysaltfiles. Delete old file after
> SQL
> Server.
>
> File 'templog' modified in sysaltfiles. Delete old file after
> SQL
> Server.
>
> 3. Using sp_helpfile in tempdb will not confirm these changes until you
> restart
> SQL Server.
>
> 4. Stop and restart SQL Server.
>
> 5. Delete the old tempdb.mdf and templog.ldf files.
>
>
>
>
>
>
Bonsoir,
Merci d'avoir répondu si rapidement à mes questions et j'attends avec
impatience les astuces pour éviter les curseurs.
Pour ce qui concerne le "retour d'expérience DBA", c'est avec plaisir que
t'ai renseigné (je prends la permission de vous tutoyer, tu peux faire de
même, je ne suis ni ministre, ni président). Etant sur Rennes et les
départements limitrophes, c'est plus facile.
Merci d'avance...
Houdini
"self" a écrit :
>
> "Houdini" a écrit dans le message de
> news:
> > Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore
> de
> > votre aide sur les points suivants:
>
> self: tout d'abord, merci pour ta réponse sur le post 'retour
> DBA ..
> '
> >
> > A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
> quoi
> > ils servent réellement, car dans les cours MS SQL, il n'est jamais
> > allusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
> exemple
> > concret, avec un exemple de code ?
>
> On peut s'en passer. Je retrouve l'astuce et je te (vous) tiens au
> >
> > B)-Comment déterminer la famille d'index sur un colonne d'une table ?
> > voudrais savoir si il s'agit d'un index cluster ou non cluster, soit
> > passant par une commande DBCC / sp ou par l'Enterprise Manager.
>
> sp_helpindex 'nom_table' ou sp_help 'nom_table'
> par EM, clique droit sur une table, toutes les tâches -> gérer les
> y a une colonne "ordonné"
>
>
> >
> > C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf)
> > plusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes
> > plus fiables et les plu s performantes ?
> >
> > -Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
> > emplacement, puis réattacher)
> >
> self: ca me parait la plus aisée et fiable, soit par requetes, soit par
> par sécurité, faire un dbcc checkdb avant.
>
> > -Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
> > (dans ce cas un simple Modify file suffirait-il ?)
> >
> > -Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être
> > aussi ?
> >
> self: pas nécessaire, sauf tempdb, voir en dessous
>
> > (Avec un exemple concert de commandes si besoins)
> >
> > D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
> foutue
> > TEMPDB ?
>
> self; idéalement, il faut la mettre sur un disque dédié car très
> I/O
> Il est conseillé de lui mettre une taille fixe (assez large), éviter
> l'accroissement auto+réduction auto.
>
> la tempdb n'est pas très optimisable, c'est plutôt ce qu'on y insére
> faut optimiser (voir indexer)
>
> Et voir si on peut s'en passer:
> - les variables tables permettent d'éviter les tables temporaires, c'est
> sensé être plus performant. A tester en fonction du besoin.
>
>
> pour la déplacer, voici un "How-to"
>
> Moving the tempdb database
> --------------------------
>
> You can move tempdb files by using the ALTER DATABASE statement.
>
> 1. Determine the logical file names for the tempdb database by using
> sp_helpfile
> as follows:
>
> use tempdb
> go
> sp_helpfile
> go
>
> The logical name for each file is contained in the name column. This
> uses
> the default file names of tempdev and templog.
>
> 2. Use the ALTER DATABASE statement, specifying the logical file name as
> follows:
>
> use master
> go
> Alter database tempdb modify file (name = tempdev, filename > > 'E:Mssql8Datatempdb.mdf')
> go
> Alter database tempdb modify file (name = templog, filename > > 'E:Mssql8Datatemplog.ldf')
> go
>
> You should receive the following messages confirming the change:
>
> File 'tempdev' modified in sysaltfiles. Delete old file after
> SQL
> Server.
>
> File 'templog' modified in sysaltfiles. Delete old file after
> SQL
> Server.
>
> 3. Using sp_helpfile in tempdb will not confirm these changes until you
> restart
> SQL Server.
>
> 4. Stop and restart SQL Server.
>
> 5. Delete the old tempdb.mdf and templog.ldf files.
>
>
>
>
>
>
Bonjour,
Pour éviter les curseurs, il faut au maximum utiliser des opérations
ensemblistes. Un curseur permet de se déplacer d'un enregistrement à un
autre afin de traiter les lignes renvoyées par une requête les unes après
les autres.
Exemple:
-- Création d'une table
DECLARE @MyTable TABLE(TABLE_CODE nvarchar(100), TABLE_VALUE int)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('A', 1)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('B', 2)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('C', 3)
Pour incrémenter TABLE_VALUE de 1 pour chaque enregistrement, il est
préférable de faire :
UPDATE @MyTable SET TABLE_VALUE = TABLE_VALUE + 1
que de faire:
DECLARE @Cur_MyCode nvarchar(100)
DECLARE Cursor_MyTable CURSOR FAST_FORWARD FOR
SELECT TABLE_CODE FROM @MyTable
OPEN Cursor_MyTable
FETCH NEXT FROM Cursor_MyTable INTO @Cur_MyCode
WHILE (@@fetch_status = 0)
BEGIN
UPDATE @MyTable SET TABLE_VALUE = TABLE_VALUE + 1 WHERE TABLE_CODE > @Cur_MyCode
FETCH NEXT FROM Cursor_MyTable INTO @Cur_MyCode
END
CLOSE Cursor_MyTable
DEALLOCATE Cursor_MyTable
Bon, là l'exemple est trop simple mais c'est l'idée. Travailler de façon
ensembliste quand c'est possible !!!
Pour effectuer correctement une optimisation, les étapes à franchir sont :
1. Analyse du serveur Windows hébergeant la base de données. Souvent une
mauvaise installation de SQL Server nuit aux performances
2. Analyse de l'installation de SQL Server. Y a t il des paramètres
particuliers / Collation de la base / ...
3. Analyse de la localisation de la base de données. Disques hébergeant les
données et les logs, taille de la TempDB, pas de croissance des fichiers,
....
4. Analyse du contenu de la base. Capture au profiler de traces
représentatives / Analyse des plan de maintenance des procédures couteuses /
....
Bon courage.
Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france
"Houdini" wrote in message
news:
> Bonsoir,
>
> Merci d'avoir répondu si rapidement à mes questions et j'attends avec
> impatience les astuces pour éviter les curseurs.
>
> Pour ce qui concerne le "retour d'expérience DBA", c'est avec plaisir que
je
> t'ai renseigné (je prends la permission de vous tutoyer, tu peux faire de
> même, je ne suis ni ministre, ni président). Etant sur Rennes et les
> départements limitrophes, c'est plus facile.
>
> Merci d'avance...
> Houdini
>
> "self" a écrit :
>
> >
> > "Houdini" a écrit dans le message de
> > news:
> > > Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore
besoin
> > de
> > > votre aide sur les points suivants:
> >
> > self: tout d'abord, merci pour ta réponse sur le post 'retour
d'expérience
> > DBA ..
> > '
> > >
> > > A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
> > quoi
> > > ils servent réellement, car dans les cours MS SQL, il n'est jamais
fait
> > > allusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
> > exemple
> > > concret, avec un exemple de code ?
> >
> > On peut s'en passer. Je retrouve l'astuce et je te (vous) tiens au
courant.
> > >
> > > B)-Comment déterminer la famille d'index sur un colonne d'une table ?
Je
> > > voudrais savoir si il s'agit d'un index cluster ou non cluster, soit
en
> > > passant par une commande DBCC / sp ou par l'Enterprise Manager.
> >
> > sp_helpindex 'nom_table' ou sp_help 'nom_table'
> > par EM, clique droit sur une table, toutes les tâches -> gérer les
index, il
> > y a une colonne "ordonné"
> >
> >
> > >
> > > C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf)
de
> > > plusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes
les
> > > plus fiables et les plu s performantes ?
> > >
> > > -Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
> > > emplacement, puis réattacher)
> > >
> > self: ca me parait la plus aisée et fiable, soit par requetes, soit par
EM
> > par sécurité, faire un dbcc checkdb avant.
> >
> > > -Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
> > > (dans ce cas un simple Modify file suffirait-il ?)
> > >
> > > -Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être
déplacés
> > > aussi ?
> > >
> > self: pas nécessaire, sauf tempdb, voir en dessous
> >
> > > (Avec un exemple concert de commandes si besoins)
> > >
> > > D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
> > foutue
> > > TEMPDB ?
> >
> > self; idéalement, il faut la mettre sur un disque dédié car très
gourmand en
> > I/O
> > Il est conseillé de lui mettre une taille fixe (assez large), éviter
> > l'accroissement auto+réduction auto.
> >
> > la tempdb n'est pas très optimisable, c'est plutôt ce qu'on y insére
qu'il
> > faut optimiser (voir indexer)
> >
> > Et voir si on peut s'en passer:
> > - les variables tables permettent d'éviter les tables temporaires, c'est
> > sensé être plus performant. A tester en fonction du besoin.
> >
> >
> > pour la déplacer, voici un "How-to"
> >
> > Moving the tempdb database
> > --------------------------
> >
> > You can move tempdb files by using the ALTER DATABASE statement.
> >
> > 1. Determine the logical file names for the tempdb database by using
> > sp_helpfile
> > as follows:
> >
> > use tempdb
> > go
> > sp_helpfile
> > go
> >
> > The logical name for each file is contained in the name column. This
example
> > uses
> > the default file names of tempdev and templog.
> >
> > 2. Use the ALTER DATABASE statement, specifying the logical file name as
> > follows:
> >
> > use master
> > go
> > Alter database tempdb modify file (name = tempdev, filename > > > 'E:Mssql8Datatempdb.mdf')
> > go
> > Alter database tempdb modify file (name = templog, filename > > > 'E:Mssql8Datatemplog.ldf')
> > go
> >
> > You should receive the following messages confirming the change:
> >
> > File 'tempdev' modified in sysaltfiles. Delete old file after
restarting
> > SQL
> > Server.
> >
> > File 'templog' modified in sysaltfiles. Delete old file after
restarting
> > SQL
> > Server.
> >
> > 3. Using sp_helpfile in tempdb will not confirm these changes until you
> > restart
> > SQL Server.
> >
> > 4. Stop and restart SQL Server.
> >
> > 5. Delete the old tempdb.mdf and templog.ldf files.
> >
> >
> >
> >
> >
> >
Bonjour,
Pour éviter les curseurs, il faut au maximum utiliser des opérations
ensemblistes. Un curseur permet de se déplacer d'un enregistrement à un
autre afin de traiter les lignes renvoyées par une requête les unes après
les autres.
Exemple:
-- Création d'une table
DECLARE @MyTable TABLE(TABLE_CODE nvarchar(100), TABLE_VALUE int)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('A', 1)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('B', 2)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('C', 3)
Pour incrémenter TABLE_VALUE de 1 pour chaque enregistrement, il est
préférable de faire :
UPDATE @MyTable SET TABLE_VALUE = TABLE_VALUE + 1
que de faire:
DECLARE @Cur_MyCode nvarchar(100)
DECLARE Cursor_MyTable CURSOR FAST_FORWARD FOR
SELECT TABLE_CODE FROM @MyTable
OPEN Cursor_MyTable
FETCH NEXT FROM Cursor_MyTable INTO @Cur_MyCode
WHILE (@@fetch_status = 0)
BEGIN
UPDATE @MyTable SET TABLE_VALUE = TABLE_VALUE + 1 WHERE TABLE_CODE > @Cur_MyCode
FETCH NEXT FROM Cursor_MyTable INTO @Cur_MyCode
END
CLOSE Cursor_MyTable
DEALLOCATE Cursor_MyTable
Bon, là l'exemple est trop simple mais c'est l'idée. Travailler de façon
ensembliste quand c'est possible !!!
Pour effectuer correctement une optimisation, les étapes à franchir sont :
1. Analyse du serveur Windows hébergeant la base de données. Souvent une
mauvaise installation de SQL Server nuit aux performances
2. Analyse de l'installation de SQL Server. Y a t il des paramètres
particuliers / Collation de la base / ...
3. Analyse de la localisation de la base de données. Disques hébergeant les
données et les logs, taille de la TempDB, pas de croissance des fichiers,
....
4. Analyse du contenu de la base. Capture au profiler de traces
représentatives / Analyse des plan de maintenance des procédures couteuses /
....
Bon courage.
Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france
"Houdini" <Houdini@discussions.microsoft.com> wrote in message
news:80C30214-8574-4565-BE83-00DBAA0AA1BF@microsoft.com...
> Bonsoir,
>
> Merci d'avoir répondu si rapidement à mes questions et j'attends avec
> impatience les astuces pour éviter les curseurs.
>
> Pour ce qui concerne le "retour d'expérience DBA", c'est avec plaisir que
je
> t'ai renseigné (je prends la permission de vous tutoyer, tu peux faire de
> même, je ne suis ni ministre, ni président). Etant sur Rennes et les
> départements limitrophes, c'est plus facile.
>
> Merci d'avance...
> Houdini
>
> "self" a écrit :
>
> >
> > "Houdini" <Houdini@discussions.microsoft.com> a écrit dans le message de
> > news:3FE42846-1A8E-4F7A-AF12-8DF0B12F4C09@microsoft.com...
> > > Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore
besoin
> > de
> > > votre aide sur les points suivants:
> >
> > self: tout d'abord, merci pour ta réponse sur le post 'retour
d'expérience
> > DBA ..
> > '
> > >
> > > A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
> > quoi
> > > ils servent réellement, car dans les cours MS SQL, il n'est jamais
fait
> > > allusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
> > exemple
> > > concret, avec un exemple de code ?
> >
> > On peut s'en passer. Je retrouve l'astuce et je te (vous) tiens au
courant.
> > >
> > > B)-Comment déterminer la famille d'index sur un colonne d'une table ?
Je
> > > voudrais savoir si il s'agit d'un index cluster ou non cluster, soit
en
> > > passant par une commande DBCC / sp ou par l'Enterprise Manager.
> >
> > sp_helpindex 'nom_table' ou sp_help 'nom_table'
> > par EM, clique droit sur une table, toutes les tâches -> gérer les
index, il
> > y a une colonne "ordonné"
> >
> >
> > >
> > > C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf)
de
> > > plusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes
les
> > > plus fiables et les plu s performantes ?
> > >
> > > -Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
> > > emplacement, puis réattacher)
> > >
> > self: ca me parait la plus aisée et fiable, soit par requetes, soit par
EM
> > par sécurité, faire un dbcc checkdb avant.
> >
> > > -Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
> > > (dans ce cas un simple Modify file suffirait-il ?)
> > >
> > > -Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être
déplacés
> > > aussi ?
> > >
> > self: pas nécessaire, sauf tempdb, voir en dessous
> >
> > > (Avec un exemple concert de commandes si besoins)
> > >
> > > D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
> > foutue
> > > TEMPDB ?
> >
> > self; idéalement, il faut la mettre sur un disque dédié car très
gourmand en
> > I/O
> > Il est conseillé de lui mettre une taille fixe (assez large), éviter
> > l'accroissement auto+réduction auto.
> >
> > la tempdb n'est pas très optimisable, c'est plutôt ce qu'on y insére
qu'il
> > faut optimiser (voir indexer)
> >
> > Et voir si on peut s'en passer:
> > - les variables tables permettent d'éviter les tables temporaires, c'est
> > sensé être plus performant. A tester en fonction du besoin.
> >
> >
> > pour la déplacer, voici un "How-to"
> >
> > Moving the tempdb database
> > --------------------------
> >
> > You can move tempdb files by using the ALTER DATABASE statement.
> >
> > 1. Determine the logical file names for the tempdb database by using
> > sp_helpfile
> > as follows:
> >
> > use tempdb
> > go
> > sp_helpfile
> > go
> >
> > The logical name for each file is contained in the name column. This
example
> > uses
> > the default file names of tempdev and templog.
> >
> > 2. Use the ALTER DATABASE statement, specifying the logical file name as
> > follows:
> >
> > use master
> > go
> > Alter database tempdb modify file (name = tempdev, filename > > > 'E:Mssql8Datatempdb.mdf')
> > go
> > Alter database tempdb modify file (name = templog, filename > > > 'E:Mssql8Datatemplog.ldf')
> > go
> >
> > You should receive the following messages confirming the change:
> >
> > File 'tempdev' modified in sysaltfiles. Delete old file after
restarting
> > SQL
> > Server.
> >
> > File 'templog' modified in sysaltfiles. Delete old file after
restarting
> > SQL
> > Server.
> >
> > 3. Using sp_helpfile in tempdb will not confirm these changes until you
> > restart
> > SQL Server.
> >
> > 4. Stop and restart SQL Server.
> >
> > 5. Delete the old tempdb.mdf and templog.ldf files.
> >
> >
> >
> >
> >
> >
Bonjour,
Pour éviter les curseurs, il faut au maximum utiliser des opérations
ensemblistes. Un curseur permet de se déplacer d'un enregistrement à un
autre afin de traiter les lignes renvoyées par une requête les unes après
les autres.
Exemple:
-- Création d'une table
DECLARE @MyTable TABLE(TABLE_CODE nvarchar(100), TABLE_VALUE int)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('A', 1)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('B', 2)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('C', 3)
Pour incrémenter TABLE_VALUE de 1 pour chaque enregistrement, il est
préférable de faire :
UPDATE @MyTable SET TABLE_VALUE = TABLE_VALUE + 1
que de faire:
DECLARE @Cur_MyCode nvarchar(100)
DECLARE Cursor_MyTable CURSOR FAST_FORWARD FOR
SELECT TABLE_CODE FROM @MyTable
OPEN Cursor_MyTable
FETCH NEXT FROM Cursor_MyTable INTO @Cur_MyCode
WHILE (@@fetch_status = 0)
BEGIN
UPDATE @MyTable SET TABLE_VALUE = TABLE_VALUE + 1 WHERE TABLE_CODE > @Cur_MyCode
FETCH NEXT FROM Cursor_MyTable INTO @Cur_MyCode
END
CLOSE Cursor_MyTable
DEALLOCATE Cursor_MyTable
Bon, là l'exemple est trop simple mais c'est l'idée. Travailler de façon
ensembliste quand c'est possible !!!
Pour effectuer correctement une optimisation, les étapes à franchir sont :
1. Analyse du serveur Windows hébergeant la base de données. Souvent une
mauvaise installation de SQL Server nuit aux performances
2. Analyse de l'installation de SQL Server. Y a t il des paramètres
particuliers / Collation de la base / ...
3. Analyse de la localisation de la base de données. Disques hébergeant les
données et les logs, taille de la TempDB, pas de croissance des fichiers,
....
4. Analyse du contenu de la base. Capture au profiler de traces
représentatives / Analyse des plan de maintenance des procédures couteuses /
....
Bon courage.
Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france
"Houdini" wrote in message
news:
> Bonsoir,
>
> Merci d'avoir répondu si rapidement à mes questions et j'attends avec
> impatience les astuces pour éviter les curseurs.
>
> Pour ce qui concerne le "retour d'expérience DBA", c'est avec plaisir que
je
> t'ai renseigné (je prends la permission de vous tutoyer, tu peux faire de
> même, je ne suis ni ministre, ni président). Etant sur Rennes et les
> départements limitrophes, c'est plus facile.
>
> Merci d'avance...
> Houdini
>
> "self" a écrit :
>
> >
> > "Houdini" a écrit dans le message de
> > news:
> > > Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore
besoin
> > de
> > > votre aide sur les points suivants:
> >
> > self: tout d'abord, merci pour ta réponse sur le post 'retour
d'expérience
> > DBA ..
> > '
> > >
> > > A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
> > quoi
> > > ils servent réellement, car dans les cours MS SQL, il n'est jamais
fait
> > > allusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
> > exemple
> > > concret, avec un exemple de code ?
> >
> > On peut s'en passer. Je retrouve l'astuce et je te (vous) tiens au
courant.
> > >
> > > B)-Comment déterminer la famille d'index sur un colonne d'une table ?
Je
> > > voudrais savoir si il s'agit d'un index cluster ou non cluster, soit
en
> > > passant par une commande DBCC / sp ou par l'Enterprise Manager.
> >
> > sp_helpindex 'nom_table' ou sp_help 'nom_table'
> > par EM, clique droit sur une table, toutes les tâches -> gérer les
index, il
> > y a une colonne "ordonné"
> >
> >
> > >
> > > C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf)
de
> > > plusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes
les
> > > plus fiables et les plu s performantes ?
> > >
> > > -Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
> > > emplacement, puis réattacher)
> > >
> > self: ca me parait la plus aisée et fiable, soit par requetes, soit par
EM
> > par sécurité, faire un dbcc checkdb avant.
> >
> > > -Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
> > > (dans ce cas un simple Modify file suffirait-il ?)
> > >
> > > -Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être
déplacés
> > > aussi ?
> > >
> > self: pas nécessaire, sauf tempdb, voir en dessous
> >
> > > (Avec un exemple concert de commandes si besoins)
> > >
> > > D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
> > foutue
> > > TEMPDB ?
> >
> > self; idéalement, il faut la mettre sur un disque dédié car très
gourmand en
> > I/O
> > Il est conseillé de lui mettre une taille fixe (assez large), éviter
> > l'accroissement auto+réduction auto.
> >
> > la tempdb n'est pas très optimisable, c'est plutôt ce qu'on y insére
qu'il
> > faut optimiser (voir indexer)
> >
> > Et voir si on peut s'en passer:
> > - les variables tables permettent d'éviter les tables temporaires, c'est
> > sensé être plus performant. A tester en fonction du besoin.
> >
> >
> > pour la déplacer, voici un "How-to"
> >
> > Moving the tempdb database
> > --------------------------
> >
> > You can move tempdb files by using the ALTER DATABASE statement.
> >
> > 1. Determine the logical file names for the tempdb database by using
> > sp_helpfile
> > as follows:
> >
> > use tempdb
> > go
> > sp_helpfile
> > go
> >
> > The logical name for each file is contained in the name column. This
example
> > uses
> > the default file names of tempdev and templog.
> >
> > 2. Use the ALTER DATABASE statement, specifying the logical file name as
> > follows:
> >
> > use master
> > go
> > Alter database tempdb modify file (name = tempdev, filename > > > 'E:Mssql8Datatempdb.mdf')
> > go
> > Alter database tempdb modify file (name = templog, filename > > > 'E:Mssql8Datatemplog.ldf')
> > go
> >
> > You should receive the following messages confirming the change:
> >
> > File 'tempdev' modified in sysaltfiles. Delete old file after
restarting
> > SQL
> > Server.
> >
> > File 'templog' modified in sysaltfiles. Delete old file after
restarting
> > SQL
> > Server.
> >
> > 3. Using sp_helpfile in tempdb will not confirm these changes until you
> > restart
> > SQL Server.
> >
> > 4. Stop and restart SQL Server.
> >
> > 5. Delete the old tempdb.mdf and templog.ldf files.
> >
> >
> >
> >
> >
> >
Bonjour,
Merci pour toutes ces réponses, j'ai déjà préconisé et valider les parties
hard et soft. Au niveau de la TEMPDB, quelle taille faudrait-il mettre ?
(assez importante n'est pas une mesure) ?
Existe-t-il un moyen de purger régulièrement le contenu de la TEMPDB, de
façon à optimiser les I/O ?
Au niveau des connecteurs de bases de données, quels mesures pourrais-je
faire pour savoir ce qui se passe en entrée et/ou en sortie d'une application
?
Merci d'avance.
Houdini
"Philippe T [MS]" a écrit :Bonjour,
Pour éviter les curseurs, il faut au maximum utiliser des opérations
ensemblistes. Un curseur permet de se déplacer d'un enregistrement à un
autre afin de traiter les lignes renvoyées par une requête les unes après
les autres.
Exemple:
-- Création d'une table
DECLARE @MyTable TABLE(TABLE_CODE nvarchar(100), TABLE_VALUE int)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('A', 1)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('B', 2)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('C', 3)
Pour incrémenter TABLE_VALUE de 1 pour chaque enregistrement, il est
préférable de faire :
UPDATE @MyTable SET TABLE_VALUE = TABLE_VALUE + 1
que de faire:
DECLARE @Cur_MyCode nvarchar(100)
DECLARE Cursor_MyTable CURSOR FAST_FORWARD FOR
SELECT TABLE_CODE FROM @MyTable
OPEN Cursor_MyTable
FETCH NEXT FROM Cursor_MyTable INTO @Cur_MyCode
WHILE (@@fetch_status = 0)
BEGIN
UPDATE @MyTable SET TABLE_VALUE = TABLE_VALUE + 1 WHERE TABLE_CODE >>@Cur_MyCode
FETCH NEXT FROM Cursor_MyTable INTO @Cur_MyCode
END
CLOSE Cursor_MyTable
DEALLOCATE Cursor_MyTable
Bon, là l'exemple est trop simple mais c'est l'idée. Travailler de façon
ensembliste quand c'est possible !!!
Pour effectuer correctement une optimisation, les étapes à franchir sont :
1. Analyse du serveur Windows hébergeant la base de données. Souvent une
mauvaise installation de SQL Server nuit aux performances
2. Analyse de l'installation de SQL Server. Y a t il des paramètres
particuliers / Collation de la base / ...
3. Analyse de la localisation de la base de données. Disques hébergeant les
données et les logs, taille de la TempDB, pas de croissance des fichiers,
....
4. Analyse du contenu de la base. Capture au profiler de traces
représentatives / Analyse des plan de maintenance des procédures couteuses /
....
Bon courage.
Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france
"Houdini" wrote in message
news:Bonsoir,
Merci d'avoir répondu si rapidement à mes questions et j'attends avec
impatience les astuces pour éviter les curseurs.
Pour ce qui concerne le "retour d'expérience DBA", c'est avec plaisir que
jet'ai renseigné (je prends la permission de vous tutoyer, tu peux faire de
même, je ne suis ni ministre, ni président). Etant sur Rennes et les
départements limitrophes, c'est plus facile.
Merci d'avance...
Houdini
"self" a écrit :"Houdini" a écrit dans le message de
news:Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore
besoindevotre aide sur les points suivants:
self: tout d'abord, merci pour ta réponse sur le post 'retour
d'expérienceDBA ..
'A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
quoiils servent réellement, car dans les cours MS SQL, il n'est jamais
faitallusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
exempleconcret, avec un exemple de code ?
On peut s'en passer. Je retrouve l'astuce et je te (vous) tiens au
courant.B)-Comment déterminer la famille d'index sur un colonne d'une table ?
Jevoudrais savoir si il s'agit d'un index cluster ou non cluster, soit
enpassant par une commande DBCC / sp ou par l'Enterprise Manager.
sp_helpindex 'nom_table' ou sp_help 'nom_table'
par EM, clique droit sur une table, toutes les tâches -> gérer les
index, ily a une colonne "ordonné"C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf)
deplusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes
lesplus fiables et les plu s performantes ?
-Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
emplacement, puis réattacher)
self: ca me parait la plus aisée et fiable, soit par requetes, soit par
EMpar sécurité, faire un dbcc checkdb avant.-Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
(dans ce cas un simple Modify file suffirait-il ?)
-Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être
déplacésaussi ?
self: pas nécessaire, sauf tempdb, voir en dessous(Avec un exemple concert de commandes si besoins)
D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
foutueTEMPDB ?
self; idéalement, il faut la mettre sur un disque dédié car très
gourmand enI/O
Il est conseillé de lui mettre une taille fixe (assez large), éviter
l'accroissement auto+réduction auto.
la tempdb n'est pas très optimisable, c'est plutôt ce qu'on y insére
qu'ilfaut optimiser (voir indexer)
Et voir si on peut s'en passer:
- les variables tables permettent d'éviter les tables temporaires, c'est
sensé être plus performant. A tester en fonction du besoin.
pour la déplacer, voici un "How-to"
Moving the tempdb database
--------------------------
You can move tempdb files by using the ALTER DATABASE statement.
1. Determine the logical file names for the tempdb database by using
sp_helpfile
as follows:
use tempdb
go
sp_helpfile
go
The logical name for each file is contained in the name column. This
exampleuses
the default file names of tempdev and templog.
2. Use the ALTER DATABASE statement, specifying the logical file name as
follows:
use master
go
Alter database tempdb modify file (name = tempdev, filename >>>>'E:Mssql8Datatempdb.mdf')
go
Alter database tempdb modify file (name = templog, filename >>>>'E:Mssql8Datatemplog.ldf')
go
You should receive the following messages confirming the change:
File 'tempdev' modified in sysaltfiles. Delete old file after
restartingSQL
Server.
File 'templog' modified in sysaltfiles. Delete old file after
restartingSQL
Server.
3. Using sp_helpfile in tempdb will not confirm these changes until you
restart
SQL Server.
4. Stop and restart SQL Server.
5. Delete the old tempdb.mdf and templog.ldf files.
Bonjour,
Merci pour toutes ces réponses, j'ai déjà préconisé et valider les parties
hard et soft. Au niveau de la TEMPDB, quelle taille faudrait-il mettre ?
(assez importante n'est pas une mesure) ?
Existe-t-il un moyen de purger régulièrement le contenu de la TEMPDB, de
façon à optimiser les I/O ?
Au niveau des connecteurs de bases de données, quels mesures pourrais-je
faire pour savoir ce qui se passe en entrée et/ou en sortie d'une application
?
Merci d'avance.
Houdini
"Philippe T [MS]" a écrit :
Bonjour,
Pour éviter les curseurs, il faut au maximum utiliser des opérations
ensemblistes. Un curseur permet de se déplacer d'un enregistrement à un
autre afin de traiter les lignes renvoyées par une requête les unes après
les autres.
Exemple:
-- Création d'une table
DECLARE @MyTable TABLE(TABLE_CODE nvarchar(100), TABLE_VALUE int)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('A', 1)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('B', 2)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('C', 3)
Pour incrémenter TABLE_VALUE de 1 pour chaque enregistrement, il est
préférable de faire :
UPDATE @MyTable SET TABLE_VALUE = TABLE_VALUE + 1
que de faire:
DECLARE @Cur_MyCode nvarchar(100)
DECLARE Cursor_MyTable CURSOR FAST_FORWARD FOR
SELECT TABLE_CODE FROM @MyTable
OPEN Cursor_MyTable
FETCH NEXT FROM Cursor_MyTable INTO @Cur_MyCode
WHILE (@@fetch_status = 0)
BEGIN
UPDATE @MyTable SET TABLE_VALUE = TABLE_VALUE + 1 WHERE TABLE_CODE >>@Cur_MyCode
FETCH NEXT FROM Cursor_MyTable INTO @Cur_MyCode
END
CLOSE Cursor_MyTable
DEALLOCATE Cursor_MyTable
Bon, là l'exemple est trop simple mais c'est l'idée. Travailler de façon
ensembliste quand c'est possible !!!
Pour effectuer correctement une optimisation, les étapes à franchir sont :
1. Analyse du serveur Windows hébergeant la base de données. Souvent une
mauvaise installation de SQL Server nuit aux performances
2. Analyse de l'installation de SQL Server. Y a t il des paramètres
particuliers / Collation de la base / ...
3. Analyse de la localisation de la base de données. Disques hébergeant les
données et les logs, taille de la TempDB, pas de croissance des fichiers,
....
4. Analyse du contenu de la base. Capture au profiler de traces
représentatives / Analyse des plan de maintenance des procédures couteuses /
....
Bon courage.
Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france
"Houdini" <Houdini@discussions.microsoft.com> wrote in message
news:80C30214-8574-4565-BE83-00DBAA0AA1BF@microsoft.com...
Bonsoir,
Merci d'avoir répondu si rapidement à mes questions et j'attends avec
impatience les astuces pour éviter les curseurs.
Pour ce qui concerne le "retour d'expérience DBA", c'est avec plaisir que
je
t'ai renseigné (je prends la permission de vous tutoyer, tu peux faire de
même, je ne suis ni ministre, ni président). Etant sur Rennes et les
départements limitrophes, c'est plus facile.
Merci d'avance...
Houdini
"self" a écrit :
"Houdini" <Houdini@discussions.microsoft.com> a écrit dans le message de
news:3FE42846-1A8E-4F7A-AF12-8DF0B12F4C09@microsoft.com...
Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore
besoin
de
votre aide sur les points suivants:
self: tout d'abord, merci pour ta réponse sur le post 'retour
d'expérience
DBA ..
'
A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
quoi
ils servent réellement, car dans les cours MS SQL, il n'est jamais
fait
allusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
exemple
concret, avec un exemple de code ?
On peut s'en passer. Je retrouve l'astuce et je te (vous) tiens au
courant.
B)-Comment déterminer la famille d'index sur un colonne d'une table ?
Je
voudrais savoir si il s'agit d'un index cluster ou non cluster, soit
en
passant par une commande DBCC / sp ou par l'Enterprise Manager.
sp_helpindex 'nom_table' ou sp_help 'nom_table'
par EM, clique droit sur une table, toutes les tâches -> gérer les
index, il
y a une colonne "ordonné"
C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf)
de
plusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes
les
plus fiables et les plu s performantes ?
-Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
emplacement, puis réattacher)
self: ca me parait la plus aisée et fiable, soit par requetes, soit par
EM
par sécurité, faire un dbcc checkdb avant.
-Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
(dans ce cas un simple Modify file suffirait-il ?)
-Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être
déplacés
aussi ?
self: pas nécessaire, sauf tempdb, voir en dessous
(Avec un exemple concert de commandes si besoins)
D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
foutue
TEMPDB ?
self; idéalement, il faut la mettre sur un disque dédié car très
gourmand en
I/O
Il est conseillé de lui mettre une taille fixe (assez large), éviter
l'accroissement auto+réduction auto.
la tempdb n'est pas très optimisable, c'est plutôt ce qu'on y insére
qu'il
faut optimiser (voir indexer)
Et voir si on peut s'en passer:
- les variables tables permettent d'éviter les tables temporaires, c'est
sensé être plus performant. A tester en fonction du besoin.
pour la déplacer, voici un "How-to"
Moving the tempdb database
--------------------------
You can move tempdb files by using the ALTER DATABASE statement.
1. Determine the logical file names for the tempdb database by using
sp_helpfile
as follows:
use tempdb
go
sp_helpfile
go
The logical name for each file is contained in the name column. This
example
uses
the default file names of tempdev and templog.
2. Use the ALTER DATABASE statement, specifying the logical file name as
follows:
use master
go
Alter database tempdb modify file (name = tempdev, filename >>>>'E:Mssql8Datatempdb.mdf')
go
Alter database tempdb modify file (name = templog, filename >>>>'E:Mssql8Datatemplog.ldf')
go
You should receive the following messages confirming the change:
File 'tempdev' modified in sysaltfiles. Delete old file after
restarting
SQL
Server.
File 'templog' modified in sysaltfiles. Delete old file after
restarting
SQL
Server.
3. Using sp_helpfile in tempdb will not confirm these changes until you
restart
SQL Server.
4. Stop and restart SQL Server.
5. Delete the old tempdb.mdf and templog.ldf files.
Bonjour,
Merci pour toutes ces réponses, j'ai déjà préconisé et valider les parties
hard et soft. Au niveau de la TEMPDB, quelle taille faudrait-il mettre ?
(assez importante n'est pas une mesure) ?
Existe-t-il un moyen de purger régulièrement le contenu de la TEMPDB, de
façon à optimiser les I/O ?
Au niveau des connecteurs de bases de données, quels mesures pourrais-je
faire pour savoir ce qui se passe en entrée et/ou en sortie d'une application
?
Merci d'avance.
Houdini
"Philippe T [MS]" a écrit :Bonjour,
Pour éviter les curseurs, il faut au maximum utiliser des opérations
ensemblistes. Un curseur permet de se déplacer d'un enregistrement à un
autre afin de traiter les lignes renvoyées par une requête les unes après
les autres.
Exemple:
-- Création d'une table
DECLARE @MyTable TABLE(TABLE_CODE nvarchar(100), TABLE_VALUE int)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('A', 1)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('B', 2)
INSERT INTO @MyTable (TABLE_CODE, TABLE_VALUE) VALUES('C', 3)
Pour incrémenter TABLE_VALUE de 1 pour chaque enregistrement, il est
préférable de faire :
UPDATE @MyTable SET TABLE_VALUE = TABLE_VALUE + 1
que de faire:
DECLARE @Cur_MyCode nvarchar(100)
DECLARE Cursor_MyTable CURSOR FAST_FORWARD FOR
SELECT TABLE_CODE FROM @MyTable
OPEN Cursor_MyTable
FETCH NEXT FROM Cursor_MyTable INTO @Cur_MyCode
WHILE (@@fetch_status = 0)
BEGIN
UPDATE @MyTable SET TABLE_VALUE = TABLE_VALUE + 1 WHERE TABLE_CODE >>@Cur_MyCode
FETCH NEXT FROM Cursor_MyTable INTO @Cur_MyCode
END
CLOSE Cursor_MyTable
DEALLOCATE Cursor_MyTable
Bon, là l'exemple est trop simple mais c'est l'idée. Travailler de façon
ensembliste quand c'est possible !!!
Pour effectuer correctement une optimisation, les étapes à franchir sont :
1. Analyse du serveur Windows hébergeant la base de données. Souvent une
mauvaise installation de SQL Server nuit aux performances
2. Analyse de l'installation de SQL Server. Y a t il des paramètres
particuliers / Collation de la base / ...
3. Analyse de la localisation de la base de données. Disques hébergeant les
données et les logs, taille de la TempDB, pas de croissance des fichiers,
....
4. Analyse du contenu de la base. Capture au profiler de traces
représentatives / Analyse des plan de maintenance des procédures couteuses /
....
Bon courage.
Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france
"Houdini" wrote in message
news:Bonsoir,
Merci d'avoir répondu si rapidement à mes questions et j'attends avec
impatience les astuces pour éviter les curseurs.
Pour ce qui concerne le "retour d'expérience DBA", c'est avec plaisir que
jet'ai renseigné (je prends la permission de vous tutoyer, tu peux faire de
même, je ne suis ni ministre, ni président). Etant sur Rennes et les
départements limitrophes, c'est plus facile.
Merci d'avance...
Houdini
"self" a écrit :"Houdini" a écrit dans le message de
news:Merci beaucoup pour toutes ces réponses rapides, mais j'ai encore
besoindevotre aide sur les points suivants:
self: tout d'abord, merci pour ta réponse sur le post 'retour
d'expérienceDBA ..
'A)-Les curseurs ne sont pas les bienvenus, pourriez-vous me rappeler à
quoiils servent réellement, car dans les cours MS SQL, il n'est jamais
faitallusion à ce type d'obet ... comment les remplacer ? Auriez-vous un
exempleconcret, avec un exemple de code ?
On peut s'en passer. Je retrouve l'astuce et je te (vous) tiens au
courant.B)-Comment déterminer la famille d'index sur un colonne d'une table ?
Jevoudrais savoir si il s'agit d'un index cluster ou non cluster, soit
enpassant par une commande DBCC / sp ou par l'Enterprise Manager.
sp_helpindex 'nom_table' ou sp_help 'nom_table'
par EM, clique droit sur une table, toutes les tâches -> gérer les
index, ily a une colonne "ordonné"C)-J'ai besoin de déplacer les fichiers journaux de transactions (ldf)
deplusieurs bdd, y d'un disque vers un autre. Quelles sont les méthodes
lesplus fiables et les plu s performantes ?
-Détacher toutes les bases, puis déplacer tous les .LDF vers le nouvel
emplacement, puis réattacher)
self: ca me parait la plus aisée et fiable, soit par requetes, soit par
EMpar sécurité, faire un dbcc checkdb avant.-Modifier par un ALTER DATABASE l'emplacement des fichiers journaux ?
(dans ce cas un simple Modify file suffirait-il ?)
-Les LDF sytèmes (master, msdb, pubs, tempdb) doivent-ils être
déplacésaussi ?
self: pas nécessaire, sauf tempdb, voir en dessous(Avec un exemple concert de commandes si besoins)
D)-Comment régler la TEMPDB ? Existe-t-il une façon d'optimiser cette
foutueTEMPDB ?
self; idéalement, il faut la mettre sur un disque dédié car très
gourmand enI/O
Il est conseillé de lui mettre une taille fixe (assez large), éviter
l'accroissement auto+réduction auto.
la tempdb n'est pas très optimisable, c'est plutôt ce qu'on y insére
qu'ilfaut optimiser (voir indexer)
Et voir si on peut s'en passer:
- les variables tables permettent d'éviter les tables temporaires, c'est
sensé être plus performant. A tester en fonction du besoin.
pour la déplacer, voici un "How-to"
Moving the tempdb database
--------------------------
You can move tempdb files by using the ALTER DATABASE statement.
1. Determine the logical file names for the tempdb database by using
sp_helpfile
as follows:
use tempdb
go
sp_helpfile
go
The logical name for each file is contained in the name column. This
exampleuses
the default file names of tempdev and templog.
2. Use the ALTER DATABASE statement, specifying the logical file name as
follows:
use master
go
Alter database tempdb modify file (name = tempdev, filename >>>>'E:Mssql8Datatempdb.mdf')
go
Alter database tempdb modify file (name = templog, filename >>>>'E:Mssql8Datatemplog.ldf')
go
You should receive the following messages confirming the change:
File 'tempdev' modified in sysaltfiles. Delete old file after
restartingSQL
Server.
File 'templog' modified in sysaltfiles. Delete old file after
restartingSQL
Server.
3. Using sp_helpfile in tempdb will not confirm these changes until you
restart
SQL Server.
4. Stop and restart SQL Server.
5. Delete the old tempdb.mdf and templog.ldf files.