Bonsoir,

je suis en train de reprendre un module de sauvegarde de base de données sql server écrit en VB.NET il y a quelques années pour le traduire en Windev.

Dans l'ancien module, sur clic d'un bouton backup, j'exécutais ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
' NOM DU FICHIER
Dim Sql As String
Dim nomfichier As String = "SAV" & Now.ToString("s", CultureInfo.InvariantCulture).Replace(":", "-")
 
' BACKUP DE LA BD DANS UN FICHIER .BAK
MasterConnection(Conn)
Sql = "BACKUP DATABASE GPAO TO DISK=N'" & depot & nomfichier & ".bak '"
Conn.Execute(Sql)
DeconnectBD(Conn)
Je précise que pour pouvoir faire un backup database il fallait être connecté à la base MASTER qui "chapeaute" les autres bases.

Aujourd'hui sous Windev17, au sein de l'analyse qui me raccorde à la base GPAO (via un premier object Connexion que j'ai appelé Cnx), j'ai créé un deuxième objet connexion sur la base MASTER (que j'ai appelé Master).

J'ai fais le test de connexion (le bouton TESTER de l'assistant), et ça semble bon.

Maintenant j'ai le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
Sql est une chaîne
d est une Date = DateSys
h est une Heure = HeureSys
depot est une chaîne = "\\localhost\backups_gpao\"
nomfichier est une chaîne = "SAV-" + DateVersChaîne(d,"AAAA-MM-JJ")+"-"+HeureVersChaîne(h, "HH-MM-SS")
dh est une chaîne = DateVersChaîne(d,"AAAAMMJJ")+HeureVersChaîne(h,"HHMMSS")
 
// ON ENREGISTRE LA TRACE DE LA SAUVEGARDE DANS LA TABLE bku
Sql = "INSERT INTO bku (bk_nom_fichier, bk_date, bk_commentaire) VALUES ('" + nomfichier + ".bak" + "', '" + dh + "', 'aucun')"
Info(Sql)
SI PAS HExécuteRequêteSQL("Insertion",Cnx,hRequêteDéfaut ,Sql) ALORS
	Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo()+ RC + RC + Sql)
FIN
 
 
// SAUVEGARDE DE LA BD DANS LE .BAK
Sql = "BACKUP DATABASE GPAO TO DISK=N'" + depot + nomfichier + ".bak '"
Info(Sql)
SI PAS HExécuteRequête("Backup", Master, hRequêteSansCorrection, Sql) ALORS
	Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo()+ RC + RC + Sql)
FIN
Evidemment l'insertion en table bku se passe comme il faut.
Pour la génération du .bak j'ai l'erreur suivante :

Erreur d'initialisation de la requête
Erreur dans le code SQL de la requête <Backup>. Initialisation de la requête impossible. Mot DATABASE inattedu

BACKUP DATABASE GPAO TO
DISK N'\\localhost\backups_gpao\SAV-2012-11-13-17-42-58.bak'
Soit ma requête est mal écrite ou mal interprêtée (mais bon actuellement ça fonctionne quand j'exécute mon soft en VB.NET), soit ma connexion Master n'est pas réalisée au bon endroit, soit on ne peut pas faire ça dans un thread (car le code windev est une procédure lancée dans un thread) !!?

Toute aide est la bienvenue.

Merci à vous