【发布时间】:2021-08-13 00:34:54
【问题描述】:
我想在我的 SQL Server 中进行水平分区。有些教程说我需要点击表格->存储->点击分区。如下所示。
问题:不过,就我而言,我只看到“管理压缩”。我没有看到“创建分区”,此外,我无法在数据库级别看到“文件组”。
我正在使用 Azure SQL
没有显示分区选项:
没有可见的文件组选项:
【问题讨论】:
标签: sql-server azure-sql-database ssms
我想在我的 SQL Server 中进行水平分区。有些教程说我需要点击表格->存储->点击分区。如下所示。
问题:不过,就我而言,我只看到“管理压缩”。我没有看到“创建分区”,此外,我无法在数据库级别看到“文件组”。
我正在使用 Azure SQL
没有显示分区选项:
没有可见的文件组选项:
【问题讨论】:
标签: sql-server azure-sql-database ssms
SSMS 已阻止该向导,因为 Azure SQL 数据库不支持将非主文件组用于分区方案。您可以为 SSMS 提供反馈here。
Azure SQL 数据库中用于分区的 DDL 与常规 SQL Server 相同,因此您可以手动编写它,或者针对本地 SQL Server 使用 SSMS 向导来生成脚本。只要记住将所有分区都指向主文件组。
至少在 Azure SQL 数据库上,这看起来像:
CREATE PARTITION FUNCTION pf(INT)
AS RANGE RIGHT FOR VALUES (1, 100, 1000);
CREATE PARTITION SCHEME ps
AS PARTITION pf
ALL TO ([Primary]);
create table PartitionedTable(id int identity primary key, a int)
on ps(id);
从技术上讲,表没有分区。表由一个或多个索引组成,每个索引都可以存储在文件组或分区方案中。要查看所有分区表(此处定义为主索引存储在分区方案中的表),请运行如下查询:
select schema_name(t.schema_id) schema_name, t.name table_name, ds.name partition_scheme
from sys.tables t
join sys.indexes i
on t.object_id = i.object_id
join sys.data_spaces ds
on i.data_space_id = ds.data_space_id
where i.type in (0,1,5) --heap, CI, CCI
and ds.type = 'PS' --partition scheme
【讨论】: