2011-06-17 101 views
0

我正在使用以下查询以备份文件名作为用户选择的当前时间戳和路径(存储在labelbackupPath中)进行备份。Tsql数据库备份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 + @"\")); 

这里的executeQuery的签名:

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

它只是执行指定的查询将指定的参数给SqlCommand。如果showMsgBox为true,它会要求确认并给出查询执行的结果。

在TSql部分有一些错误,请提出我错在哪里。

回答

2

CONCAT不是有效的TSQL语句。

你只追加与@pathname字符串+ @file_name

我会亲自把这个备份信息到一个存储过程,只是在传递的参数执行此操作。

另外最好如果代码做使用SQL SMO 如http://social.msdn.microsoft.com/forums/en-US/sqlexpress/thread/95750bdf-fcb1-45bf-9247-d7c0e1b9c8d2/

注:用户在执行还需要备份权限和路径必须是可用的,即服务器,如果你备份到C:\ TEMP这是服务器没有运行备份的机器上。

+0

谢谢。我正在使用SMO。 – 2011-06-17 05:52:31