2013-11-11 3 views
0

Я создаю небольшой скрипт установки/упаковки, который развертывает различные элементы и процедуры схемы базы данных. Прямо сейчас, я просто использовать это, чтобы сделать базу данных:Создайте динамически растущую базу данных Sybase?

СОЗДАТЬ DATABASE DBName GO

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

Я не понимаю, как создать базу данных, в которой есть пространство для роста на sybase .... есть ли какой-то параметр CREATE DATABASE, который позволяет ему увеличиваться, или мне нужно указать определенный размер за база данных?

ответ

1

Некоторые исследования показали, что создание растущего - плохая идея ... Я закончил делать что-то подобное (в интересах тех, кто ищет, мне было трудно узнать часть устройства.)

-- Data Device 
disk init 
name    = 'do02_data', 
physname  = 'C:\sybase\data\do02data.dat', 
size  = '15G', 
directio = true, 
skip_alloc = true 
go 

-- Log Device 
disk init 
name    = 'do02_log', 
physname  = 'C:\sybase\data\do02log.dat', 
size  = '7G', 
directio = true, 
skip_alloc = true 
CREATE DATABASE do02 on do02_data = '15G' LOG ON do02_log = '7G'    -- will  take some time 
GO 
sp_dboption do02, 'select into/bulkcopy', true 
GO 

«выбрать в/bulkcopy» также необходимо, если вы собираетесь использовать BCP сразу после этого.

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

0

Просто так ясно, что существует два способа создания устройства.

Метод по умолчанию захватывает (выделяет) все пространство, назначенное устройству в момент создания устройства. Таким образом, создание устройства 100Gb создаст файл 100Gb в файловой системе.

Другой метод захватывает (выделяет) только пространство, в котором он нуждается, но будет продолжать захватывать пространство до тех пор, пока оно не достигнет предела, указанного в init диска. Эта опция доступна только для Unix-устройств и систем Windows raw и указана с использованием skip_alloc = true

Использование skip_alloc не создает динамически растущую базу данных, она лишь задерживает выделение до тех пор, пока пространство не понадобится. База данных по-прежнему не будет больше, чем место, которое вы ей назначили.

Если вы хотите создать автоматически расширяющуюся базу данных, Sybase has precedures on using sp_dbextends do this.

Пользователи со старыми версиями Sybase могут имитировать некоторые из этих значений с использованием пороговых значений (sp_addthreshold, sp_modifythreshold, sp_dropthreshold).

Смежные вопросы