Sql DB备份C#

时间:2011-06-17 04:37:52

标签: c# .net tsql sql-server-2008 ado.net

我使用以下查询将备份文件名作为当前时间戳和用户选择的路径(存储在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部分有一些错误,请指出我错在哪里。

1 个答案:

答案 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,则它位于服务器上而不是运行备份的计算机上。