2011-06-17 4 views
0

J'utilise la requête suivante pour effectuer une sauvegarde avec le nom du fichier de sauvegarde en tant qu'horodatage et chemin actuels sélectionnés par l'utilisateur (stocké dans labelbackupPath).Tsql DB Backup C#

UtilityClass.ExecuteQuery(@"Declare @file_name varchar(500); 
           set @file_name = CURRENT_TIMESTAMP; 
           BACKUP DATABASE VegiManager to DISK CONCAT(@pathname,@file_name);", true, new SqlParameter("@pathname", labelbackupPath.Text + @"\")); 

Voici la signature de ExecuteQuery:

public static int ExecuteQuery(String query, bool showMsgBox, params SqlParameter[] parameters) 

Il ne fait qu'exécuter la requête spécifiée en ajoutant les paramètres spécifiés au SqlCommand. Si showMsgBox est vrai, il demande confirmation et donne le résultat de l'exécution de la requête.

Il y a une erreur dans la partie TSql, veuillez indiquer où je me trompe.

Répondre

2

CONCAT n'est pas une instruction TSQL valide.

Vous voulez simplement ajouter les chaînes avec @pathname + @file_name

Personnellement, je mettre ces informations de sauvegarde dans un proc stocké et il suffit d'exécuter ce avec des paramètres transmis.

également mieux si cela dans le code utiliser SQL SMO par exemple http://social.msdn.microsoft.com/forums/en-US/sqlexpress/thread/95750bdf-fcb1-45bf-9247-d7c0e1b9c8d2/

note: l'utilisateur exécutant nécessiterait également des autorisations de sauvegarde et le chemin doit être disponible au serveur à savoir si vous sauvegardez C: \ temp cela est sur le serveur non la machine exécutant la sauvegarde.

+0

Merci. J'utilise SMO. –