Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы АД.docx
Скачиваний:
16
Добавлен:
19.12.2018
Размер:
516.23 Кб
Скачать
  1. Выполнение служебных операций с базами данных: увеличение размера базы данных, уменьшение размера базы данных, перенос файлов баз данных, переименование, удаление базы.

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

Увеличение размера базы данных

Эта операция выполняется очень просто. На графическом экране SQL Server Management Studio для этого достаточно открыть свойства базы данных, перейти на вкладку Files и ввести новый размер для файла базы данных в столбце Initial Size (Исходный размер) (или добавить в список новый файл). Можно также использовать команду Transact-SQL ALTER DATABASE. Например, чтобы увеличить размер файла testdb1 для базы данных testdb до 10 Гбайт, можно использовать следующие команды:

USE master;

GO

ALTER DATABASE testdb MODIFY FILE (NAME = testdb1, SIZE = 10GB);

GO

Здесь testdb1 — это логическое имя файла, которое можно увидеть в столбце Logical Name (Логическое имя) на вкладке Files свойств базы данных.

Уменьшение размера файлов данных также можно произвести двумя способами:

1. На графическом экране SQL Server Management Studio в контекстном меню базы данных выбрать команду Tasks | Shrink (Задачи | Сжать), а затем в открывшемся окне выбрать, что вы хотите уменьшить: все файлы данных в базе данных или только выбранный файл.

2. Из скрипта Transact-SQL это можно сделать при помощи команд DBCC SHRINKDATABASE (для всех файлов базы данных) или DBCC SHRINKFILE (для отдельного файла).

При уменьшении размера файлов баз данных нужно учитывать следующие моменты:

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

- само уменьшение может производиться в четырех режимах:

· по умолчанию — все используемые страницы переносятся в начало файла, и пустое пространство освобождается для использования операционной системой;

· режим NOTRUNCATE — все используемые страницы переносятся в начало файла, но пустое пространство не возвращается операционной системе;

· режим TRUNCATEONLY — страницы внутри файла не переносятся, файл уменьшается только за счет пустого пространства в конце;

· режим EMPTYFILE — файл не уменьшается, но SQL Server 2005 пытается перенести все используемые страницы в нем в другие файлы той же файловой группы. Если это удается, то пустой файл можно будет удалить при помощи команды ALTER DATABASE;

- перед уменьшением может быть полезно получить информацию о том, сколько места можно высвободить в файле данных. Удобнее всего просмотреть эти данные в окне Shrink File (Сжать файл) в SQL Server Management Studio (рис. 4.2), которое открывается при помощи контекстного меню Tasks | Shrink | Files базы данных. Средствами Transact-SQL эту информацию можно получить при помощи команды DBCC SHOWFILESTATS (для файлов журналов транзакций — DBCC SQLPERF(LOGSPACE)).

Рис. 4.2. Диалоговое окно Shrink File

- если база данных, размер которой вы хотите уменьшить, будет в ближайшем будущем опять расти в размере, то лучше не прибегать к уменьшению: это вредно скажется как на внешней фрагментации (в файловой системе), так и на внутренней (с точки зрения организации страниц) фрагментации файлов данных.

Перемещение файлов баз данных SQL Server 2005, ALTER DATABASE MODIFY FILE

Новая возможность SQL Server 2005 — возможность стандартными средствами, не прибегая к разным хитрым способам (например, резервному копированию и восстановлению, отсоединению и присоединению баз данных), переместить файлы базы данных в другое место. Такая необходимость на практике возникает достаточно часто, например, при изменении дисковой конфигурации сервера.

Перенос файлов базы данных производится очень просто:

- переведите базу данных в автономный режим, например:

ALTER DATABASE testdb SET OFFLINE;

- затем средствами операционной системы перенесите файлы баз данных в другое место;

- после этого укажите SQL Server, что файлы базы данных теперь находятся в другом месте:

ALTER DATABASE testdb MODIFY FILE (NAME = testdb, FILENAME = 'D:\testdb1.mdf');

- верните базу данных в обычный режим:

ALTER DATABASE testdb SET ONLINE;

Отметим, что таким способом можно перемещать не только пользовательские, но и системные базы данных (за исключением базы данных resource).

Переименование баз данных SQL Server 2005, ALTER DATABASE MODIFY NAME, sp_renamedb

Еще одна очень полезная возможность SQL Server 2005 — возможность переименовать базу данных. Это можно сделать тремя способами:

- на графическом экране из контекстного меню базы данных в SQL Server Management Studio при помощи команды Rename (Переименовать);

- при помощи команды ALTER DATABASE, например:

ALTER DATABASE currentdb MODIFY NAME = archivedb;

- при помощи хранимой процедуры sp_renamedb, например:

sp_renamedb 'currentdb', 'archivedb';

Хранимая процедура sp_renamedb оставлена только для обеспечения обратной совместимости с предыдущими версиями SQL Server, и ее использование не рекомендуется.

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

Удаление баз данных SQL Server 2005, DROP DATABASE

Удалить базу данных в SQL Server 2005 можно двумя способами:

- из контекстного меню базы данных в SQL Server Management Studio по команде Delete (Удалить);

- при помощи команды DROP DATABASE, например:

DROP DATABASE testdb;

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

При удалении базы данных SQL Server 2005 одновременно удаляются файлы этой базы данных на диске (если она не находилась в автономном режиме).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]