RT

解决方案 »

  1.   

    /*
    标题:sql server 2000数据对象的系统范围
    作者:爱新觉罗.毓华 
    时间:2008-05-04
    地点:广东深圳
    */sql server 2000数据对象的系统范围,在实际应用过程中可以根据需要作适当的改变。1、数据库:32767个数据库,最小为1MB,最大为1TB。
    2、表:每个数据库最多有20亿个表。
    3、列:每个表最多1024列,每列的最大字节数为8060(文本和图像列除外)。
    4、索引:每个表有一个聚集索引,249个非聚集索引。一个复合索引最多有16个索引关键字。
    5、触发器:每个表最多有3个触发器,分别用于插入、修改和删除等操作。
    6、存储过程:一个存储过程可以有1024个参数和最多32级嵌套。
    7、用户连接:32767个。
    8、锁定及打开的对象:20亿个。
      

  2.   

    每个数据库最多可包含 20 亿个表,每个表可包含 1,024 列。表的行数及总大小仅受可用存储空间的限制。每行最多包括 8,060 个字节。对于带 varchar、nvarchar、varbinary 或 sql_variant 列(导致已定义表的总宽超过 8,060 字节)的表,此限制将放宽。其中每列的长度仍必须在 8,000 字节的限制内,但是它们的总宽可能超过表的 8,060 字节的限制。有关详细信息,请参阅行溢出数据超过 8 KB。每个表最多可以有 249 个非聚集索引和 1 个聚集索引。其中包括为支持表中所定义的 PRIMARY KEY 和 UNIQUE 约束而生成的索引。通常情况下,为表和索引分配空间时,每次以一个区为增量单位。当创建表或索引时,首先从混合区为其分配页,直到它具有足够的页填满一个统一区。当足够的页填满统一区后,每当当前分配的区填满时,将再为其分配另一个区。若要获得关于由表分配和占用的空间量的报表,请执行 sp_spaceused。数据库引擎 在列定义中并不强制以特定的顺序指定 DEFAULT、IDENTITY、ROWGUIDCOL 或列约束。创建表后,即使 QUOTED IDENTIFIER 选项在创建表时设置为 OFF,该选项在表的元数据中仍存储为 ON。临时表
    可以创建本地临时表和全局临时表。本地临时表仅在当前会话中可见,而全局临时表在所有会话中都可见。临时表不能分区。本地临时表的名称前面有一个数字符号 (#table_name),而全局临时表的名称前面有两个数字符号 (##table_name)。SQL 语句使用 CREATE TABLE 语句中为 table_name 指定的值引用临时表,例如: 复制代码 
    CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)
    INSERT INTO #MyTempTable VALUES (1)
     如果在单个存储过程或批处理中创建了多个临时表,则它们必须有不同的名称。如果本地临时表由存储过程创建或由多个用户同时执行的应用程序创建,则数据库引擎 必须能够区分由不同用户创建的表。为此,数据库引擎 在内部为每个本地临时表的表名追加一个数字后缀。存储在 tempdb 的 sysobjects 表中的临时表,其全名由 CREATE TABLE 语句中指定的表名和系统生成的数字后缀组成。为了允许追加后缀,为本地临时表指定的 table_name 不能超过 116 个字符。除非使用 DROP TABLE 显式删除临时表,否则临时表将在退出其作用域时由系统自动删除: 当存储过程完成时,将自动删除在存储过程中创建的本地临时表。由创建表的存储过程执行的所有嵌套存储过程都可以引用此表。但调用创建此表的存储过程的进程无法引用此表。
    所有其他本地临时表在当前会话结束时都将被自动删除。
    全局临时表在创建此表的会话结束且其他所有任务停止对其引用时将被自动删除。任务与表之间的关联只在单个 Transact-SQL 语句的生存周期内保持。换言之,当创建全局临时表的会话结束时,最后一条引用此表的 Transact-SQL 语句完成后,将自动删除此表。
    在存储过程或触发器中创建的本地临时表的名称可以与在调用存储过程或触发器之前创建的临时表名称相同。但是,如果查询引用临时表,而同时有两个同名的临时表,则不定义针对哪个表解析该查询。嵌套存储过程同样可以创建与调用它的存储过程所创建的临时表同名的临时表。但是,为了对其进行修改以解析为在嵌套过程中创建的表,此表必须与调用过程创建的表具有相同的结构和列名。下面的示例说明了这一点。 复制代码 
    CREATE PROCEDURE Test2
    AS
    CREATE TABLE #t(x INT PRIMARY KEY)
    INSERT INTO #t VALUES (2)
    SELECT Test2Col = x FROM #t;
    GO
    CREATE PROCEDURE Test1
    AS
    CREATE TABLE #t(x INT PRIMARY KEY)
    INSERT INTO #t VALUES (1)
    SELECT Test1Col = x FROM #t;
    EXEC Test2;
    GO
    CREATE TABLE #t(x INT PRIMARY KEY)
    INSERT INTO #t VALUES (99);
    GO
    EXEC Test1;
    GO
     下面是结果集:  复制代码 
    (1 row(s) affected)Test1Col    
    ----------- 
    1           (1 row(s) affected)Test2Col    
    ----------- 
    2           
     当创建本地或全局临时表时,CREATE TABLE 语法支持除 FOREIGN KEY 约束以外的其他所有约束定义。如果临时表中指定了 FOREIGN KEY 约束,则该语句将返回一条表明已跳过此约束的警告消息。此表仍将创建,但不使用 FOREIGN KEY 约束。在 FOREIGN KEY 约束中不能引用临时表。建议您使用表变量而不使用临时表。当必须对临时表显式地创建索引时,或多个存储过程或函数必须使用表值时,临时表很有用。通常,表变量可提供更有效的查询处理。有关详细信息,请参阅表 (Transact-SQL)。已分区表
    使用 CREATE TABLE 创建已分区表前,必须首先创建分区函数以指定表分区的方式。可使用 CREATE PARTITION FUNCTION (Transact-SQL) 创建分区函数。其次,必须创建分区架构,以指定将保存由分区函数指示的分区的文件组。可使用 CREATE PARTITION SCHEME (Transact-SQL) 创建分区架构。对于已分区表,不能指定用于分隔文件组的 PRIMARY KEY 或 UNIQUE 约束的位置。有关详细信息,请参阅已分区表和已分区索引。
      

  3.   

    创建用户数据库后,应备份 master 数据库。CREATE DATABASE 语句必须以自动提交模式(默认事务管理模式)运行,不允许在显式或隐式事务中使用。有关详细信息,请参阅自动提交事务。使用一条 CREATE DATABASE 语句即可创建数据库以及存储该数据库的文件。SQL Server 通过使用以下步骤实现 CREATE DATABASE 语句: SQL Server 2005 Database Engine 使用 model 数据库的副本初始化该数据库及其元数据。
    为数据库分配 Service Broker GUID。
    然后,数据库引擎 使用空页填充数据库的剩余部分,包含记录数据库中空间使用情况的内部数据页除外。有关详细信息,请参阅数据库文件初始化。
    在一个 SQL Server 的实例中最多可以指定 32,767 个数据库。每个数据库都有一个所有者,它可以在数据库中执行特殊操作。所有者是创建数据库的用户。可以使用 sp_changedbowner (Transact-SQL) 更改数据库所有者。数据库文件和文件组
    每个数据库至少有两个文件(一个主文件和一个事务日志文件)和一个文件组。可以为每个数据库指定最多 32,767 个文件和 32,767 个文件组。有关详细信息,请参阅物理数据库文件和文件组。 在创建数据库时,请根据数据库中预期的最大数据量,创建尽可能大的数据文件。有关详细信息,请参阅使用文件和文件组管理数据库增长。 建议使用存储区域网络 (SAN)、基于 iSCSI 的网络或本地附加的磁盘来存储 SQL Server 数据库文件,因为该配置使 SQL Server 的性能和可靠性得到了优化。默认情况下,不对 SQL Server 启用使用网络数据库文件(存储在网络服务器或网络附加的存储器上)。但是,可以使用跟踪标志 1807 创建具有基于网络的数据库文件的数据库。有关此跟踪标志以及重要的性能和维护注意事项的信息,请参阅此 Microsoft 网站。数据库快照
    可以使用 CREATE DATABASE 语句创建现有数据库(“源数据库”)的只读静态视图(“数据库快照”)。当创建快照时,源数据库已存在,所以数据库快照在事务上与源数据库一致,源数据库可以具有多个快照。 注意:  
    创建数据库快照时,CREATE DATABASE 语句不能引用日志文件、脱机文件、还原文件和不存在的文件。
     
    如果创建数据库快照失败,快照便成为可疑快照,必须将其删除。有关详细信息,请参阅 DROP DATABASE (Transact-SQL)。 每个快照都将一直存在,直到使用 DROP DATABASE 将其删除为止。有关详细信息,请参阅数据库快照。 数据库选项
    创建数据库时,总会自动设置几个数据库选项。有关这些选项及其默认设置的列表,请参阅设置数据库选项。可以使用 ALTER DATABASE 语句修改这些选项。model 数据库和创建新数据库
    model 数据库中的所有用户定义对象都将复制到所有新创建的数据库中。可以向 model 数据库中添加任何对象(例如表、视图、存储过程、数据类型等),以将这些对象包括到所有新建数据库中。当指定 CREATE DATABASE database_name 语句而不带其他大小参数时,主数据文件将与 model 数据库中的主文件具有相同的大小。除非指定了 FOR ATTACH,否则每个新数据库都从 model 数据库继承数据库选项设置。例如,在 model 和创建的任何新数据库中,数据库选项 auto shrink 都设置为 true。如果更改了 model 数据库中的选项,则这些新选项设置也将用于您所创建的所有新数据库中。在 model 数据库中的更改操作不会影响现有数据库。如果在 CREATE DATABASE 语句中指定了 FOR ATTACH,则新数据库将继承原始数据库的数据库选项设置。查看数据库信息
    可以使用目录视图、系统函数和系统存储过程返回有关数据库、文件和文件组的信息。有关详细信息,请参阅查看数据库元数据。
      

  4.   

    sql server 2000数据对象的系统范围,在实际应用过程中可以根据需要作适当的改变。 1、数据库:32767个数据库,最小为1MB,最大为1TB。 
    2、表:每个数据库最多有20亿个表。 
    3、列:每个表最多1024列,每列的最大字节数为8060(文本和图像列除外)。 
    4、索引:每个表有一个聚集索引,249个非聚集索引。一个复合索引最多有16个索引关键字。 
    5、触发器:每个表最多有3个触发器,分别用于插入、修改和删除等操作。 
    6、存储过程:一个存储过程可以有1024个参数和最多32级嵌套。 
    7、用户连接:32767个。 
    8、锁定及打开的对象:20亿个。