База данных master
База данных master записывает все сведения на уровне системы SQL Server. в том числе общие для всего экземпляра метаданные, такие как сведения об учетных записях входа, конечных точках и связанных серверах, а также параметры конфигурации системы. В SQL Server системные объекты больше не хранятся в базе данных master . Вместо этого они хранятся в базе данных ресурсов. Кроме того, главной базой данных является база данных, которая записывает существование всех других баз данных и расположение этих файлов базы данных и записывает сведения об инициализации для SQL Server. Поэтому SQL Server не может запускаться, если база данных master недоступна.
Для отдельных баз данных и эластичных пулов Базы данных SQL Azure используются только базы данных master и tempdb. Дополнительные сведения см. в разделе Что являет собою сервер Базы данных SQL Azure?. Описание базы данных tempdb в контексте Базы данных SQL Azure см. в разделе База данных tempdb в базе данных SQL. Для Управляемого экземпляра SQL Azure применяются все системные базы данных. См. дополнительные сведения об Управляемом экземпляре Базы данных SQL Azure.
Физические свойства базы данных master
Исходные конфигурационные значения файлов данных и файлов журнала базы данных master для SQL Server и Управляемого экземпляра SQL Azure приведены в следующей таблице. Размеры этих файлов могут немного отличаться для разных выпусков SQL Server.
| Файл | Логическое имя | Физическое имя | Увеличение размера файлов |
|---|---|---|---|
| Первичные данные | master | master.mdf | Автоувеличение на 10 % до заполнения диска. |
| Журнал | mastlog | mastlog.ldf | Автоувеличение на 10 % до максимального размера в 2 ТБ. |
Сведения о перемещении файлов данных и журнала базы данных master см. в разделе Перемещение системных баз данных.
При работе с сервером Базы данных SQL Azure пользователь не может управлять размером базы данных master.
Параметры базы данных
Значения по умолчанию для всех параметров базы данных master для SQL Server и Управляемого экземпляра SQL Azure и сведения о том, можно ли их изменять, приведены в следующей таблице. Чтобы просмотреть текущие настройки этих параметров, используйте представление каталога sys.databases .
При работе с отдельными базами данных и эластичными пулами Базы данных SQL Azure пользователь не может управлять этими параметрами базы данных.
| Параметр базы данных | Значение по умолчанию | Можно ли изменить |
|---|---|---|
| ALLOW_SNAPSHOT_ISOLATION | DNS | No |
| ANSI_NULL_DEFAULT | ВЫКЛ. | Да |
| ANSI_NULLS | ВЫКЛ. | Да |
| ANSI_PADDING | ВЫКЛ. | Да |
| ANSI_WARNINGS | ВЫКЛ. | Да |
| ARITHABORT | ВЫКЛ. | Да |
| AUTO_CLOSE | ВЫКЛ. | No |
| AUTO_CREATE_STATISTICS | DNS | Да |
| AUTO_SHRINK | ВЫКЛ. | No |
| AUTO_UPDATE_STATISTICS | DNS | Да |
| AUTO_UPDATE_STATISTICS_ASYNC | ВЫКЛ. | Да |
| CHANGE_TRACKING | ВЫКЛ. | No |
| CONCAT_NULL_YIELDS_NULL | ВЫКЛ. | Да |
| CURSOR_CLOSE_ON_COMMIT | ВЫКЛ. | Да |
| CURSOR_DEFAULT | Глобальные | Да |
| Параметры доступности базы данных | ONLINE |
Описание этих параметров базы данных см. в разделе ALTER DATABASE (Transact-SQL).
Ограничения
База данных master не поддерживает следующие операции:
- добавление файлов или файловых групп;
- Резервное копирование, для базы данных master может быть выполнено только полное резервное копирование.
- Изменение параметров сортировки. Параметрами сортировки по умолчанию являются параметры сортировки сервера.
- Изменение владельца базы данных. Владельцемmaster является sa.
- создание полнотекстового каталога или полнотекстового индекса;
- создание триггеров для системных таблиц базы данных;
- Удаление базы данных.
- Удаление пользователя guest из базы данных.
- Включение системы отслеживания измененных данных.
- Участие в зеркальном отображении базы данных.
- Удаление первичной файловой группы, первичного файла данных или файла журнала.
- Переименование базы данных или первичной файловой группы.
- Перевод базы данных в режим «вне сети» (OFFLINE).
- Перевод базы данных или первичной файловой группы в режим READ_ONLY.
Рекомендации
При работе с базой данных master учитывайте следующие рекомендации:
- всегда имейте в наличии актуальную резервную копию базы данных master ;
- после выполнения следующих операций как можно быстрее создавайте резервную копию базы данных master :
- создание, изменение или удаление базы данных;
- изменение значений параметров конфигурации сервера или базы данных;
- изменение или удаление учетных записей входа;
Что делать, если база данных master становится непригодна к использованию
Если база данных master непригодна к использованию, ее можно вернуть в нормальное состояние следующими способами.
- Восстановить базу данных master на основе актуальной резервной копии. Если экземпляр сервера удалось запустить, базу данных master можно восстановить из полной резервной копии. Дополнительные сведения см. в разделе «Восстановление базы данных master » (Transact-SQL)».
- Перестроить базу данных master с нуля. Если серьезный ущерб главного сервера не позволяет запускать SQL Server, необходимо перестроить главный образец. Дополнительные сведения см. в разделе Перестроение системных баз данных.
Внимание При перестроении базы данных master все системные базы данных также перестраиваются.
См. также
- Перестроение системных баз данных
- Системные базы данных
- sys.databases (Transact-SQL)
- sys.master_files (Transact-SQL)
- Перемещение файлов базы данных
Use master sql что это
Перемещение баз данных SQL Server 7.0 в другое место
По материалам статьи Microsoft: «INF: Moving SQL Server 7.0 Databases to a New Location»
Информация в этой статье относится к Microsoft SQL Server версии 7.0Эта статья описывает последовательность действий для изменения места расположения баз данных и журналов регистрации транзакций, а также системных баз данных для SQL Server 7.0.
Последовательность шагов изменения расположения некоторых системных баз данных SQL Server отличается от пользовательских баз данных. Эти специальные случаи отмечены отдельно.
Все примеры в этой статье предполагают, что SQL Server 7.0 установлен в каталог D:\Mssql7, а все базы данных и журналы расположены в каталоге D:\Mssql7\Data. В предлагаемых примерах базы данных и журналы перемещаются в каталог E:\Sqldata.
Перед началом перемещения, создайте актуальные резервные копии всех баз данных, особенно master, в их текущем расположении.
Для успешной работы Вы должны иметь привилегии системного администратора (sa).
Вы должны знать имена и текущие расположения всех баз данных и журналов.ОБРАТИТЕ ВНИМАНИЕ: Вы можете определить имя и текущее расположение всех файлов, используемых базой данных с помощью хранимой процедуры sp_helpfile:
Вы должны иметь единоличный доступ к перемещаемой базе данных.
Если Вы столкнётесь с проблемами в течение процесса переноса и не сможете подсоединиться к базе данных, которую Вы переместили, или не сможете после этого запустить SQL Server, проверьте файл регистрации ошибок SQL Server и обратитесь к SQL Server 7.0 Books Online для выяснения деталей относительно выявленных ошибок.Перемещение пользовательских баз данных
Следующий пример перемещает базу данных, названную mydb, которая имеет один файл mydb.mdf и один журнал Mydblog.ldf. Если база данных, которую Вы перемещаете, имеет дополнительные файлы данных или журналы, укажите их все через запятую в хранимой процедуре sp_attach_db. При этом процедура Sp_detach_db не изменяется, независимо от того, сколько указанная в ней база данных содержит файлов, потому что этого не предусматривает её синтаксис.
Отсоедините базу данных следующим образом:use master
go
sp_detach_db ‘mydb’
goЗатем, скопируйте данные и журналы из текущего места расположения (D:\Mssql7\Data) в новое расположение (E:\Sqldata).
Снова прикрепите базу данных, задав файлы в новом расположении следующим образом:use master
go
sp_attach_db ‘mydb’,’E:\Sqldata\mydbdata.mdf’,’E:\Sqldata\mydblog.ldf’
goПроверите изменение расположения файлов, используя sp_helpfile:
Значения столбца имени файла должны показать его новое расположение.
Перемещение баз MSDB, Pubs и Northwind
Повторите ту же самую процедуру, как для перемещения пользовательских баз данных. Для MSDB, удостоверитесь, что SQL Server агент в это время не запущен. Иначе, хранимая процедура sp_detach_db вызовет сбои со следующим сообщением:
Server: Msg 3702, Level 16, State 1, Line 0
Cannot drop the database ‘msdb’ because it is currently in use.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.Перемещение базы данных master
Измените путь для базы данных master и её журналов в SQL Server Enterprise Manager.
ОБРАТИТЕ ВНИМАНИЕ: Вы также можете произвольно изменять здесь расположение файла регистрации ошибок.
Щелкните правой кнопкой мыши по SQL Server в Enterprise Manager, и выберите пункт Properties в появившемся меню.
Кликните кнопку Startup Parameters, и Вы увидите следующее:-d — полный путь к файлу базы данных master.
-e — полный путь к файлу регистрации ошибок.
-l — полный путь к файлу журнала базы данных master.Измените эти значения следующим образом:
Удалите текущие пути к файлам master.mdf и Mastlog.ldf
Добавьте новые пути к этим файлам, определяющие их новое расположение:Остановите SQL Server.
Скопируйте файлы master.mdf и Mastlog.ldf в новое месторасположение (E:\Sqldata).
Перезапустите SQL Server.Перемещение базы данных Model
Чтобы переместить базу данных Model, SQL Server должен быть запущен с флагом трассировки 3608 так, чтобы это не вызвало регенерации всех баз данных кроме master.
ОБРАТИТЕ ВНИМАНИЕ: У Вас не будете возможности в это время обращаться к любым пользовательским базам данных. При использовании этого флага трассировки Вы не должны исполнять никаких операций, кроме указанных ниже шагов. Чтобы добавить флаг трассировки 3608, как параметр запуска SQL Server, исполните следующее:
В SQL Server Enterprise Manager щёлкните правой кнопкой мыши по имени сервера и выберите Properties в появившемся меню.
На вкладке General кликните Startup Parameters.
Добавьте новый параметр, как -T3608.
После добавления флага трассировки 3608, выполните следующие шаги:
Остановите и перезапустите SQL Server.
Отсоедините базу данных Model следующим образом:use master
go
sp_detach_db ‘model’
goПереместите файлы Model.mdf и Modellog.ldf из D:\Mssql7\Data в E:\Sqldata.
Снова прикрепите базу данных Model следующим образом:use master
go
sp_attach_db ‘model’,’E:\Sqldata\model.mdf’,’E:\Sqldata\modellog.ldf’
goУдалите флаг трассировки — T3608 из блока параметров запуска в Enterprise Manager.
Остановите и перестартуйте SQL Server.
Вы можете проверить изменение расположения файла, использующих sp_helpfile:Вы можете перемещать файлы tempdb, используя инструкцию ALTER DATABASE.
Определите логические имена файла для базы данных tempdb, используя sp_helpfile следующим образом:Логическое имя для каждого файла содержится в столбце Nаme. Этот пример использует заданные по умолчанию имена файла tempdev и templog.
Используйте инструкцию ALTER DATABASE, определяя логическое имя файла следующим образом:use master
go
Alter database tempdb modify file (name = tempdev, filename = ‘E:\Sqldata\tempdb.mdf’)
goAlter database tempdb modify file (name = templog, filename = ‘E:\Sqldata\templog.ldf’)
goВы должны получить следующие сообщения, подтверждающие изменение:
File ‘tempdev’ modified in sysaltfiles. Delete old file after restarting SQL Server.
File ‘templog’ modified in sysaltfiles. Delete old file after restarting SQL Server.
Использование sp_helpfile для tempdb не будет подтверждать внесённые изменения, пока Вы не перезапустите SQL Server.
Остановите и перезапустите SQL Server.Для получения дополнительной информации, изучите указанные ниже статьи Microsoft Knowledge Base:
SQL-Ex blog

