2011-06-17 142 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