Как изменить контекст базы данных в Microsoft SQL Server? Команда USE
Привет, в этой небольшой заметке я расскажу начинающим программистам и администраторам Microsoft SQL Server о достаточно простом действии, о том, как изменяется контекст базы данных в SQL инструкциях, также я покажу, как это можно сделать в графической среде SQL Server Management Studio.
Если Вы обслуживаете или будете обслуживать несколько баз данных на одном экземпляре SQL Server, то, скорей всего, Вам придётся в своих SQL инструкциях менять контекст подключения к базе данных. Лично я Вам рекомендую во всех своих инструкциях (если у Вас несколько баз данных) принудительно указывать контекст базы данных, иными словами, к какой базе данных относится та или иная SQL инструкция.
В Microsoft SQL Server это делается с помощью команды USE.
Команда USE в T-SQL
USE – команда, с помощью которой можно переключать контекст базы данных в SQL инструкциях. В качестве параметра данной команде необходимо просто передать название базы данных, в контексте которой Вам необходимо выполнить SQL инструкцию.
Следует отметить, что для того чтобы использовать команду USE, у Вас должны быть соответствующие права, а именно: разрешение CONNECT на целевую базу данных, т.е. Вы имеете право подключаться к этой базе данных.
Когда Вы подключаетесь к SQL серверу, Ваш контекст настроен на базу данных по умолчанию, если Вы или администратор Вам не указал такую базу данных для имени входа, то по умолчанию Вы будете подключаться к базе master.
Пример использования команды USE
В качестве примера давайте напишем простую инструкцию, в которой мы подключимся к базе данных TestDB, выполним тестовый запрос (вызовем функцию DB_NAME), а затем сменим контекст базы данных на другую, в нашем примере это будет база master.
Меняем контекст базы данных с помощью Management Studio
Посмотреть, к какой базе данных Вы подключены в данный момент, а также переключить контекст на другую базу данных, Вы можете в среде SQL Server Management Studio.
Данный функционал расположен на панели редактора SQL запросов.
Как сменить контекст подключения к базе данных, мы с Вами рассмотрели, однако мне хотелось бы еще отметить то, что Microsoft SQL Server позволяет в SQL инструкциях обращаться к объектам, которые расположены в разных базах данных на одном экземпляре SQL сервера. Иными словами, не меняя контекст подключения, мы, например, можем запросить данные из таблицы, которая расположена в другой базе данных, вызвать хранимую процедуру или функцию.
Это делается с помощью указания полного четырехсоставного имени объекта, только имя сервера можно не указывать.
Например, следующий запрос выполнится успешно, и мы получим данные из таблицы TestTable, хотя, как Вы понимаете, таблицы TestTable в базе данных master нет (именно на ней будет контекст выполнения).
Заметка! Начинающим рекомендую посмотреть мои видеокурсы по T-SQL, с помощью которых Вы «с нуля» научитесь работать с SQL и программировать на T-SQL.
База данных 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.
Параметры базы данных
При работе с отдельными базами данных и эластичными пулами Базы данных SQL Azure пользователь не может управлять этими параметрами базы данных.
| Параметр базы данных | Значение по умолчанию | Можно ли изменить |
|---|---|---|
| ALLOW_SNAPSHOT_ISOLATION | ON | нет |
| ANSI_NULL_DEFAULT | OFF | Да |
| ANSI_NULLS | OFF | Да |
| ANSI_PADDING | OFF | Да |
| ANSI_WARNINGS | OFF | Да |
| ARITHABORT | OFF | Да |
| AUTO_CLOSE | OFF | нет |
| AUTO_CREATE_STATISTICS | ON | Да |
| AUTO_SHRINK | OFF | нет |
| AUTO_UPDATE_STATISTICS | ON | Да |
| AUTO_UPDATE_STATISTICS_ASYNC | OFF | Да |
| CHANGE_TRACKING | OFF | нет |
| CONCAT_NULL_YIELDS_NULL | OFF | Да |
| CURSOR_CLOSE_ON_COMMIT | OFF | Да |
| CURSOR_DEFAULT | GLOBAL | Да |
| Параметры доступности базы данных | ONLINE |
Нет
Описание этих параметров баз данных см. в разделе ALTER DATABASE (Transact-SQL).
Ограничения
База данных master не поддерживает следующие операции:
Рекомендации
При работе с базой данных master учитывайте следующие рекомендации:
всегда имейте в наличии актуальную резервную копию базы данных master ;
после выполнения следующих операций как можно быстрее создавайте резервную копию базы данных master :
не устанавливайте в базе данных master параметр TRUSTWORTHY в значение ON.
Что делать, если база данных master становится непригодна к использованию
Если база данных master непригодна к использованию, ее можно вернуть в нормальное состояние следующими способами.
Восстановить базу данных master на основе актуальной резервной копии.
Если экземпляр сервера удалось запустить, базу данных master можно восстановить из полной резервной копии. Дополнительные сведения см. в разделе Восстановление базы данных master (Transact-SQL).
Перестроить базу данных master с нуля.
Если серьезное повреждение базы данных master не позволяет запустить экземпляр SQL Server, базу данных master нужно перестроить. Дополнительные сведения см. в разделе Перестроение системных баз данных.
При перестроении базы данных master все системные базы данных также перестраиваются.
USE (Transact-SQL)
Changes the database context to the specified database or database snapshot in SQL Server.

