ogiyavuz
ogiyavuz

Reputation: 35

SQL Server backup with C#

I have a console app for backup my SQL Server database.

I used this code:

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();
    }
}

When I start the app, I always get the same error:

System.Data.SqlClient.SqlException (0x80131904): The parameterized query '(@databaseName nvarchar(4000),@backupFilePath nvarchar(5))BACKUP' expects the parameter '@databaseName', which was not supplied.

How can I fix this?

Upvotes: 2

Views: 94

Answers (1)

Alex Bright
Alex Bright

Reputation: 21

The database name in BACKUP DATABASE is SYS Name, and cannot be a string variable, you can build the backupCommand to be:

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

Upvotes: 2

Related Questions