SQL Server 2012: Иногда часть лучше целого

Отчасти автономные базы данных решают суровые задачи с консолидацией и миграцией, которые есть в базах данных SQL Server, начиная с версии 4.2. К счастью, это будет одна из многих новых функций в SQL Server 2012.

1-ая неувязка, решаемая такими базами данных, — перемещение базы данных с 1-го экземпляра SQL Server на другой без необходимости указывать имена входа SQL Server, применяемые в этой БД. Также решается неувязка сотворения нужных имен входа на мотивированном экземпляре.

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

2-ая разрешенная неувязка — конфликты сортировки меж таблицами в автономной БД и временными таблицами. SQL Server автоматом делает временные таблицы в контексте автономной базы данных при ее сортировке. Это позволяет располагать на одном экземпляре SQL Server базы данных с различными сортировками без необходимости поменять аннотацию CREATE TABLE для определения порядка сортировки либо использовать COLLATE в синтаксисе аннотации JOIN.

В отличие от неких новых функций, которые требуют переводить базы данных на новый уровень сопоставимости, отчасти автономные БД поддерживаются прямо до версии SQL Server 2005. С другой стороны, функциональность автономных баз данных пока не совершенно готова. Она будет завершена кое-где меж выпуском SQL Server 2012 CTP3 и готовой версией сначала либо середине 2012 года.

Создание отчасти автономной БД

До того как приступить к превращению обыкновенной базы данных в отчасти автономную, необходимо поменять характеристики опции сервера при помощи системной хранимой процедуры sp_configure. Используйте ее для конфигурации значения параметра «contained database authentication» с 0 на 1, а потом примените аннотацию RECONFIGURE для активации нового параметра:

EXEC sp_configure ‘contained database authentication’, 1
RECONFIGURE
GO

После включения автономной проверки подлинности базу данных можно перевести в разряд отчасти автономных. Для этого можно использовать SQL Server Management Studio, как показано на рис. 1, использовать аннотацию ALTER DATABASE либо сделать новейшую базу данных как автономную:

ALTER DATABASE:
USE [master]
GO
ALTER DATABASE [Cont]
SET CONTAINMENT=PARTIAL
GO
CREATE DATABASE:
CREATE DATABASE [Cont1]
CONTAINMENT=PARTIAL
GO

Чтоб сделать новейшую отчасти автономную БД либо перевоплотить существующую базу данных в автономную, подключитесь к SQL Server в средстве просмотра объектов. Изберите существующую базу данных либо щелкните правой кнопкой, чтоб сделать новейшую БД. Откройте странички параметров (новейшей либо имеющейся БД). На вкладке Options в поле со перечнем Containment type заместо None изберите Partial.

SQL Server 2012: Время от времени часть лучше целого

Рис. 1. В окне параметров базы данных можно поменять тип автономности

Чтоб перевоплотить обыденную БД в автономную, используйте T/SQL и аннотацию ALTER DATABASE. Чтоб удачно поменять тип базы данных, у аннотации ALTER DATABASE должна быть возможность получить монопольную блокировку всей базы данных. Потому нужно запланировать маленький перерыв в работе этой БД.

Опасайтесь ошибок сортировки во временных таблицах.

Новые отчасти автономные БД позволяют поддерживать разные характеристики сортировки в одном экземпляре SQL Server. Не надо волноваться о дилеммах с сортировкой при соединении временных таблиц. Проверить это просто: нужно взять экземпляр SQL Server и сделать отчасти автономную БД с другими параметрами сортировки. После чего сделайте физическую таблицу и временную таблицу в отчасти автономной БД. Загрузите данные в эти таблицы и попробуйте выполнить их соединение.

В листинге 1 показан запрос, создающий базу данных с параметром сортировки Albanian_100_CI_AI_KS_WS, тогда как в экземпляре употребляется параметр SQL_Latin1_General_CP1_CI_AS. В новейшей БД создается таблица по имени dbo.Employee, в которую загружаются три строчки. Также создается временная таблица по имени #emp, в которую вставляется одна строчка. При соединении таблиц в конце запроса ворачивается одна строчка. Если б база данных не была сконфигурирована как отчасти автономная, появилась бы ошибка.

