Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Outils
Outils Forum d'entraide sur les outils gravitant autour de MS-SQL Server, tels que bcp, TDS, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/08/2004, 17h48   #1
Membre Expert

 
Avatar de Webman
 
Inscription : janvier 2004
Messages : 1 232
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 1 232
Points : 1 283
Points : 1 283
Par défaut Procédure stockée : BCP pour sauvegarde d'une base...

Bonjour,

J'utilise une procedure stockée pour sauvegarder les tables d'une base de données. Ma base contenant pas mal de table j'ai une petite question. Suis je obligé d'appeller ma procédure stockée autant de fois que j'ai de table à sauvegarder ou je poeux faire autrement ?

Voilà ma procédure stockée :

Code :
1
2
3
4
5
6
7
CREATE PROCEDURE Sauvegarde 
(@Fichier varchar(255)) 
AS 
DECLARE @BCPCommand varchar(255) 
SET @BCPCommand = 'BCP mabase..matable out C:\sauvegarde\' + @Fichier +  '/T /c' 
EXECUTE master..xp_cmdshell @BCPCommand
GO
N'ayant pas trop de connaissance sur les procédures stockées et sur l'utilitaire BCP, je me pose les questions suivantes: puis-je exécuter plusieurs commandes BCP de suite dans ma procédure (car d'aprés ce que j'ai compris on ne peut que copier qu'une seule table par commade BCP executée) ? Dois-je appeller a chaque fois ma procédure en executant une commade BCP à chaque fois ?

Désolé je suis pas trés clair En clair, quelle est selon vous la meilleure technique (en un minimum de temps utilisant le moins de ressource possible je veux dire) pour sauvegarder plus d'une dizaine de tables ?

Je précise que j'utilise cette procédure stockée dans une application ASP.Net.

Si vous voulez des précisions n'hésitez pas à me demander car je suis pas clair la dessus (je vous rassure mon code est plus clair que mes explications! enfin j'espère )

Webman
Webman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2004, 08h17   #2
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
Vous pouvez très bien créer un curseur sur sysobjects et l'intégrer à votre procédure stockée pour passer toutes les tables d'un coup.

Code :
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
CREATE PROCEDURE Sauvegarde 
(@chemin varchar(225)) 
AS 
BEGIN
DECLARE cur CURSOR 
AS SELECT name FROM sysobjects 
WHERE type='U'
FOR READ ONLY
 
DECLARE @BCPCommand varchar(255), @TBL  varchar(30)
 
OPEN cur
 
FETCH cur INTO @TBL
 
while @@STATUS <> 2
   BEGIN
   SET @BCPCommand = 'BCP '+db_name()+'..'+@TBL
    +' out '+@PATH + @TBL +  '.bcp /T /c' 
   EXECUTE master..xp_cmdshell @BCPCommand 
   FETCH cur INTO @TBL
   END
CLOSE cur
DEALLOCATE CURSOR cur
END
GO
Mais ne serait-il pas plus simple, si ce n'est qu'à des fins de sauvegarde, de passer par une unique commande de BACKUP DATABASE ?
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2004, 14h34   #3
Membre Expert

 
Avatar de Webman
 
Inscription : janvier 2004
Messages : 1 232
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 1 232
Points : 1 283
Points : 1 283
Bonjour,

Merci beaucoup pour cette solution Je vais tester ca au plus vite. En fait mon choix se porte vers BCP car ca me permet de sauvergader les tables que je désire, car il n'est pas impossible que parfois il y ait uniquement quelques tables à sauvegarder et non toute la base. En plus BCP permet d'exporter des données vers d'autres applications facilement. En clair ca me permet d'avoir une sauvegarde modulable pouvant aussi servir de "système d'exportation" de données.


Merci beaucoup de votre aide ,
Webman
Webman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2004, 11h31   #4
Invité de passage
 
Inscription : septembre 2004
Messages : 1
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 1
Points : 1
Points : 1
Bonjour,

Je cherche également à effectuer des sauvegardes.
J'ai copié la procédure stockée que vous proposez mais j'obtiens le message d'erreur suivant :

User access denied. Not a member of NT administrators group.

Je travaille pourtant avec le compte administrateur et ma connexion sur la base est celle du SA.

Auriez-vous une idée?

Merci par avance
sdamaye est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h14.


 
 
 
 
Partenaires

Hébergement Web