最大容量说明
第一个表说明对于所有 Microsoft® SQL Server™ 2000 版本都相同的最大容量。第二个和第三个表说明因 SQL Server 2000 的版本和操作系统的不同而异的容量。下表说明在 Microsoft SQL Server 数据库中定义的,或在 Transact-SQL 语句中引用的各种对象的最大值(数量或大小)。下表不包含 Microsoft® SQL Server 2000™ Windows® CE 版。  最大值(数量或大小) 
对象 SQL Server 7.0 SQL Server 2000 
批处理大小 65,536 * 网络数据包大小1 65,536 * 网络数据包大小1 
每个短字符串列的字节数 8,000 8,000 
每个 text、ntext、或 image 列的字节数 2 GB-2 2 GB-2 
每个 GROUP BY、ORDER BY的字节数 8,060   
每个索引中的字节数 900 9002 
每个外键的字节数 900 900 
每个主键的字节数 900 900 
每行字节数 8,060 8,060 
存储过程源文本中的字节数 批处理大小之较小者或者 250 MB 批处理大小之较小者或者 250 MB 
每个数据表的聚集索引数 1 1 
GROUP BY、ORDER BY 中的列数 只受字节数限制  
GROUP BY WITH CUBE 或 WITH ROLLUP 语句中的列数或表达式数目 10  
每个索引的列数 16 16 
每个外键的列数 16 16 
每个主键的列数 16 16 
每个基础数据表的列数 1,024 1,024 
每个SELECT 语句的列数 4,096 4,096 
每个INSERT 语句的列数 1,024 1,024 
每个客户端的连接个数 已配置连接的最大值 已配置连接的最大值 
数据库大小 1,048,516 TB3 1,048,516 TB3 
每个 SQL Server 实例的数据库个数 32,767 32,767 
每个数据库的文件组个数 256 256 
每个数据库的文件个数 32,767 32,767 
文件大小(数据) 32 TB 32 TB 
文件大小(日志) 4 TB 32 TB 
每个数据表的外键表引用 253 253 
标识符长度(以字符计) 128 128 
每台计算机的实例数 暂缺 16 
包含 SQL 语句的字符串长度(批处理大小) 65,536 * 网络数据包大小1 65,536 * 网络数据包大小1 
每个连接的锁数 每个服务器的最大锁数 每个服务器的最大锁数 
每个 SQL Server 实例的锁数 2,147,483,647(静态)
SQL Server 40% 的内存(动态) 2,147,483,647(静态)
SQL Server 40% 的内存(动态) 
嵌套存储过程层数 32 32 
嵌套子查询 32 32 
嵌套触发器层数 32 32 
每个数据表的非聚集索引个数 249 249 
SQL Server 实例中同时打开的对象个数4 2,147,483,647(或可用内存) 2,147,483,647(或可用内存) 
每个数据库中的对象个数 2,147,483,6474 2,147,483,6474 
每个存储过程的参数个数 1,024 1,024 
每个数据表的 REFERENCE 个数 253 253 
每个数据表的行数 受可用存储资源限制 受可用存储资源限制 
每个数据库的数据表个数 受数据库中的对象个数限制4 受数据库中的对象个数限制4 
每个 SELECT 语句的数据表个数 256 256 
每个数据表的触发器个数 受数据库中的对象个数限制4 受数据库中的对象个数限制4 
每个数据表的 UNIQUE 索引个数或约束个数 249个非聚集索引和 1 个聚集索引 249个非聚集索引和 1 个聚集索引 
1 网络数据包大小是表格格式数据方案 (TDS) 数据包的大小,该数据包用于应用程序和关系数据库引擎之间的通讯。默认的数据包大小为 4 KB,由 network packet size 配置选项控制。
2 在 SQL Server 2000 中,任何键的最大字节数不能超过 900。可以使用可变长度的列来定义键,只要在这种列中不插入数据超过 900 字节的行,其最大大小就可以在 900 以上。有关更多信息,请参见索引键的最大值。
3 当使用 SQL Server 2000 Desktop Engine 或 Microsoft 数据引擎 (MSDE) 1.0 时,数据库的大小不能超过 2 GB。
4数据库对象包括所有的表、视图、存储过程、扩展存储过程、触发器、规则、默认值及约束。一个数据库中所有对象的总数不得超过 2,147,483,647。 
说明  SQL Server 2000 中文版不支持英文版的 NT 4.0 企业版。

解决方案 »

  1.   

    FOREIGN KEY 约束
    如果在 FOREIGN KEY 约束的列中输入非 NULL 值,则此值必须在被引用的列中存在,否则将返回违反外键约束的错误信息。 
    FOREIGN KEY 约束应用于前面所讲的列,除非指定了源列。
    FOREIGN KEY 约束仅能引用位于同一服务器上的同一数据库中的表。数据库间的引用完整性必须通过触发器实现。有关更多信息,请参见 CREATE TRIGGER。 
    FOREIGN KEY 可以引用同一表中的其它列(自引用)。
    列级 FOREIGN KEY 约束的 REFERENCES 子句仅能列出一个引用列,且该列必须与定义约束的列具有相同的数据类型。
    表级 FOREIGN KEY 约束的 REFERENCES 子句中引用列的数目必须与约束列列表中的列数相同。每个引用列的数据类型也必须与列表中相应列的数据类型相同。
    如果 timestamp 类型的列是外键或被引用键的一部分,则不能指定 CASCADE。
    可以在相互间具有引用关系的表上组合使用 CASCADE 和 NO ACTION。如果 SQL Server 遇到 NO ACTION,将终止执行语句并回滚相关的 CASCADE 操作。当 DELETE 语句导致 CASCADE 和 NO ACTION 组合操作时,在 SQL Server 检查 NO ACTION 操作之前将执行所有 CASCADE 操作。
    一个表最多可包含 253 个 FOREIGN KEY 约束。
    对于临时表不强制 FOREIGN KEY 约束。
    每个表在其 FOREIGN KEY 约束中最多可以引用 253 个不同的表。
    FOREIGN KEY 约束只能引用被引用表的 PRIMARY KEY 或 UNIQUE 约束中的列或被引用表上 UNIQUE INDEX 中的列。
      

  2.   

    使用 FOREIGN KEY 约束
    FOREIGN KEY 约束用于引用其它表。FOREIGN KEY 可以是单列键或多列键。下例显示 employee 表上引用 jobs 表的单列 FOREIGN KEY 约束。对于单列 FOREIGN KEY 约束,只需要 REFERENCES 子句。job_id   smallint      NOT NULL
          DEFAULT 1
          REFERENCES jobs(job_id)也可以显式使用 FOREIGN KEY 子句并复述列特性。注意在这两个表中列名不必相同。FOREIGN KEY (job_id) REFERENCES jobs(job_id)多列键约束作为表约束创建。在 pubs 数据库中,sales 表包含多列 PRIMARY KEY。下例显示如何从其它表中引用此键(可选择显式约束名)。CONSTRAINT FK_sales_backorder FOREIGN KEY (stor_id, ord_num, title_id)
       REFERENCES sales (stor_id, ord_num, title_id)
      

  3.   

    如:create table 主表
    (商品编号 varchar(20) not null  PRIMARY KEY CLUSTERED ,
    商品名称 varchar(20) UNIQUE NONCLUSTERED ,
    数量 int
    )
    create table 主表1
    (商品编号 varchar(20) not null  PRIMARY KEY CLUSTERED ,
    商品名称 varchar(20) UNIQUE NONCLUSTERED ,
    数量 int
    )
    create table 次表 
    (商品编号 varchar(20) not null ,  
    商品名称 varchar(20) not null
    primary key ( 商品编号,商品名称 )
    FOREIGN KEY (商品编号) REFERENCES 主表 (商品编号) 
     ON DELETE  CASCADE  ON UPDATE CASCADE ,
     FOREIGN KEY ( 商品名称) rEFERENCES 主表1 (商品编号) 
     ON DELETE  CASCADE  ON UPDATE CASCADE ,
    供应商 varchar(20) 
    )