|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Membre actif
![]() Inscription : septembre 2007 Messages : 630 ![]() |
Bonjour,
je fais une requête simple de ce style : Code :
Lorsque je clique sur 'Exécuter', SQL 2008 me renvoie l'erreur : Citation:
Savez-vous pourquoi il ne veut pas ? et surtout comment le faire par requête ? Merci |
|||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() |
ça donne quoi si tu mets BEGIN ... END ?
Code :
|
||
|
00
|
|
|
#3 | |
|
Membre actif
![]() Inscription : septembre 2007 Messages : 630 ![]() |
Merci pour ta proposition.
ça fait pareil ! cela plante Citation:
|
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() |
Au fait il y a un problème de mémoire.
Tu seras obligé d'exécuter tes requêtes en plusieurs étapes. Commence par des lots de 1000 pour voir. |
|
00
|
|
|
#5 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Bonjour,
Quelle est la configuration de votre serveur ? De combien de mémoire disposez vous et quelle est la quantité de mémoire libre ? Je suppose que vous lancez votre requête depuis un SSMS local à votre instance SQL Server ? ++ |
|
00
|
|
|
#6 | ||||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 665 ![]() |
Bonjour,
Pour avoir à générer puis exécuter ce style de scripts assez souvent, j'ai eu le même problème que vous au début. C'est une erreur purement SQL Server Management Studio, car il ne parvient pas à gérer l'ensemble du texte de la requête ou du lot de requêtes. Il vous arrivera la même chose si vous tentez de changer des caractères avec la fonctionnalité de recherche et remplacement sur une suite de requêtes très longue. Ce que j'ai donc fait dans ces cas là c'est créer une table dans laquelle je stocke les instructions à exécuter en les précédant d'un 'GO' + CHAR(13) + CHAR(10) toutes les 1000 lignes : Code :
La colonne n est une colonne de type entier avec la propriété d'auto-incrémentation, que je peuple avant. Et pour générer le fichier de script, j'utilise BCP : Code :
En outre, vous pourriez construire votre batch autrement, pour n'avoir à faire qu'un seul UPDATE, ce qui éviterait d'avoir à lire la table autant de fois que vous avez d'instructions dans votre lot. Pour cela vous pouvez recourir à une table temporaire (#table) si vous n'avez pas un grand nombre de valeurs, ou à une table de base que vous créez et supprimez respectivement au début et à la fin du batch. Dans votre cas : Code :
La seule différence c'est que lorsque vous utilisez une table temporaire, celle-ci est stockée dans TempDB, qui est une base de données utilisée pour bien d'autres choses par le moteur de bases de données. Donc en utilisant une telle table, vous le dérangez un peu. Notez au passage qu'effectuer une jointure sur des chaînes de caractères est assez contre-performant comparé à une jointure sur des entiers @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||||||
|
00
|
|
|
#7 |
|
Membre actif
![]() Inscription : septembre 2007 Messages : 630 ![]() |
Merci à tous pour vos réponses.
Merci elsuket pour votre réponse très évoluée. Je vais essayer ceci !! En fait, je ne suis pas sur un serveur mais sur mon PC équipé de SQL 2008, sur lequel je fais des tests pour un client. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com