我使用以下查询获取备份,备份文件名为当前时间戳,路径为用户选择的路径(存储在labelbackupPath中)。
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部分有一些错误,请指出我哪里错了。
发布于 2011-06-17 12:56:58
CONCAT不是有效的TSQL语句。
您只需在字符串后面附加@路径名+ @file_name
我个人会把这个备份信息放到一个存储的proc中,然后用传入的参数来执行它。
如果在代码中使用SQL SMO也是最好的选择,例如http://social.msdn.microsoft.com/forums/en-US/sqlexpress/thread/95750bdf-fcb1-45bf-9247-d7c0e1b9c8d2/
注意:执行的用户还需要备份权限,并且路径需要对服务器可用,即,如果您备份到C:\temp,这是在服务器上,而不是在运行备份的机器上。
https://stackoverflow.com/questions/6381392
复制相似问题