|
Программирование >> Программирование баз данных
определение в ходе дальнейшего изложения (и, безусловно, воспользуемся этими возможностями). Для проверки того, что таблица действительно были создана, может использоваться целый ряд команд, но, по-видимому, наилучшей из них является команда, которая ко времени окончания изучения данной книги станет для вас хорошей знакомой: sp help. Эта команда имеет простой синтаксис: EXEC sp help <object name> Чтобы воспользоваться данной командой, указав имя только что созданного объекта таблицы, вызовите на выполнение следующий код: EXEC sp help Customers Оператор alter После успешного создания таблицы кажется, что все сложности уже позади. Но жизнь не стоит на месте, поэтому иногда (а фактически гораздо чаще, чем хотелось бы) приходится выполнять распоряжения по изменению структуры таблицы, а не просто ее воссозданию. Кроме того, в процессе эксплуатации базы данньгх может потребоваться изменить размеры, местонахождение файлов или какие-то другие характеристики. Оператор ALTER позволяет осуществить все необходимые для этого действия. Оператор ALTER во многом напоминает оператор CREATE, поэтому имеет в основном такую же синтаксическую структуру: ALTER <object type> <object name> Изучение этой структуры не составляет никакого труда, но более подробные сведения об операторе ALTER являются достаточно сложными. В этом можно будет сразу же убедиться, как только мы приступим к изучению указанного оператора, но изложение станет действительно интересным (читай сложным и запутанным !) после дальнейшего углубления в эту тему в следующей главе (когда речь пойдет об ограничениях целостности). Оператор alter database с оператором ALTER DATABASE приходится сталкиваться при любой попытке внести изменение в структуру базы данных. В настоящем разделе рассматривается ряд примеров, позволяющих ознакомиться с тем, как осуществляются те или иные действия и какие для этого применяются синтаксические конструкции. По-видимому, самым сложным аспектом применения оператора ALTER является определение того, какова ситуация, в которой должны осуществляться его действия. Учитывая сказанное, еще раз ознакомимся со сведениями об одной из существующих баз данных: EXEC sp helpdb Accounting Так, полученные результаты должны полностью соответствовать тем, которые были получены сразу после создания базы данных (табл. 4.3 и 4.4). Таблица 4.3. Первый результирующий набор процедуры sphelpdb Name db size owner dbid created status compa t ibl11ty leve1 Accounting 15.00 MB sa 9 May 28 2000 Status=ONLINE, Updateability= READ WRITE, UserAccess= MULTI USER, Recovery=FULL, Version=598, Collation=SQL Latinl General CP1 CI AS, SQLSortOrder=52, IsAutoCreate Statistics, IsAutoUpdate Statistics, IsFullTextEnabled Таблица 4.4. Второй результирующий набор процедуры sphelpdb
Допустим, что в дальнейшем потребовалось внести определенные изменения. Например, предположим, что стало известно о необходимости импорта большого объема данных в базу данных. В настоящее время база данных имеет размер, равный всего лишь 15МВ, а по нынешним меркам это не такой уж большой объем. Напомним, что параметру Autogrow присвоено значение on, поэтому можно было бы сразу же приступить к импорту, после чего СУБД SQL Server каждый раз автоматически наращивала бы размеры базы данньгх на БМВ по мере ее заполнения. Но следует помнрггь, что такие автоматические операции увеличения размеров базы данных фактически требуют от сервера вьшолнения довольно большого объема работы. Например, если должна быть произведена вставка данных в объеме 100МВ, то серверу придется выполнять операции перераспределения базы данных по меньшей мере 16 раз (увеличить ее до 20МВ, 2БМВ, ЗОМВ и т.д.). А поскольку известно, что предстоит получение 100МВ данных, то, по-видимому, более целесообразно заранее подготовиться к этому с помощью единственной операции. Для этого и используется команда ALTER DATABASE. Команда ALTER DATABASE имеет следующий общий синтаксис: ALTER DATABASE <database name> ADD FILE ([NAME = < logical file name>,] FILENAME = <file name> [, SIZE = <size in KB, MB, GB or TB>] [, MAXSIZE = < size in KB, MB, GB or TB >] [, FILEGROWTH = <No of KB, MB, GB or TB percentage>]) [,...n] [ то FILEGROUP filegroup name] [, OFFLINE ] I ADD LOG FILE ([NAME = <logical file name>,] FILENAME = <file name> [, SIZE = < size in KB, MB, GB or ТВ >] [, MAXSIZE = < size in KB, MB, GB or ТВ >] [, FILEGROWTH = <No KB, MB, GB or ТВ percentage>]) REMOVE FILE <logical file name> [WITH DELETE] ADD FILEGROUP <filegroup name> REMOVE FILEGROUP <filegroup name> MODIFY FILE <filespec> MODIFY NAME = <new dbname> MODIFY FILEGROUP <filegroup name> {<filegroup property>NAME = <new filegroup name>} SET <optionspec> [,...n ][WITH <termination>] COLLATE <collation name> Этот синтаксис является очень сложным, но в действительности некоторые разделы оператора ALTER DATABASE используются очень редко. Просто специалисты компании Microsoft постарались предусмотреть все возможные ситуации, в которых требуется применение этого оператора. Таким образом, в настоящий момент нам осталось лишь упростить решение задачи расширения объема базы данных до 100 Мбайт: ALTER DATABASE Accounting MODIFY FILE (NAME = Accounting, SIZE = 100MB) Следует отметить, что при выполнении этого оператора, в отличие от оператора создания базы данных, не происходит вывод на внешнее устройство какой-либо информации о расположении базы данных; вместо этого формируется следующее краткое сообщение: Tlie command(s) completed successfully. Здесь заслуживает внимания то, что был превышен ранее установленный максимальный размер в 512 00КВ, но сообщение об ошибке не получено. Это связано с тем, что увеличение размера бьшо выполнено в явной форме. Таким образом, можно сделать вывод, что в том же операторе модификации базы данных нужно бьшо бы предусмотреть увеличение максимально допустимого размера базы данных. Ведь если мы остановимся на этом и просто позволим СУБД SQL Server наращивать размеры базы данных по мере необходимости, то попытка осуществления импорта окончится неудачей на полпути из-за того, что продолжают действовать ограничения по максимальному размеру. В этой ситуации необходимо также иметь в виду, что значение MAXSIZE увеличено лишь до нового явно заданного значения, поэтому возможность дальнейшего роста базы данных исключена. По существу, все прочие наиболее часто выполняемые модификации на уровне базы данных ос)тцествляются почти по такому же принципу. Тем не менее выбор всевозможных сочетаний параметров и опций оператора модификации базы данных является буквально бесконечным. Описание более сложных модификаций файловых групп и подобных изменений структуры базы данных выходят за рамки настоящей книги. Если же читателю требуется дополнительная информация по этой теме, то можно порекомендовать воспользоваться одной из книг, посвященных описанию процедур администрирования базы данных (а количество таких книг весьма велико).
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |