0

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

创建数据库数据库名称 GO

但是,当我将我的小包指向我的较大数据库时,它们很快就会填满分配的空间。

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

4

2 回答 2

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,还需要“选择进入/批量复制”。

我只是在我的包中放了说明,供最终用户根据需要修改这些值。

于 2013-11-12T17:48:56.100 回答
0

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

默认方法获取(分配)在创建设备时分配给设备的所有空间。所以创建一个 100Gb 的设备会在文件系统中创建一个 100Gb 的文件

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

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

如果要创建一个自动扩展的数据库,Sybase 有使用sp_dbextendsdo this的程序。

使用旧版本 Sybase 的用户可以使用阈值 ( sp_addthreshold, sp_modifythreshold, sp_dropthreshold) 模拟其中的一些。

于 2013-11-13T14:43:22.433 回答