У меня проблема. Я пытаюсь создать резервную копию базы данных локальной базы данных.Идентификатор, начинающийся с ... слишком длинный. Максимальная длина составляет 128
Когда я запускаю программу в VS, все в порядке, потому что путь к базе данных составляет менее 128 символов. Однако, когда я публикую и устанавливаю приложение, длина пути превышает 128 символов, и я получаю эту ошибку.
В интернете я нашел два решения:
- Чтобы использовать апостроф
- Установка:
SET QUOTED_IDENTIFIER OFF
&SET ANSI_NULLS ON
, но в зависимости от того комбинация я стараюсь, я не могу получить это право.
Может ли кто-нибудь сказать мне, как все исправить?
Мой код:
internal void CreateDbBackup(string DbBackupPath)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand GetDataFile = new SqlCommand();
GetDataFile.Connection = con;
GetDataFile.CommandText = "select physical_name from sys.database_files where type = 0";
con.Open();
string YourDataFile = (string)GetDataFile.ExecuteScalar();
con.Close();
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = string.Format(@"BACKUP DATABASE [" + YourDataFile + "] TO DISK = N'{0}' WITH INIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT", DbBackupPath);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
Можете ли вы сократить путь до 128 символов или меньше? Казалось бы, это самое простое решение. – Tim
измените ваш 'cmd.CommandText' = на следующий ' cmd.CommandText = string.Format (@ "BACKUP DATABASE [{1}] TO DISK = N '{0}' С INIT, NOUNLOAD, NOSKIP, STATS = 10 , NOFORMAT ", DbBackupPath, YourDataFile);' научитесь правильно использовать string.Formatting {} 'и выберите более короткий путь к файлу или обновите проект, чтобы использовать .net' 4.6.x' – MethodMan
Я изменил текст команды и обновил проект до .NET 4.6.1. но все еще получаю эту ошибку. Я не знаю, как сократить путь, потому что, когда я публикую и запускаю его для установки, он не предлагает мне выбрать путь установки:/ любое другое сообщение с базой данных Я использую среду VS dataset (добавьте запрос к Table адаптер), и все это работает, я даже пытаюсь сделать хранимые процедуры делать резервную копию, а не называть ее, но я думаю, что сделал неправильные синтаксисы: –