Присоединение базы данных без файла журнала транзакций
Добавил Sergey Moiseenko on Суббота, 25 декабря. 2021
Что если вы перемещаете базу данных на новый сервер, отсоединяя (detach) и снова присоединяя файлы базы данных, и кто-то (конечно, не вы) потерял файл журнала? Что если требуется перевести старую базу данных в режим онлайн, но к вам пришел человек, у которого имеется только mdf файл? Можно все же присоединить базу данных в подобных случаях? Давайте это выясним.
Сейчас у нас имеются файлы mdf и ldf для базы данных ExampleDB.

Чтобы перейти к нашему тесту, давайте отсоединим базу данных в SSMS:
USE [master]
GO
EXEC master.dbo.sp_detach_db @dbname = N'ExampleDB'
GOТеперь мы можем выбрать наш файл ExampleDB_log.ldf в проводнике Windows и удалить его. Останется только mdf.

Давайте вернемся в SSMS, выполним щелчок правой кнопкой на папке Databases в браузере объектов и выберем “Attach…”:

Щелкнем кнопку Add в районе середины окна и выберем наш файл ExampleDB.mdf:

Присоединить здесь
Тут становится интересно. В нижней половине окна мы можем увидеть добавление файла ExampleDB_log.ldf. Можно отрегулировать ширину столбца, чтобы увидеть сообщение:

