Attach и Detach базы в MS SQL
Как присоединить или отсоединить базу данных в MS SQL, другими словами выполнить Attach и Detach.
Если Вы уже какое-то время администрируете MS SQL, то скорее всего слышали такой термин как «Приаттачить» базу или сделать ее «Деттач» / «Аттач»
Конечно, данная тема также подымается и на курсе: Администратор 1С!
Операция действительно используется довольно часто для переноса базы, к примеру, на другой сервер или экземпляр MS SQL.
И действительно, ведь чтоб перенести базу, достаточно ее просто отсоединить (выполнить Detach) и затем на новом сервере СУБД присоединить (выполнив Attach). Быстро и удобно!
Конечно, Attach и Detach базы можно использовать и в ряде других случаев, к примеру, мы хотим просто перенести лог (*ldf файл журнала транзакций) на другой диск, или вместе с базой, и здесь нам также поможет команда «Деттач» и «Аттач». Иногда даже для бэкапа файлов *ldf и *mdf ее используют, конечно, это не есть хорошо, но также верный способ позволяющий скопировать файлы.
К слову если сервер СУБД работает, плюс база «Онлайн» тогда если предварительно не сделать Detach, или не перевести базу в offline (так называемый автономный режим), скопировать лог или базу мы не сможем, получим ошибку что файл используется!

В теории разобрались, приступим к практике.
Давайте представим ситуацию, что место на диске, где у нас лежит лог файл *ldf закончилось, и возникла задача по его переносу на другой диск.
Собственно чем мы сейчас и займемся!
И так все действия мы будем проводить в Management Studio.
Находим интересующую базу, затем правый клик мышкой – «Задачи» – «Отсоединить»

(В eng версии вместо «Отсоединить» будет «Detach»).
Затем в окне отсоединения базы следует поставить птичку «Удалить соединения».

