logo
SQL2008_Administration

Задание для самостоятельной работы 8.5 Управление уровнем блокировок Задание:

  1. Откройте новое окно редактора скриптов и перейдите к базе данных AdventureWorks.

  2. Выполните команды

BEGIN TRAN

UPDATE person.address SET City = 'Test'

  1. Засеките время выполнения этой команды (показывается в нижнем правом углу SQL Server Management Studio).

  2. Затем выполните команду

sp_lock @@SPID

и просмотрите блокировки, которые установлены вашим процессом. SQL Server должен использовать только блокировки уровня объекта (TAB).

  1. Выполните команду

Rollback tran

  1. Отключите эскалацию блокировок и еще раз выполните команду

BEGIN TRAN

UPDATE person.address SET City = 'Test'

  1. Засеките время выполнения этой команды, а затем выполните команду

sp_lock @@SPID

Время выполнения запроса должно увеличиться, а хранимая процедура sp_lock должна показать, что используются блокировки уровня страницы и ключа.

  1. Выполните команду

Rollback tran

  1. Отключите возможность применения блокировок уровня страницы для таблицы Person.Address и еще раз выполните команды

BEGIN TRAN

UPDATE person.address SET City = 'Test'

  1. Засеките время выполнения этой команды, а затем выполните команду

sp_lock @@SPID

Хранимая процедура sp_lock должна вернуть только информацию о блокировках уровня записи.

  1. Выполните команду

Rollback tran

  1. Отключите возможность применения блокировок уровня записи для таблицы Person.Address и еще раз выполните команды

BEGIN TRAN

UPDATE person.address SET City = 'Test'

  1. Засеките время выполнения этой команды, а затем выполните команду

sp_lock @@SPID

Хранимая процедура sp_lock должна вернуть только информацию о блокировках уровня таблицы. Такой уровень блокировок теперь выбран изначально, без эскалации блокировок.

  1. Выполните команду

Rollback tran

Решение:

К пункту 6:

Для отключения эскалации блокировок можно выполнить команду

dbcc traceon (1211)

К пункту 9:

Для отключения возможности применения блокировок на уровне страницы можно выполнить команду

ALTER INDEX ALL ON [Person].[Address] SET ( ALLOW_PAGE_LOCKS = OFF )

К пункту 12:

Для отключения возможности применения блокировок на уровне записи можно выполнить команду

ALTER INDEX ALL ON [Person].[Address] SET ( ALLOW_ROW_LOCKS = OFF )

Задание для самостоятельной работы 10.1 Создание пакетов SSIS для переноса данных

Задание:

  1. Создайте средствами Microsoft Access в корневом каталоге диска C: пустую базу данных Person.mdb.

  2. Создайте пакет SSIS, который должен копировать все таблицы из схемы Person базы данных AdventureWorks на вашем сервере SQL Server 2008 со всеми данными в базу данных Person.mdb. Этот пакет должен называться C:\CopyPerson.dtsx. Зашифруйте весь пакет при помощи пароля P@ssw0rd. Убедитесь, что этот пакет работает.

  3. Измените созданный вами пакет таким образом, чтобы при копировании информации в столбце Phone таблицы Person.Contact удалялись все дефисы, пробелы и скобки. Например, адрес вида "1 11 500 555-015" после преобразования должен выглядеть как "111500555015".

  4. Создайте на диске C: файл CopyPerson.bat с командной строкой на запуск пакета CopyPerson.dtsx. Подробный протокол выполнения должен записываться в текстовый файл C:\CopyPerson.log. Еще раз удалите все таблицы из файла Person.mdb и убедитесь, что созданный вами пакетный файл работает в соответствии с заданием.