Microsoft SQL: работа с недействительными базами данных

350
Kyle Strand

Я создал базу данных Microsoft SQL Server, которая теперь изменила местоположение. (Подробности, вероятно, не важны, но для любопытных я изначально создал их в папке на внешнем диске, сопоставленной с определенной буквой диска, но это сопоставление больше не существует.)

Как я могу исправить запись в списке Базы данных, чтобы она указывала на новое местоположение файла MDF? Я ожидал, что смогу сделать это с помощью SQL Server Management Studio Express, но, похоже, я не могу получить свойства базы данных, отсоединить или даже удалить базу данных без действительного соединения.

Информация о версии: Я думаю, что база данных была создана с использованием SQL Server Express 2005, но у меня также установлены SQL Server 2008 и SQL Server 2012, если это имеет значение. Версия SQL Server Management Studio Express, которую я установил, предназначена для SQL Server 2005, но я думаю, что при необходимости могу установить другую версию. Я использую 64-битную версию Win 7.

Отказ от ответственности: я вообще ничего не знаю о SQL-серверах, тем более о MS SQL Server.

РЕДАКТИРОВАТЬ: неверная запись базы данных в конечном итоге исчезла из студии управления, и я не уверен, почему. Я смог прикрепить его снова, используя правильный путь к файлу, и теперь он работает.

0
См. Http://technet.microsoft.com/en-us/magazine/gg452698.aspx ssnobody 10 лет назад 0
@ssnobody Это не похоже на мой вопрос. Ни одна из команд `ALTER DATABASE` (даже` SET offline`) не работает, когда запись базы данных указывает на несуществующее местоположение файла. Kyle Strand 10 лет назад 0
Работает ли `EXEC master.dbo.sp_detach_db @dbname = N'MyDatabase'` из TSQL? ssnobody 10 лет назад 0
@ssnobody Что такое TSQL? Я использую `sqlcmd`; это достаточно похоже? Kyle Strand 10 лет назад 0
И нет, ваша строка EXEC выдает следующую ошибку: «База данных»' не существует. Укажите правильное имя базы данных. Чтобы увидеть доступные базы данных, используйте sys.databases`. Это происходит, даже если я сначала делаю `USE master SELECT name, физическое имя ...` с первого шага на странице, на которую вы ссылаетесь. Kyle Strand 10 лет назад 0
Является ли имя, возвращаемое `SELECT name, физическое_имя FROM sys.master_files`, таким же, как имя, которое вы вводите? ssnobody 10 лет назад 0
@ssnobody Ну, имя, которое я указал, отсутствует в том, что оно печатает. В нем говорится «Изменил контекст базы данных на« master », за которым следуют новая строка и слово« name », за которыми следует много пробелов (я думаю), за которыми следует« Physical_name », за которыми следуют дополнительные пробелы, затем куча дефисы, один пробел, несколько дефисов и символ новой строки, затем `(затронуто 0 строк)`. Kyle Strand 10 лет назад 0
@ssnobody О, я понимаю, ты имеешь в виду имя, возвращаемое только этой командой. Сожалею. Вывод, который я описал, взят из `USE master SELECT name, физическое имя ...`. Команда `SELECT` сама по себе не перечисляет имя, которое я предоставляю, как одну из строк. Kyle Strand 10 лет назад 0
(Похоже, он показывает только встроенные базы данных `MSSQL11.MSSQLSERVER`.) Kyle Strand 10 лет назад 0
Фактически, используя `SELECT name FROM sys.`где``is 'database',` database_files` или `master_files`, я не вижу имя базы данных, которую я ищу, ни в одном из выходных данных. Нужно ли мне? Kyle Strand 10 лет назад 0
Я бы сказал, да. Можете ли вы попробовать просто прикрепить к вашей перемещенной базе данных и посмотреть, возвращает ли она ошибку? [Присоединить базу данных] (http://msdn.microsoft.com/en-us/library/ms190209.aspx) описывает, как это сделать с помощью SQL Management Studio. ssnobody 10 лет назад 0
@ssnobody .... странно, что-то, что я сделал, должно быть, удалил запись из списка баз данных, которые я видел в SQL Management Studio, потому что его не было, когда я снова открыл студию. Так что я смог просто прикрепить его снова, и теперь он работает. : / Kyle Strand 10 лет назад 0
Я полагаю, что в какой-то момент отряд сработал, но я рад, что он снова заработал. ssnobody 10 лет назад 0

0 ответов на вопрос