Ошибка создания базы данных: невозможно создать файл - PullRequest
6 голосов
/ 18 мая 2011

У меня есть установщик, который в процессе установки создает базу данных SQL Server 2000 (и выше).

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

Если файл существует в расположении по умолчанию, я получаю следующую ошибку:

Не удается создать файл 'C: \ Program Files \ Microsoft SQL Server ... \ DATA \ mydatabase.mdf', посколькуон уже существует.

Я могу решить эту проблему, сначала проверив путь по умолчанию и удалив файлы.Но как я могу это сделать, когда пользователь устанавливает на удаленный сервер SQL?

Я ищу что-то вроде:

CREATE DATABASE mydatabase WITH OVERWRITE

Редактировать:

Удалить базу данныхне решениеБаза данных не существует, но файлы все еще там.

Ответы [ 3 ]

1 голос
/ 19 января 2018

Сейчас 2018 год, и жизнь и Windows изменились.

Итак, нам нужна новая процедура, чтобы избавиться от файла MDF

  • База данных не находится в Microsoft SQL Server.
  • попытка удалить его программным способом не удалит файлы, потому что база данных не существует
  • Невозможно удалить MDF в проводнике, потому что «он используется SQL Server»
  • Я пытался использовать Management Studio для восстановления базы данных, а затем удалить ее, как предложил TajMahals, увы, она не сработала.

Правильный способ удаления файла - остановить сервер SQL, удалить файл с помощью проводника, а затем снова запустить сервер.

См. Запуск, остановка, пауза, возобновление, перезапуск служб SQL Server

  • С помощью проводника перейдите в папку ** C: \ Windows \ SysWOW64 **
  • Найдите файл SQLServerManager13.msc Число 13 может отличаться в зависимости от вашей версии
  • Запустить программу
  • В левой части окна выберите Sql Server Services
  • В правой части окна вы увидите SQL Server и, возможно, Агент и браузер
  • Остановите их в следующем порядке: браузер, агент, сервер. Сделайте это, щелкнув правой кнопкой мыши по элементу, который вы хотите остановить, и выберите стоп
  • Используя проводник, удалите файл MDF, вызывающий проблему
  • Запуск услуг в обратном порядке

И все готово

1 голос
/ 18 мая 2011

Вы можете проверить, существует ли база данных с sys.sysdatabase, как это

IF EXISTS (SELECT * FROM sys.sysdatabases WHERE NAME = 'mydatabase')
BEGIN 
   DROP DATABASE mydatabase
END

Если вы хотите проверить, подключен ли уже определенный файл к серверу sql, вы также можете использовать системное представление sys.sysdatabases, поскольку он содержит атрибут «filename», содержащий mdf-файл для всех баз данных.

Если файл прикреплен к другой базе данных, думаю, просто перезаписать его звучит рискованно, и вам, вероятно, лучше удалить базу данных, которая прикреплена к файлу.Удаление базы данных приведет к удалению основного файла.

Если файл существует, но не подключен к серверу sql, вы, вероятно, должны удалить его один раз и убедиться, что капли удаляют файлы при последующих удалениях.

0 голосов
/ 24 сентября 2015

Я использую SQL Management Studio

Исследование объекта> выбор экземпляра> Щелкните правой кнопкой мыши на папке базы данных> Восстановить базу данных

В разделе «Источник» выберите «Устройство», затем выберите файл .mdf, который хотите удалить (выберите расширение как. * Весь файл)

Итак, вы получили новую базу данных со старым файлом MDF.

Затем верните его правильно, файл .mdf исчезнет.

веселит.

...