Звучит просто. Давайте нажмем ОК и посмотрим, сделает ли SQL Server то, что обещает:

Нет. Щелкнем ОК, чтобы вернуться к окну присоединения. Прокрутим вправо ниже “Databases to attach” и щелкнем Message, чтобы увидеть подробную информацию:

Щелкнем еще раз ОК, чтобы вернуться к окну Attach. Давайте заглянем под капот. Чтобы выяснить, что пытается выполнить SQL Server, щелкнем “Script” и выберем Script Action to New Query Window (вывести действие скрипта в новое окно запроса):

Это приведет нас к окну со следующим скриптом, который SQL Server использует для присоединения базы данных. Если выполнить скрипт, то мы получим ошибку того же типа, что и прежде:
USE [master]
GO
CREATE DATABASE [ExampleDB] ON
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\ExampleDB.mdf' ),
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\ExampleDB_log.ldf' )
FOR ATTACH
GO
Msg 5120, Level 16, State 101, Line 3
Невозможно открыть физический файл “C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\ExampleDB_log.ldf”. Ошибка операционной системы 2: “2 (Система не может найти указанный файл.)”.
Msg 1802, Level 16, State 7, Line 3
Операция CREATE DATABASE не удалась. Некоторые файлы с перечисленными именами не были созданы. Проверьте связанные ошибки.SQL Server пытается помочь, добавляя этот файл журнала. Что если мы удалим эту строку, и просто попытаемся создать базу с одним mdf:
USE [master]
GO
CREATE DATABASE [ExampleDB] ON
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\ExampleDB.mdf' )
FOR ATTACH
GOСбой активации файла. Возможно, имя физического файла “C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\ExampleDB_log.ldf” указано неверно.
Был создан новый файл журнала “C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\ExampleDB_log.ldf”.База данных присоединена успешно, и мы снова в деле. Вместо изменения скрипта мы могли также выполнить это с помощью GUI, удалив ldf ниже деталей базы данных и щелкнув ОК:

