База данных уже существует. Выберите другое имя, используя CreateDatabase () - PullRequest
5 голосов
/ 15 октября 2011

У меня возникла проблема, и я кое-что узнал одновременно ...

Я создал DBML из существующей базы данных сервера.

Из DBML я хотел создать локальную базу данных (файл .mdf). Я создал базу данных using DataContext.CreateDatabase("C:\xxxx.mdf").

Затем я решил удалить его (ВРУЧНУЮ, что явно плохо), потому что, когда я пытаюсь воссоздать базу данных с тем же именем (даже если файлы удалены), я получаю сообщение об ошибке База данных уже существует. Выберите другое имя, используя CreateDatabase ()

Я попытался просмотреть реестр, не повезло ... Я попытался найти файл по всему жесткому диску ... не повезло.

После поиска в Google я обнаружил, что вы удаляете базу данных, созданную с помощью CreateDatabase() с помощью DeleteDatabase() .... Затем вы можете заново создать базу данных.

Что ж, проблема в том, что теперь я все еще не могу воссоздать старую базу данных, потому что система считает, что имя уже существует.

Есть ли способ избавиться от напоминаний старого файла базы данных, который "не существует"

Ответы [ 3 ]

7 голосов
/ 15 октября 2011

Вам нужно открыть master базу данных через server explorer в Visual Studio (Добавить новое соединение + Выбрать master базу данных), затем добавить New query, ввести Drop Database xxxx и выполнить его. Вы также можете использовать Sql Server Management Studio.

3 голосов
/ 25 августа 2014

Решение (через здесь ) заключается в использовании SSEUtil для отсоединения существующей базы данных:

try
{
    // open a connection to the database for test
}
catch (SystemException ex) // Change exception type based on your underlying data provider
{
    if (ex.Message.ToLower().Contains("already exists. choose a different database name"))
    {
        var match = Regex.Match(ex.Message, "database '(.*)' already exists.", 
           RegexOptions.IgnoreCase);

        if (match.Success)
        {
            String dbFileName = match.Groups[1].Value;
            Process p = new Process();
            p.StartInfo.UseShellExecute = true;
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.StartInfo.FileName = String.Format("{0}/Tools/SSEUtil.exe", 
              Environment.CurrentDirectory);
            p.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
            p.StartInfo.Arguments = String.Format("-d \"{0}\"", dbFileName);

            p.Start();
        }
    }
}
0 голосов
/ 26 октября 2017

У меня тоже была такая же проблема.Ранее я удалил (вырезал) базу данных в mysqlserver2012 и скопировал ее в папку своего приложения.После того, как я сделал свое приложение, я получил эту ошибку и решил ее, удалив часть Initial Catalog моей строки подключения.

Ваша последняя строка подключения должна выглядеть примерно так:

Data Source=<your server name>;AttachDbFileName=database path\databaseName.mdf;Integrated Security=True" + ";User Instance=True" + ";Context Connection=False;

...