2017-08-24 79 views
0

我用这难以了解语法(对不起,我是新来的SQL Server :))创建表,指定压缩选项

CREATE TABLE 
    [ database_name . [ schema_name ] . | schema_name . ] table_name 
    [ AS FileTable ] 
    ({ <column_definition> 
     | <computed_column_definition>  
     | <column_set_definition> 
     | [ <table_constraint> ] 
     | [ <table_index> ] } 
      [ ,...n ]  
      [ PERIOD FOR SYSTEM_TIME (system_start_time_column_name 
      , system_end_time_column_name) ] 
    ) 
    [ ON { partition_scheme_name (partition_column_name) 
      | filegroup 
      | "default" } ] 
    [ TEXTIMAGE_ON { filegroup | "default" } ] 
    [ FILESTREAM_ON { partition_scheme_name 
      | filegroup 
      | "default" } ] 
    [ WITH (<table_option> [ ,...n ]) ] 
[ ; ] 

和我想问的表选项是

<table_option> ::= 
{ 
    [DATA_COMPRESSION = { NONE | ROW | PAGE } 
     [ ON PARTITIONS ({ <partition_number_expression> | <range> } 
     [ , ...n ]) ]] 
..... 

这是什么意思我可以格式化我的T-SQL脚本?

例如,

CREATE TABLE Black_Cowgirl_tb 
([name] int not null, [location] varchar(50) not null, [SheCanCook] bit not null, [SheCanRideAHorse] bit not null,...) WITH 
(
DATA_COMPRESSION = NONE ON PARTITIONS (1), 
DATA_COMPRESSION = ROW ON PARTITIONS (2, 4, 6 TO 8), 
DATA_COMPRESSION = PAGE ON PARTITIONS (3, 5) 
) 

请您争取一切可能的方式与数据压缩选项格式化吗?我想学很多东西,但是我从来没有机会。谢谢。

回答

0
<table_option> ::= 
{ 
    [DATA_COMPRESSION = { NONE | ROW | PAGE } 
     [ ON PARTITIONS ({ <partition_number_expression> | <range> } 
     [ , ...n ]) ]] 

..... 

请您争取一切可能的方式与数据压缩选项格式化吗?在方括号

值如下mandatory..so在花括号强制

data_Compression,ON PARTITIONS,..n 

值意味着你将需要选择其中之一。

在这种情况下

{ NONE | ROW | PAGE } 

可以读作无或上 分区行或页..

所以最后

DATA_COMPRESSION = 无或行或 页面(1)或分区(1-2)

0

你的例子是错误的,因为你的表不是分区d,所以如果出现任何错误,不是由于错误地使用了compression选项,而是因为您创建的表根本没有分区。

在这里,你可以找到很多例子: Creating Compressed Tables and Indexes

例C是你的情况:

CREATE TABLE PartitionTable1 
(col1 int, col2 varchar(max)) 
ON myRangePS1 (col1) 
WITH 
(
    DATA_COMPRESSION = ROW ON PARTITIONS (1), 
    DATA_COMPRESSION = PAGE ON PARTITIONS (2 TO 4) 
); 
GO