Вводящее в заблуждение сообщение?
SQL Server’у просто следовало бы сказать «Не найден» вместо сообщения «Будет создан новый пустой файл журнала». Процесс удаления строки файла журнала и присоединения также сработал. Я еще не уверен, что сообщение «Будет создан новый пустой файл журнала» является вводящим в заблуждение багом, и нет ли другого трюка, чтобы это сработало. Сообщите мне, если вы получили другой результат.
Обратные ссылки
Нет обратных ссылок
Комментарии
Показывать комментарии Как список | Древовидной структурой
SQL: Перевод БД Microsoft в Single-user Mode
В некоторых случаях требуется перевод БД SQL сервер в монопольный режим доступа (однопользовательский режим базы данных, Single-user Mode) это требуется в случаях выполнения операций, внесения изменений в БД или операций восстановления из резервной копии.
Так, например, при попытке восстановить рабочую БД, из резервной копии появится сообщение:
Exclusive access could not be obtained because the database is in use.Чтобы исправить данное сообщение об ошибке, рекомендуется закрыть все приложения работающие с данной БД, а также вкладки SQL Management Studio, после этого выполнить команду:
USE [master] GO ALTER DATABASE [AdventureWork] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GOгде, AdventureWork — это имя базы данных.
Это откатит все текущие транзакции и переведет базу данных в режим работы Single-user Mode. После этого, если в этом же окне запустить операцию восстановления из резервной копии, то ошибка: «Exclusive access. » не повторится.Для перевода режима работы БД в нормальный многопользовательский режим работы, необходимо выполнить команду:
USE master; GO ALTER DATABASE AdventureWorks SET MULTI_USER; GO