+7 (495) 229-0436   shopadmin@itshop.ru 119334, г. Москва, ул. Бардина, д. 4, корп. 3
 
 
Вход
 
 
Каталог
 
 
Подписка на новости
Новости ITShop
Windows 7 и Office: Новости и советы
Обучение и сертификация Microsoft
Вопросы и ответы по MSSQLServer
Delphi - проблемы и решения
Adobe Photoshop: алхимия дизайна
 
Ваш отзыв
Оцените качество магазина ITShop.ru на Яндекс.Маркете. Если вам нравится наш магазин - скажите об этом Google!
 
 
Способы оплаты
 
Курс расчета
 
 1 у.е. = 94.09 руб.
 
 Цены показывать:
 
 
 
 
  
Новости, статьи, акции
 

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

05.04.2012 17:06
Денни Черри

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

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

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

Вторая разрешенная проблема - конфликты сортировки между таблицами в автономной БД и временными таблицами. 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.

 

Рис. 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 Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Cont.mdf',
  SIZE = 4096KB, FILEGROWTH= 1024KB)
LOGON
(NAME = N'Cont_log',FILENAME =
  N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Cont_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), а также укажите схему по умолчанию и принадлежность к нужным ролям в базе данных.

Рис. 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 и задайте имя пользователя, не указывая имя входа.

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

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

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

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

 

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

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

 

Ссылки по теме

  
Помощь
Задать вопрос
 программы
 обучение
 экзамены
 компьютеры
Бесплатный звонок
ICQ-консультанты
Skype-консультанты

Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 
Бестселлеры
Курсы обучения "Atlassian JIRA - система управления проектами и задачами на предприятии"
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2019. Все языки. Электронный ключ
Курс "Oracle. Программирование на SQL и PL/SQL"
Курс "Основы TOGAF® 9"
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Курс "Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации"
 

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям.

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.



 

О нас

 
Главная
Каталог
Новинки
Акции
Вакансии
 

Помощь

 
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 

Способы оплаты

 

Проекты Interface Ltd.

 
Interface.ru   ITShop.ru   Interface.ru/training   Olap.ru   ITnews.ru  
 

119334, г. Москва, ул. Бардина, д. 4, корп. 3
+7 (495) 229-0436   shopadmin@itshop.ru
Проверить аттестат
© ООО "Interface Ltd."
Продаем программное обеспечение с 1990 года