Syntax
To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.
Arguments
database_name
Is the name of the database or database snapshot to which the user context is switched. Database and database snapshot names must comply with the rules for identifiers.
In Azure SQL Database, the database parameter can only refer to the current database. If a database other than the current database is provided, the USE statement does not switch between databases, and error code 40508 is returned. To change databases, you must directly connect to the database. The USE statement is marked as not applicable to SQL Database at the top of this page, because even though you can have the USE statement in a batch, it doesn’t do anything.
Remarks
When a SQL Server login connects to SQL Server, the login is automatically connected to its default database and acquires the security context of a database user. If no database user has been created for the SQL Server login, the login connects as guest. If the database user does not have CONNECT permission on the database, the USE statement will fail. If no default database has been assigned to the login, its default database will be set to master.
USE is executed at both compile and execution time and takes effect immediately. Therefore, statements that appear in a batch after the USE statement are executed in the specified database.
Permissions
Requires CONNECT permission on the target database.
Examples
The following example changes the database context to the AdventureWorks2012 database.
master Database
The master database records all the system-level information for a SQL Server system. This includes instance-wide metadata such as logon accounts, endpoints, linked servers, and system configuration settings. In SQL Server, system objects are no longer stored in the master database; instead, they are stored in the Resource database. Also, master is the database that records the existence of all other databases and the location of those database files and records the initialization information for SQL Server. Therefore, SQL Server cannot start if the master database is unavailable.
For Azure SQL Database single databases and elastic pools, only master database and tempdb database apply. For more information, see What is an Azure SQL Database server. For a discussion of tempdb in the context of Azure SQL Database, see tempdb database in Azure SQL Database. For Azure SQL Managed Instance, all system databases apply. For more information on Managed Instances in Azure SQL Database, see What is a Managed Instance
Physical Properties of master
The following table lists the initial configuration values of the master data and log files for SQL Server and Azure SQL Managed Instance. The sizes of these files may vary slightly for different editions of SQL Server.
| File | Logical name | Physical name | File growth |
|---|---|---|---|
| Primary data | master | master.mdf | Autogrow by 10 percent until the disk is full. |
| Log | mastlog | mastlog.ldf | Autogrow by 10 percent to a maximum of 2 terabytes. |
For information about how to move the master data and log files, see Move System Databases.
For Azure SQL Database server, the user has no control over the size of the master database.
Database Options
The following table lists the default value for each database option in the master database for SQL Server and Azure SQL Managed Instance and whether the option can be modified. To view the current settings for these options, use the sys.databases catalog view.
For Azure SQL Database single databases and elastic pools, the user has no control over these database options.
| Database option | Default value | Can be modified |
|---|---|---|
| ALLOW_SNAPSHOT_ISOLATION | ON | No |
| ANSI_NULL_DEFAULT | OFF | Yes |
| ANSI_NULLS | OFF | Yes |
| ANSI_PADDING | OFF | Yes |
| ANSI_WARNINGS | OFF | Yes |
| ARITHABORT | OFF | Yes |
| AUTO_CLOSE | OFF | No |
| AUTO_CREATE_STATISTICS | ON | Yes |
| AUTO_SHRINK | OFF | No |
| AUTO_UPDATE_STATISTICS | ON | Yes |
| AUTO_UPDATE_STATISTICS_ASYNC | OFF | Yes |
| CHANGE_TRACKING | OFF | No |
| CONCAT_NULL_YIELDS_NULL | OFF | Yes |
| CURSOR_CLOSE_ON_COMMIT | OFF | Yes |
| CURSOR_DEFAULT | GLOBAL | Yes |
| Database Availability Options | ONLINE |
No
For a description of these database options, see ALTER DATABASE (Transact-SQL).
Restrictions
The following operations cannot be performed on the master database:
Recommendations
When you work with the master database, consider the following recommendations:
Always have a current backup of the master database available.
Back up the master database as soon as possible after the following operations:
Do not create user objects in master. If you do, master must be backed up more frequently.
Do not set the TRUSTWORTHY option to ON for the master database.
What to Do If master Becomes Unusable
If master becomes unusable, you can return the database to a usable state in either of the following ways:
Restore master from a current database backup.
If you can start the server instance, you should be able to restore master from a full database backup. For more information, see Restore the master Database (Transact-SQL).
Rebuild master completely.
If severe damage to master prevents you from starting SQL Server, you must rebuild master. For more information, see Rebuild System Databases.
Rebuilding master rebuilds all of the system databases.
Установка однопользовательского режима базы данных
В этой статье описывается, как установить однопользовательский режим для определенной пользователем базы данных в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Однопользовательский режим указывает, что одновременный доступ к базе данных получает только один пользователь. Это в основном используется для операций обслуживания.
Ограничения
Если в процессе установки однопользовательского режима к базе данных подключены другие пользователи, то их подключения к базе данных будут закрыты без предупреждения.
База данных остается в однопользовательском режиме, даже если пользователь, который установил этот параметр, отключился. В этот момент к базе данных могут подключаться и другие пользователи, но одновременно может быть подключен только один.
Предварительные требования
Permissions
Необходимо разрешение ALTER на базу данных.
Использование среды SQL Server Management Studio
Чтобы установить однопользовательский режим для базы данных, выполните следующие действия:
В обозревателе объектов подключитесь к экземпляру компонента Компонент SQL Server Database Engineи разверните его.
Щелкните правой кнопкой мыши базу данных, которую нужно изменить, и выберите пункт Свойства.
В диалоговом окне Свойства базы данных выберите страницу Параметры.
Для параметра Ограничение доступа выберите Один.
С помощью этой процедуры можно также установить режим одновременного или ограниченного доступа к базе данных. Дополнительные сведения о параметрах ограниченного доступа см. в разделе Свойства базы данных (страница «Параметры»).
Использование Transact-SQL
Чтобы установить однопользовательский режим для базы данных, выполните следующие действия:
Установите соединение с компонентом Компонент Database Engine.
На стандартной панели выберите пункт Создать запрос.


