创建一个动态增长的Sybase数据库?

时间:2013-11-11 16:20:40

标签: sybase sybase-ase

我正在构建一个小的安装/打包脚本,用于部署各种数据库架构项和过程。现在,我只是用它来制作数据库:

CREATE DATABASE dbname GO

然而, 当我将我的小包裹指向我的大型数据库时,它们会很快填满分配的空间。

我不清楚如何创建一个有空间在sybase上增长的数据库....是否有某种参数CREATE DATABASE参数允许它增长空间,或者我是否必须为每个数据库提供特定大小?

2 个答案:

答案 0 :(得分: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

选择/批量复制'如果您之后立即使用BCP,也需要。

我只是在我的包中添加说明,以便最终用户根据需要修改这些值。

答案 1 :(得分:0)

很明显,创建设备有两种不同的方法。

默认方法抓取(分配)创建设备时分配给设备的所有空间。因此,创建100Gb设备将在文件系统中创建一个100Gb文件

另一种方法只抓取(分配)它所需的空间,但会继续占用空间,直到达到磁盘init中指定的限制。此选项仅适用于Unix设备和Windows原始系统,并使用skip_alloc = true

指定

使用skip_alloc不会创建动态增长的数据库,它只会延迟分配,直到需要空间。数据库仍然不会比您分配的空间大。

如果要创建自动扩展的数据库Sybase has precedures on using sp_dbextends do this

使用旧版Sybase的用户可以使用阈值(sp_addthreshold, sp_modifythreshold, sp_dropthreshold)模仿部分内容。