Листинг. 1. Создание и внедрение автономной базы данных

use master
GO
CREATE DATABASE [Cont]
CONTAINMENT = PARTIAL
ONPRIMARY
(NAME = N’Cont’, FILENAME =
N’C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATACont.mdf’,
SIZE = 4096KB, FILEGROWTH= 1024KB)
LOGON
(NAME = N’Cont_log’,FILENAME =
N’C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATACont_log.ldf’,
SIZE = 1024KB, FILEGROWTH = 10%)
COLLATE Albanian_100_CI_AI_KS_WS
GO
Use Cont
GO
Create table Employee
(EmployeeId INTPRIMARYKEY,
LastName nvarchar(100),
FirstName nvarchar(100))
GO
Insert into Employee
(EmployeeId,LastName,FirstName)
values
(1,’last1′,’first1′), (2,’last2′,’first2′),(3,’last3′,’first3′)
GO
Create table #emp
(LastName nvarchar(100))
GO
Insert into #emp
(LastName)
values
(‘last1′)
GO
select*
from Employee
join #emp on Employee.LastName = #emp.LastName

Автономные юзеры

Автономные юзеры похожи на классические имена входа SQL Server кроме того, что у их нет имен входа, соответственных юзерам автономной БД. Автономные юзеры создаются средствами консоли SQL Server Management Studio либо с применением аннотации CREATE USER T/SQL.

Чтоб сделать это при помощи SQL Server Management Studio, в обозревателе объектов (object explorer) подключитесь к экземпляру, на котором размещена автономная база данных. Перейдите к папке Databases/{Your Contained Database}/Security/Users. Щелкните правой кнопкой папку Users и в контекстном меню изберите New User. В перечне User type изберите SQL user with password. Заполните поля для имени юзера и пароля (рис. 2), также укажите схему по дефлоту и принадлежность к необходимым ролям в базе данных.

SQL Server 2012: Время от времени часть лучше целого

Рис. 2. Создание автономного юзера SQL Server в консоли SQL Server Management Studio

После сотворения автономного юзера можно просмотреть представление каталога sys.database_principals в автономной БД. Набор записей, возвращенный в итоге запроса представления каталога, будет содержать новый столбец по имени authentication_type, в каком будет обозначено значение 2. Будет также столбец authentication_type_desc со значением DATABASE у юзеров, являющихся автономными.

Сделайте юзера автономной БД Create средствами T/SQL с внедрением аннотации CREATE USER. SQL Server выяснит, что создается автономный юзер, а тот, которому соответствует имя входа на уроне экземпляра, по аннотации WITH PASSWORD:

CREATE USER MyContainedUser WITHPASSWORD = ‘MyContainedUserPassword’
GO

Можно создавать не только лишь автономных юзеров SQL Server, да и автономные имена входа Windows. Измените значение в поле со перечнем User Type (рис. 3) на Windows user и задайте имя юзера, не указывая имя входа.

SQL Server 2012: Время от времени часть лучше целого

Рис. 3. Создание автономного имени входа Windows в консоли SQL Server Management Studio

Создавать автономных юзеров Windows можно при помощи аннотации CREATE USER языка T/SQL:

CREATE USER [CAPT-MALtest] WITH DEFAULT_SCHEMA = [dbo]
GO

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

В SQL Server Management Studio для этого нужно щелкнуть кнопку Options понизу окна подключения. На вкладке Connection Properties имя автономной базы данных можно указать в поле со перечнем Connect to database (рис. 4).

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

SQL Server 2012: Время от времени часть лучше целого

Рис. 4. Вкладка параметров подключения в окне подключения консоли SQL Server Management Studio

Как видно на примере обрисованных 2-ух видов функциональности, консолидация баз данных на экземпляре SQL Server 2012 очень упростится. Для проверки сопоставимости имеющихся приложений, взаимодействующих с СУБД, с функциональностью автономных баз данных будет нужно мало времени и тестирования. Но после включения поддержки автономных баз данных миграция и консолидация существенно упростится, что и требовалось получить.

Аналогичный товар: Комментирование на данный момент запрещено, но Вы можете оставить ссылку на Ваш сайт.

Комментарии закрыты.