Аутентификация в независимые базы данныхИсточник: technet Lyudmila Fokina
На блоге нашей группы разработчиков я недавно написала несколько заметок, касающихся возможности, представленной в новой версии SQL Server-а - Аутентификации в независимые базы данных или независимой аутентификации. А здесь я попытаюсь перевести на русский… В Microsoft SQL Server "Denali" (CTP1) была представлена новая функциональность - Независимые базы данных ( Contained Db или CDB) . Как подсказывает название, независимые базы данных должны быть самодостаточны, не зависеть от серверных настроек. Независимые базы данных легко перемещать между разными серверами. Будучи присоединенной к новому серверу, такая база данных должна обеспечивать всю функциональность, не требую никаких дополнительных настроек. Одной из ключевых возможностей независимой базы данных является независимость от логинов (которые, как известно, являются серверными объектами и вместе с пользовательской базой данных не переносятся). Таким образом, избавившись от этой зависимости, база данных становится более мобильной. Чтобы реализовать такую возможность было введено понятие Contained User или User with Password . Независимый user - это user непроассоциированный с логином в master-е, который существует в пользовательской базе данных имеет свой пароль и может коннектиться напрямую в базу данных. Для SQL Server users был добавлен новый синтаксис, позволяющий создавать таких пользователей с паролями. Windows users могут быть созданы традиционным образом. -- sysadmin должен явно разрешить использование независимых баз данных на SQL Server-е sp_configure 'show advanced', 1; RECONFIGURE WITH OVERRIDE; go sp_configure 'contained database authentication', 1; RECONFIGURE WITH OVERRIDE; go -- Создание независимой базы данных CREATE DATABASE db_Contained CONTAINMENT = PARTIAL; go USE db_Contained; go -- Создание независимого SQL Server user-а CREATE USER usr_Contained WITH PASSWORD = 'LJDUT9!@$'; go -- Создание Windows user-а CREATE USER [DOMAIN\User_01]; go User, который существует только в независимой базе данных может коннектиться только к этой базе данных, не может поменять базу данных и, практически, не имеет прав вне базы данных, где он был создан. Windows user, созданный в примере выше, может быть contained или not-contained в зависимости от того, существует ли соответствующий логин (DOMAIN\User_01) в master-е. Если такой логин существует, то, созданный выше, user может иметь права вне данной базы данных, может менять базу данных и, в общем, не является contained. Если такой логин не существует, то такой user обладает всеми свойствами contained user-а, описанными выше. Таким образом, Windows user может менять свои свойства, в зависимости от того был ли создан или удален соответствующий логин. Это не должно, тем ни менее, влиять на поведение приложения, т.к. внутри базы данных возможности такого user-а остаются одинаковыми. Структура connection string осталась неизменной. При логине в независимую базу данных необходимо указать имя этой базы данных, имя user-а и его пароль (если это SQL Server user): |