ВАЖНО! Если с базой работают пользователи (к примеру в 1С Предприятии), есть активные соединения, тогда Вы без их завершения не сможете выполнить отсоединение базы!
Как видно на скрине выше, активных соединений нет, но птичку тем не менее поставить нужно, вдруг в момент отсоединения кто-то вздумает запустить 1С Предприятие.
Конечно в любом случаи при выполнении «Detach» базы, пользователей предварительно нужно уведомить о том что база будет недоступна кокой-то промежуток времени (Если с ней работают).
Ставить птичку возле “Обновить статистику” не рекомендую, иначе могут возникнуть на этом этапе различные ошибки, такие как перевод базы в “single user”, бывает что даже зависает Management Studio (.

После успешного отсоединения базы она исчезает из списка “Обозревателя объектов” (Но не из диска, там все файлы будут на месте и mdf и ldf) как на рисунке ниже.

Вот мы и смогли выполнить первую часть работы, отсоединили базу, сделали ее «Detach».
Теперь мы уже можем скопировать наш лог файл на другой диск (Рис. ниже):

И приступаем ко второму шагу по присоединению базы или как его еще называют “Приаттачим” базу используя все тот же Managmant Studio.
На “базах” правый клик мышкой и выбираем “Присоединить” / Attach.

Затем в окне “Присоединения базы” клик по кнопке “Добавить”

Сперва укажем расположение файла mdf (база). У меня это диск E:\DATA\BUHG1C.mdf

После того как мы кликнем по кнопке “ОК” увидим в окне ниже что MS SQL предполагает, что расположение файла лога соответствует расположению базы mdf, но конечно, лога по указанному месту уже нет, мы его переместили на другой диск, и теперь его следует указать вручную!

Укажем новое расположение лога кликнув по кнопке “…”


Убедившись что новое расположение лога указанно верно, можно кликнуть по кнопке “ОК”.

ВНИМАНИЕ! Если получили ошибку (рис. ниже)

Тогда скорее всего Вы пытаетесь выполнить данную операцию под пользователем (рутом) “SA”.
Все что нужно сделать, так это выполнить данную операцию от Администратора Windows (Если установили смешанный режим проверки подлинности, еще на этапе установки самого MS SQL).

Просто выбираем “Проверка подлинности Windows” при старте Managmant Studio.
И повторим действия с присоединением базы.
В случаи успеха, база вновь появится в списке баз обозревателя объектов! (Как на рисунке ниже).

Если Вы хотите больше узнать о технической стороне 1С, тогда регистрируйтесь на первый бесплатный модуль курса: Администратор 1С >>>
Удалить уже несуществующую базу MS SQL
У меня правда SSMS с ошибкой не валится, но и эффекта от этих решений нет.
Отслеживать
задан 21 апр 2018 в 9:52
28.6k 19 19 золотых знаков 59 59 серебряных знаков 139 139 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Помогло как ни странно вот такое решение:
SELECT 'EXEC sp_detach_db ''' + name + '''' FROM sys.databases ;
Этот скрипт готовит строки для детача ВСЕХ баз данных (в т.ч. системных и тех, что реально есть), поэтому нужно аккуратно выбрать только те базы, которые нужны.
И это реально работает и базы пропадают в списке баз.
Отслеживать
ответ дан 21 апр 2018 в 9:52
28.6k 19 19 золотых знаков 59 59 серебряных знаков 139 139 бронзовых знаков
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Восстановление базы данных MySQL
Рассмотрим несколько вариантов восстановления БД, в зависимости от того, насколько повреждены файлы БД зависит успешность того или иного метода. Все описанные способы были лично мной проверены на практике и все случаи восстановления, за исключением одного, были успешны. Используйте данное руководство на свой страх и риск, за совершенные вами действия ответственность несете вы сами.
Итак, во-первых останавливаем службу SQL Server и копируем файлы базы данных (.mdf и .ldf) в другую папку, чтобы можно было восстановить их в случае неудачи.
Если у вас есть свежий актуальный бэкап, то дальше можете не читать, а просто восстановите БД из него, тем самым сэкономите драгоценное время, далее я приведу алгоритмы восстановления для разных версий SQL Server. Надеюсь вам это поможет, как в свое время помогло и мне.
Для всех версий SQL Server подойдет следующий вариант: делаем Detach database(отсоединить базу данных), удаляем журнал транзакций(файл с расширением ldf) и делаем Attach database(присоединить базу данных). В мастере выбираем наш mdf файл и жмем ОК.
Если mdf файл не поврежден, то он успешно присоединится и мы увидим нашу базу в диспетчере объектов целую и невредимую.
Радуемся успешному восстановлению. (Этот вариант сработает только если mdf файл не поврежден, поэтому срабатывает не всегда). Если не получилось, то создаем новую базу данных с таким же именем, останавливаем сервер. Подменяем файл mdf файлом от нашей базы, стартуем службу SQL Server и открываем Query analyzer(SQL 2000) или Management studio(SQL 2005/2008) в зависимости от нашей версии сервера.
USE master GO sp_configure 'allow updates', 1 reconfigure WITH override GO
Если у вас SQL 2000, то далее пишем:
UPDATE sysdatabases SET STATUS= 32768 WHERE name = 'db_name' GO
Если SQL 2005 или 2008, то пишем:
ALTER DATABASE db_name SET EMERGENCY, SINGLE_USER GO
где вместо db_name пишем имя своей БД
Жмем F5. После этого наша БД должна быть видна в статусе EMERGENCY. Отлично, приступаем к восстановлению.
Все что написали стираем, чтобы не смущало, и пишем.
DBCC REBUILD_LOG('db_name', 'Полный путь к новому файлу ldf') GO
Жмем F5, если все нормально, сервер скажет: Warning: The log for database ‘db_name’ has been rebuilt.
Стираем и пишем:
USE master GO sp_dboption 'db_name', 'single user', 'true' GO USE db_name GO DBCC CHECKDB('db_name', REPAIR_REBUILD) GO
если DBCC не хочет выполняться, то вместо REPAIR_REBUILD нужно подставить REPAIR_ALLOW_DATA_LOSS
Жмем F5, ждем некоторое время. Сервер вернет кучу сообщений. Если там будут содержаться ошибки, то лучше еще раз выполнить DBCC CHECKDB с параметром REPAIR_REBUILD, пока все ошибки не будут устранены.
Для SQL 2005/2008 действия несколько иные:
DBCC CHECKDB('db_name', REPAIR_ALLOW_DATA_LOSS) GO
Тут без вариантов. В SQL 2005 и выше нет инструкции REBUILD_LOG, вместо этого выполняется CHECKDB с параметром REPAIR_ALLOW_DATA_LOSS.
После того как сервер закончит выполнять запрос и вернет результат, меняем REPAIR_ALLOW_DATA_LOSS наREPAIR_REBUILD и выполняем запрос еще раз, это должно убрать оставшиеся ошибки в бд.
После всего этого наша база становится в нормальное состояние и уже доступна для работы с ней, но только в однопользовательском режиме, поэтому завершаем наш процесс возвращением бд в многопользовательский режим.
USE master GO sp_dboption 'db_name', 'single user', 'false' GO
Для SQL 2005/2008:
ALTER DATABASE db_name SET ONLINE, MULTI_USER GO
Все. База онлайн и готова к работе. Радуемся и не забываем делать бэкапы.
Совпадений по запросу » «
Замена одних файлов базы данных StateProperty на другие

Шаг 1. Вызвать программу SQL Server Management Studio
Открыть меню «Пуск». Выбрать «Все программы» найти и открыть папку с названием «Microsoft SQL Server 2005». Выбрать пункт «SQL Server Management
Studio» и щелкнуть над ней левой кнопкой мыши


Рис. 1. Форма авторизации программы «SQL Server Management Studio»
На экране возникнет форма авторизации (смотри выше). Проверьте что в поле «Server name» указано имя компьютера, на котором сервер АИС «РЕГОСС».
В поле «Authentication» выберите из списка значение «SQL Server Authentication».
Замечание.
Если Вы уверены, что являетесь администратором СУБД, то можете выбрать «Windows Authentication». В этом случае вам не понадобится заполнять поля «User name» и «Password». Для вызова программы вам достаточно нажать кнопку «Connect».
Конец замечания.
В поле «User name» введите значение «sa».
В поле «Password» введите значение ваш пароль.
Шаг 2. Найти StateProperty в списке баз данных под управлением СУБД

Рис. 2. Основное окно программы «SQL Server Management Studio»
Открывшееся окно разделено программы «SQL Server Management Studio»разделено по вертикали на две части: панель навигации (левая часть) и панель данных (правая часть).
В окне левой части верхняя строчка содержит название компьютера, на котором установлен SQL server, версия этой MS SQL server и имя пользователя, с которым вы вошли в программу. Если слева от этой строчки стоит знак «+», то щелкните над ним левой кнопкой мышки, так чтобы знак сменился на «-», а под этой записью появился список подчинённых узелков.
Выделите первый сверху узелок с названием «Databases». Это список баз данных сервера. Если слева от этой строчки стоит знак «+», то щелкните над ним левой кнопкой мышки, так чтобы знак сменился на «-», а под этой записью появился список подчинённых узелков.
Выделите узелок с названием «StateProperty». Это список баз данных сервера. Если слева от этой строчки стоит знак «+», то щелкните над ним левой кнопкой мышки, так чтобы знак сменился на «-», а под этой записью появился список подчинённых узелков.
Шаг 3. Открыть окно отключения базы данных StateProperty
от сервера

Рис. 3. Меню вызова функции отключения базы данных «StateProperty»
Над выделенным узелком с названием «StateProperty» щелкните правой кнопкой мышки. Возникнет всплывающее меню.
В меню выберите пункт «tasks» (задачи). Откроется подменю.
В подменю выберите пункт «detach» (отключить)..
Шаг 4. Отключить базу данных StateProperty от сервера

Рис. 4. Окно отключения базы данных «StateProperty»
В открытой форме отключения проверьте, чтобы в таблице баз данных, подготовленных к отключению была только одна строка, в первой колонке этой строки было название базы данных «StateProperty», а также чтобы галочки в этой строке описания базы данных «StateProperty» были такими же как на рисунке выше.
Если значения в таблице неправильные, то нажмите кнопку «Cancel». Повторите шали 2 и 3 заново.
Если значения в таблице правильные, то нажмите кнопку «OK». Начнет
выполняться функция отключения базы данных «StateProperty».
По окончании отключения в списке баз данных панели навигации название базы данных «StateProperty» должно исчезнуть, как показано на рисунке ниже.

Рис. 5. «StateProperty»
исключена из списка баз данных сервера
Шаг 5. Заменить неактуальные версии файлов базы данных «StateProperty» на актуальные

Рис. 6. Место стандартного расположения файлов «StateProperty» на жестком диске.
Цель этого шага средствами операционной системы заменить неактуальные версии файлов базы данных «StateProperty» на актуальные.
Откройте проводник. Найдите в нем диск «C:». Среди папок диска найдите папку «Program files». Откройте ее.
Найдите папку «Microsoft SQL Server». Откройте ее.
Найдите папку «MSSQL.1». Откройте ее.
Найдите папку «MSSQL». Откройте ее.
Найдите папку «Data». Откройте ее.
По умолчанию именно в этой папке (C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data) расположены файлы присоединенных к MS
SQL Server баз данных.
База данных «StateProperty» в двух файлах:
- Файл основных данных StateProperty.mdf (иногда он называется StateProperty_Data.mdf);
- Файл журнала StateProperty.ldf (иногда он называется StateProperty_Log.mdf);
Выполните копирование актуальных версий файлов базы данных в эту папку, заменив им существующие, но не актуальные.
Замечание 1. Иногда файлы StateProperty_Data и StateProperty_Log имеют
названия, но не имеют расширения. SQL server будет работать и с ними, вы
при этом будете испытывыть некоторые неудобства. Поэтому лучше задать этим
файлам расширения. Но это можно сделать только в режиме восстановления базы
данных, который описан ниже.
Замечание 2. Если у Вас файлы базы расположены в другой папке или даже другом жестком диске, то Вам следует заменить их именно там.
Конец замечаний.
Шаг 6. Открыть окно подключения базы данных StateProperty к серверу

Рис. 7. Меню вызова функции подключения базы данных «StateProperty»
Вернитесь в среду программы «SQL Server Management Studio».
В панели навигации выделите узелок с названием «Databases». Это список баз данных сервера. Щелкните над ним правой кнопкой мышки. Возникнет контекстное меню.
В меню выберите пункт «Attach» (Подключить). Откроется окно подключения.
Шаг 7. Подключить базу данных StateProperty к серверу

Рис. 8. Выбор подключаемой базы данных «StateProperty»
В открытой форме подключения нажмите кнопку «Add» (добавить базу данных), расположенной под верхней таблице правой части окна. Откроется диалоговое окно выбора файла подключаемой базы данных.
В открывшемся окне выберите папку, в которой располагаются актуальные версии файлов базы данных «StateProperty», а затем выберите файл основных данных StateProperty.mdf (иногда он называется StateProperty_Data.mdf). Нажмите кнопку «OK».
Замечание1. Иногда файлы StateProperty_Data и StateProperty_Log имеют
названия, но не имеют расширения. В этом случае, для того чтобы выбрать нужный
файл следует в поле «Files of type» выбрать значение «All Files(*)». А затем выбрать файл StateProperty_Data.

Конец замечания.

Рис. 9. Окно подключения базы данных «StateProperty»
В верхней таблице появятся сведения о выбранном вами файле с основными данными. В нижней таблице появится список всех файлов, которые MS SQL server будет ассоциировать с базой данных «StateProperty».
Нажмите кнопку «OK», тем самым, запустите процесс подключения базы данных «StateProperty» к серверу.
Шаг 8. Проверить подключилась ли база данных StateProperty к серверу
В результате шагов 6-7 в имя «StateProperty» должно появиться в списке баз данных, как это показано на Рис. 2 и Рис. 3.
Не если этого н произошло сразу попробуйте выполнить функцию обновить список.

Рис. 10. Обновление списка базы данных «StateProperty»
Для этого, в панели навигации выделите узелок с названием «Databases». Это список баз данных сервера. Щелкните над ним правой кнопкой мышки. Возникнет контекстное меню.
В меню выберите пункт «Refresh» (Обновить). Список обновится.
Если имя «StateProperty» так и не появилось в списке баз данных, значит что то на предыдущих шагах было сделано неправильно. И все шаги по подключению
базы данных к серверу необходимо повторить.
ШШаг 9. Проверить наличие актуальных данных в подключенной базе данных StateProperty
Запустите модуль АИС «РЕГОСС Имущество» и проверьте видны ли последние введенные или исправленные вами данные.
Запустите модуль АИС «РЕГОСС Аренда» и проверьте видны ли последние введенные или исправленные вами данные.
Если все данные в порядке, то операция по замене одних файлов базы данных
StateProprty на другие выполнена успешно.
