Перенос базы данных с помощью автономных баз данных

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics

Используйте пользователей автономной базы данных для проверки подлинности SQL Server и База данных SQL Azure подключений на уровне базы данных. Содержащаяся база данных — это база данных, изолированная от других баз данных и от экземпляра SQL Server или База данных SQL (и master базы данных), в которую размещается база данных.

SQL Server поддерживает использование пользователей автономной базы данных для проверки подлинности Windows и SQL Server. При использовании База данных SQL объедините пользователей автономной базы данных с правилами брандмауэра уровня базы данных.

В этой статье рассматриваются преимущества использования автономной модели базы данных по сравнению с традиционными правилами брандмауэра для входа и пользователя и Windows или сервера. Конкретные сценарии, управляемость или бизнес-логика приложений могут по-прежнему требовать использования традиционных правил брандмауэра для входа или пользователя и уровня сервера.

Традиционная модель входа и пользователя

В традиционной модели подключения пользователи Или члены групп Windows подключаются к ядро СУБД, предоставляя учетные данные пользователя или группы, прошедшие проверку подлинности Windows. Или пользователи могут предоставлять имя и пароль и подключаться с помощью проверки подлинности SQL Server. В обоих случаях у базы данных master должно быть имя, которое соответствует учетным данным подключения.

ядро СУБД После подтверждения проверка подлинности Windows учетных данных или проверки подлинности учетных данных проверки подлинности SQL Server подключение обычно пытается подключиться к пользовательской базе данных. Чтобы подключиться к пользовательской базе данных, имя входа должно быть сопоставлено (т. е. связанному с) пользователем базы данных в пользовательской базе данных. Строка подключения также может указывать подключение к определенной базе данных, которая является необязательной в SQL Server, но требуется в База данных SQL.

Важным принципом является то, что имя входа (в master базе данных) и пользователь (в пользовательской базе данных) должны существовать и быть связаны друг с другом. Подключение к пользовательской базе данных зависит от имени входа в master базу данных. Эта зависимость ограничивает возможность перемещения базы данных на другой экземпляр SQL Server или сервер База данных SQL Azure.

Если подключение к master базе данных недоступно (например, отработка отказа выполняется), общее время подключения увеличится или подключение может истекать. Недоступное подключение может снизить масштабируемость подключения.

Модель пользователя автономной базы данных

В модели пользователя автономной базы данных имя входа в master базу данных отсутствует. Вместо этого процесс проверки подлинности выполняется в пользовательской базе данных. Пользователь базы данных в пользовательской базе данных не имеет связанного имени входа в master базу данных.

Модель пользователя автономной базы данных поддерживает как проверка подлинности Windows, так и проверку подлинности SQL Server. Его можно использовать как в SQL Server, так и в База данных SQL.

Чтобы подключиться как пользователя автономной базы данных, строка подключения всегда должен содержать параметр для пользовательской базы данных. Ядро СУБД использует этот параметр, чтобы узнать, какая база данных отвечает за управление процессом проверки подлинности.

Действие пользователя автономной базы данных ограничено проверкой подлинности базы данных. Учетная запись пользователя базы данных должна быть независимо создана в каждой базе данных, которую требует пользователь. Чтобы изменить базы данных, База данных SQL пользователям необходимо создать новое подключение. Пользователи автономной базы данных в SQL Server могут изменять базы данных, если идентичный пользователь присутствует в другой базе данных.

В Azure База данных SQL и Azure Synapse Analytics поддерживают удостоверения из идентификатора Microsoft Entra (ранее Azure Active Directory) как пользователей автономной базы данных. База данных SQL поддерживает пользователей автономной базы данных, использующих проверку подлинности SQL Server, но Azure Synapse Analytics не поддерживает. Дополнительные сведения см. в разделе "Подключение к База данных SQL с помощью проверки подлинности Microsoft Entra".

При использовании проверки подлинности Microsoft Entra пользователи могут подключаться из SQL Server Management Studio с помощью универсальной проверки подлинности Microsoft Entra. Администраторы могут настроить универсальную проверку подлинности, чтобы требовать многофакторную проверку подлинности, которая проверяет удостоверение с помощью телефонного звонка, текстового сообщения, смарт-карты с ПИН-кодом или уведомления мобильного приложения. Дополнительные сведения см. в разделе "Использование многофакторной проверки подлинности Microsoft Entra".

Для База данных SQL и Azure Synapse Analytics имя базы данных всегда требуется в строка подключения. Поэтому вам не нужно изменять строка подключения при переключении с традиционной модели на пользовательскую модель автономной базы данных. Для подключений SQL Server имя базы данных необходимо добавить в строка подключения, если она еще не присутствует.

Внимание

При использовании традиционной модели роли уровня сервера и разрешения на уровне сервера могут ограничить доступ ко всем базам данных. При использовании автономной модели базы данных владельцы баз данных и пользователи базы данных, имеющие разрешение ALTER ANY USER, могут предоставить доступ к базе данных. Это разрешение сокращает доступ к именам входа сервера с высоким уровнем привилегий и расширяет управление доступом для включения пользователей базы данных с высоким уровнем привилегий.

