Use master sql что это
Перейти к содержимому

Use master sql что это

  • автор:

USE (Transact-SQL)

Изменяет контекст базы данных на указанный моментальный снимок базы данных или базы данных.

Синтаксис

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

database_name
Имя базы данных или моментального снимка базы данных, на который переключается контекст пользователя. Имена баз данных и моментальных снимков базы данных должны соответствовать правилам построения идентификаторов.

В База данных SQL Azure параметр базы данных может ссылаться только на текущую базу данных. Если указана база данных, отличная от текущей, инструкция USE не переключается между базами данных и возвращается код ошибки 40508. Для смены базы данных следует непосредственно подключиться к базе данных. В верхней части этой страницы инструкция USE помечена как неприменимая к базе данных SQL, поскольку даже если инструкция USE входит в состав пакета, она не выполняет никаких действий.

Замечания

При подключении имени входа SQL Server к SQL Server имя входа автоматически подключается к базе данных по умолчанию и получает контекст безопасности пользователя базы данных. Если для входа в SQL Server не создан пользователь базы данных, имя входа подключается как гостевой. Если пользователь базы данных не имеет разрешения CONNECT на базу данных, инструкция USE завершится ошибкой. Если с именем входа не была связана никакая база данных по умолчанию, то для него базой данных по умолчанию будет установлена база данных master.

Инструкция USE выполняется как на стадии компиляции, так и на стадии выполнения и вступает в силу немедленно. Иными словами, инструкции, которые содержатся в пакете после инструкции USE, будут выполнены в контексте указанной базы данных.

Разрешения

Необходимо разрешение CONNECT на целевую базу данных.

Примеры

В следующем примере выполняется смена контекста на базу данных AdventureWorks2022 .

USE AdventureWorks2022; GO 

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’у просто следовало бы сказать «Не найден» вместо сообщения «Будет создан новый пустой файл журнала». Процесс удаления строки файла журнала и присоединения также сработал. Я еще не уверен, что сообщение «Будет создан новый пустой файл журнала» является вводящим в заблуждение багом, и нет ли другого трюка, чтобы это сработало. Сообщите мне, если вы получили другой результат.

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

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’)
go

Alter 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:

База данных 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)
    • Перемещение файлов базы данных

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *