,0),将指定(999999 + 1) * ( 5000 * 10 power -7)=500个值。 可以通过使用用户自定义类型,使这个范围标准化。例如:
sp_addtype sitekey, numeric(6,0), "identity"
把这个类型用于相应的地方,前面的例子中的建表语句将改为如下方式:
create table sales_daily (stor_id char(4) not null, ord_num sitekey, ord_amt money null)
大的预置数集合可能导致大的断带
当发生系统故障,如果预置的系数越大,则标识值的断带越大,因为在内存中所有没被使用的预置数都将丢失。例如:如果定义标识列的最大值为 numeric(38,0),即使使用最小的预置系数,系统故障时可能丢失几百万个值。shutdown with nowait 会产生和系统故障同样的断带。
在某些环境中 dump/load 可能引起标识值的丢失。对象分配管理程序(OAM)的页面上为每一个对象存储了已使用的页面的页号,或已分配但未使用的页面的页号。Backup Server 直接从硬盘读取数据;OAM 页面存有最大的保留的标识值,而已用的最大值和保留的最大值在这个表的内存结构中保持跟踪,当清空内存结构或服务器用不带 nowait 的 shutdown 关掉时,SQL Server 把最大的已用值写回 OAM 页,如果在dump时,最大的保留值和最大的已用值不一样,那么最大的保留值被写出,并在 load 时恢复,导致标识值的丢失。Sybase 正在着手解决这些问题。
上一页 [1] [2] |