В этом руководстве вы узнаете об автономных базах данных SQL Server и о том, как создать автономную базу данных с помощью T-SQL.
Введение в базу данных SQL Server
Автономная база данных — это автономная база данных, которая имеет собственные метаданные, настройки базы данных и конфигурации и не зависит от экземпляра SQL Server, на котором она размещена.
Используя автономную базу данных, вы можете перенести ее на другой сервер, не создавая никаких проблем с безопасностью, а также не создавая лишних SQL-логинов.
Чтобы создать пользователя для обычной базы данных, необходимо сначала создать логин, который подключается к главной базе данных:
CREATE LOGIN login_name WITH PASSWORD = 'strong_password';
А затем создайте пользователя, который подключается к базе данных пользователей:
CREATE USER 'user_name' FOR LOGIN 'login_name';
Если вы хотите изменить пароль пользователя, вам необходимо изменить пароль входа:
ALTER LOGIN login_name WITH PASSWORD = 'strong_password';
При перемещении базы данных на другой экземпляр SQL Server необходимо создать то же имя входа из текущего экземпляра SQL Server в новом экземпляре SQL Server и сопоставить пользователя с вновь созданным именем входа.
Однако, если вы используете автономную базу данных, вы можете напрямую создать пользователя, который подключается к базе данных пользователей:
CREATE USER user_name WITH PASSWORD = 'strong_password';
При перемещении базы данных на другой экземпляр SQL Server вам необходимо использовать то же имя пользователя для подключения к базе данных.
Чтобы изменить пароль, вы можете напрямую изменить пароль пользователя следующим образом:
ALTER USER user_name WITH PASSWORD = 'strong_password';
Создание автономной базы данных
Сначала включите функцию сдерживания на уровне экземпляра SQL Server с помощью хранимой процедуры sp_configure:
USE master GO sp_configure 'show advanced options', 1 GO RECONFIGURE GO sp_configure 'CONTAINED DATABASE AUTHENTICATION', 1 GO RECONFIGURE GO sp_configure 'show advanced options', 0 GO RECONFIGURE GO
Во-вторых, создайте автономную базу данных с помощью оператора CREATE DATABASE, установив частичное автономирование:
CREATE DATABASE CRM CONTAINMENT = PARTIAL;
Чтобы проверить, является ли база данных автономной базой данных, можно использовать представление sys.databases. Следующий оператор проверяет, является ли база данных CRM автономной базой данных:
SELECT name, containment FROM sys.databases WHERE name = 'CRM';
Выход:
В-третьих, создайте пользователя, который подключается к базе данных CRM:
USE CRM; CREATE USER bob WITH PASSWORD = 'UixoJN72.';
Чтобы составить список всех пользователей автономной базы данных, используйте представление sys.database_principals:
SELECT name, type_desc, authentication_type_desc FROM sys.database_principals WHERE authentication_type = 2;
Выход:
Подключитесь к содержащейся базе данных с помощью SSMS
Сначала введите имя сервера, пользователя и пароль и нажмите кнопку «Параметры» >>:
Во-вторых, введите базу данных, которую вы хотите подключить, на вкладке свойств подключения и нажмите кнопку «Подключить»:
Если вы успешно подключитесь к базе данных CRM, вы увидите, что пользователь bob может видеть только базу данных CRM:
Преобразование обычной базы данных в автономную базу данных
Сначала создадим инвентарь базы данных с логином cat и пользователем bobcat для демонстрации:
CREATE DATABASE inventory; CREATE LOGIN cat WITH PASSWORD = 'AhudnmX9!'; USE inventory; CREATE USER bobcat FOR LOGIN cat;
Во-вторых, преобразуйте базу данных инвентаря в автономную базу данных с помощью оператора ALTER DATABASE:
ALTER DATABASE inventory SET CONTAINMENT = PARTIAL WITH NO_WAIT;
В-третьих, преобразуйте пользователя базы данных bobcat, который сопоставлен с именем входа в SQL Server cat, в пользователя автономной базы данных с паролем, используя системную хранимую процедуру sp_migrate_user_to_contained :
EXEC sp_migrate_user_to_contained @username = N'bobcat' , @rename = N'keep_name', @disablelogin =N'disable_login';
Этот вызов хранимой процедуры преобразует пользователя базы данных bobcat в пользователя базы данных, находящегося в контейнере. Он сохраняет то же имя пользователя.
Если вы хотите скопировать имя входа для пользователя содержащейся базы данных, вы можете передать N'copy_login_name' параметру @rename.
Аргумент N'disable_login' указывает хранимой процедуре отключить вход bob в базу данных master. Если вы не хотите отключать вход, вы можете использовать аргумент N'do_not_disable_login'.
Краткое содержание
- Автономная база данных — это автономная база данных, которая имеет собственные метаданные, настройки базы данных и конфигурации и не зависит от экземпляра SQL Server.