我使用以下查询将备份文件名作为当前时间戳和用户选择的路径(存储在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部分有一些错误,请指出我错在哪里。
答案 0 :(得分: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,则它位于服务器上而不是运行备份的计算机上。