使用C#进行SQL Server备份

yeotifhr  于 2022-12-10  发布在  C#
关注(0)|答案(1)|浏览(255)

我有一个控制台应用程序备份我的SQL Server数据库。
我使用了以下代码:

static void CreateBackup(string connectionString, string databaseName, string backupFilePath)
{
    backupFilePath = backupFilePath + "\\" + databaseName + ".bak";
    backupFilePath = @"" + backupFilePath;

    var backupCommand = "BACKUP DATABASE @databaseName TO DISK = @backupFilePath";

    using (var conn = new SqlConnection(connectionString))
    using (var cmd = new SqlCommand(backupCommand, conn))
    {
        conn.Open();

        cmd.Parameters.AddWithValue("@databaseName", databaseName);
        cmd.Parameters.AddWithValue("@backupFilePath", backupFilePath);

        cmd.ExecuteNonQuery();
    }
}

当我启动应用程序时,总是出现相同的错误:
异常(0x 80131904):参数化查询“(@databaseName nvarchar(4000),@backupFilePath nvarchar(5))BACKUP”需要参数“@ databaseName,”但未提供该参数.
我该如何解决这个问题?

4ngedf3f

4ngedf3f1#

BACKUP DATABASE中的数据库名称是SYS Name,不能是字符串变量,您可以将backupCommand构建为:

var backupCommand = "DECLARE @cmd varchar(max) = 'BACKUP DATABASE ' + @databaseName + ' TO  DISK = ''' + @backupFilePath + ''' '
                     EXEC (@cmd)"

相关问题