Брандмауэры

SQL Server

Для SQL Server правила брандмауэра Windows применяются ко всем подключениям и имеют одинаковые последствия для входа (традиционные подключения модели) и пользователей автономной базы данных. Дополнительные сведения о брандмауэре Windows см. в разделе "Настройка брандмауэра Windows для ядро СУБД доступа".

брандмауэры База данных SQL

База данных SQL разрешает отдельные правила брандмауэра для подключений на уровне сервера (имена входа) и для подключений на уровне базы данных (пользователей автономной базы данных). Когда База данных SQL подключается к пользовательской базе данных, сначала проверяет правила брандмауэра базы данных. Если нет правила, разрешающего доступ к базе данных, База данных SQL проверяет правила брандмауэра на уровне сервера. Проверка правил брандмауэра на уровне сервера требует доступа к базе данных сервера master База данных SQL.

Правила брандмауэра уровня базы данных, в сочетании с пользователями автономной базы данных, могут устранить необходимость доступа к master базе данных сервера во время подключения. В результате улучшена масштабируемость подключения.

Дополнительные сведения о правилах брандмауэра База данных SQL см. в следующих разделах:

Различия синтаксиса

Традиционная модель Модель пользователя автономной базы данных
При подключении master к базе данных:

CREATE LOGIN login_name WITH PASSWORD = 'strong_password';

Затем при подключении к пользовательской базе данных:

CREATE USER 'user_name' FOR LOGIN 'login_name';
При подключении к пользовательской базе данных:

CREATE USER user_name WITH PASSWORD = 'strong_password';
Традиционная модель Модель пользователя автономной базы данных
Чтобы изменить пароль в контексте master базы данных, выполните следующие действия.

ALTER LOGIN login_name WITH PASSWORD = 'strong_password';
Чтобы изменить пароль в контексте пользовательской базы данных, выполните следующие действия.

ALTER USER user_name WITH PASSWORD = 'strong_password';

Управляемый экземпляр SQL

Управляемый экземпляр SQL Azure ведет себя как локальный сервер SQL Server в контексте автономных баз данных. Обязательно измените контекст базы данных из базы данных master на пользовательскую базу данных при создании автономного пользователя. Кроме того, при настройке параметра хранения не должно быть активных подключений к пользовательской базе данных. Используйте следующий код в качестве руководства.

Предупреждение

В следующем примере скрипта kill используется инструкция для закрытия всех пользовательских процессов в базе данных. Убедитесь, что вы понимаете последствия этого скрипта и что оно соответствует вашему бизнесу перед его запуском. Кроме того, убедитесь, что другие подключения не активны в базе данных Управляемый экземпляр SQL, так как скрипт будет нарушать другие процессы, выполняемые в базе данных.

USE master;

SELECT * FROM sys.dm_exec_sessions
WHERE database_id  = db_id('Test')

DECLARE @kill_string varchar(8000) = '';
SELECT @kill_string = @kill_string + 'KILL ' + str(session_id) + '; '  
FROM sys.dm_exec_sessions
WHERE database_id  = db_id('Test') and is_user_process = 1;

EXEC(@kill_string);
GO

sp_configure 'contained database authentication', 1;  
GO
 
RECONFIGURE;  
GO 

SELECT * FROM sys.dm_exec_sessions
WHERE database_id  = db_id('Test')

ALTER DATABASE Test
SET containment=partial

USE Test;  
GO 

CREATE USER Carlo  
WITH PASSWORD='Enterpwdhere*'  

SELECT containment_desc FROM sys.databases
WHERE name='Test'

Замечания

  • Пользователи автономной базы данных должны быть включены для каждого экземпляра SQL Server. Дополнительные сведения см. в разделе "Проверка подлинности автономной базы данных" (параметр конфигурации сервера).
  • Пользователи и имена входа автономной базы данных с не перекрывающимися именами могут сосуществовать в приложениях.
  • Предположим, что имя входа в master базе данных имеет имя 1. При создании пользователя автономной базы данных с именем 1 при указании имени базы данных в строка подключения контекст пользователя базы данных будет выбран контекст входа для подключения к базе данных. То есть пользователь автономной базы данных имеет приоритет над именами входа с одинаковым именем.
  • В База данных SQL имя пользователя автономной базы данных не может совпадать с именем учетной записи администратора сервера.
  • Учетная запись администратора сервера База данных SQL никогда не может быть пользователем автономной базы данных. Администратор сервера имеет достаточные разрешения для создания пользователей автономной базы данных и управления ими. Администратор сервера может предоставлять разрешения пользователям автономной базы данных для пользовательских баз данных.
  • Так как пользователи автономной базы данных являются субъектами уровня базы данных, необходимо создать пользователей автономной базы данных в каждой базе данных, где они будут использоваться. Удостоверение ограничено базой данных. Удостоверение является независимым (во всех аспектах) от пользователя, имеющего то же имя и тот же пароль в другой базе данных на том же сервере.
  • Используйте ту же силу паролей, которые обычно используются для входа.