база данных не найдена после публикации

Я делаю один проект с базой данных sql, и он работает без ошибок в Visual Studio 2012, но после его публикации и установки, когда я делаю резервную копию, он показывает ошибку ниже

"База данных "C:\Users\LU\AppData\Local\Apps\2.0\D9HBHD8T.Y1H\5B2JMG1T.N8W\game..tion_60f48512c0fd7b6a_0001.0000_7a5b2d8ced8c74c0\gamedata.mdf" не существует. Убедитесь, что имя введено правильно. BACKUP DATABASE аварийно завершает работу."

Вот моя процедура

CREATE proc dbackup
@databaseName sysname,
@path nvarchar(400)
as
backup database @databaseName to disk = @path with init
return

Вот мой резервный код:

private void button1_Click(object sender, EventArgs e)
{
  DataBase db=new DataBase();
  try
  {
    db.connect();
    SqlCommand oCommand = new SqlCommand(@"dbackup",db.sqlcon);
    oCommand.CommandType = CommandType.StoredProcedure;
    oCommand.Parameters.AddWithValue("@databaseName", Application.StartupPath + "\\gamedata.mdf");
    oCommand.Parameters.AddWithValue("@path", textBox1.Text);
    oCommand.ExecuteNonQuery();
    MessageBox.Show("Backup Created Sucessfully");
  }
  catch (Exception ex)
  {
    MessageBox.Show("Error Occurd :" + ex.Message);
  }
  finally
  {
    db.disconnect();
  }
  this.Close();
}

person saman    schedule 20.09.2014    source источник
comment
Ваша dbackup процедура находится в базе данных 'fees_data'?   -  person Vojtěch Dohnal    schedule 20.09.2014
comment
Аналогичный вопрос stackoverflow.com/questions/12588165/. Даже имеет такое же имя базы данных...   -  person Vojtěch Dohnal    schedule 20.09.2014
comment
пример fee_data имя моей базы данных - gamedata.mdf   -  person saman    schedule 20.09.2014
comment
Покажите строку подключения. Какая версия SQL Server используется при разработке и производстве?   -  person Vojtěch Dohnal    schedule 20.09.2014
comment
Почему вы не публикуете точный текст вашего исключения вместо какого-то образца? Исключением будет что-то вроде Database 'c:\...\gamedata.mdf' does not ...   -  person Vojtěch Dohnal    schedule 20.09.2014
comment
я использую визуальную студию для создания базы данных   -  person saman    schedule 20.09.2014
comment
я первый раз на сайте и не знаю как правильно спросить   -  person saman    schedule 20.09.2014
comment
Просто вместо примера введите именно тот текст, который появляется в MessageBox после Error Occurd : - точный текст ex.Message.   -  person Vojtěch Dohnal    schedule 20.09.2014
comment
хорошо, теперь, если вы знаете, ответьте на него, и я вижу ссылку, я не могу ее использовать   -  person saman    schedule 20.09.2014


Ответы (1)


Не используйте Application.StartupPath для хранения базы данных, если вы развертываете приложение с помощью ClickOnce.

Похоже, вы используете версию SQL Server LocalDB. Там вы правильно используете полное имя вашего файла в качестве параметра для команды backup database.

Но имя папки установки ClickOnce запутано, поэтому оно не будет работать в операторе SQL.

Вы должны скопировать файл .mdf из папки установки в другую локальную папку при первом запуске приложения после установки и использовать эту папку для своих данных.

person Vojtěch Dohnal    schedule 20.09.2014