问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL Server 创建表的时候如何指定文件组

发布网友 发布时间:2022-04-09 09:59

我来回答

2个回答

懂视网 时间:2022-04-09 14:20

Data_located_on_filegroup = fg.groupname, Table_name = obj.name FROM sysfilegroups fg, sysindexes idx, sysobjects obj WHERE idx.id = obj.id AND obj.type in (‘S ‘,‘U ‘) AND idx.indid < 2 AND idx.groupid = fg.groupid and obj.name like ‘%%‘ --表名 ORDER BY fg.groupname

 

2.更改文件组

说明: 在给表 创建索引的时候,可以指定索引在 不同的文件组, 这样 使 表 迁移到 另外的文件组

  步骤1: 给表 创建索引 指定 文件组

  步骤2: 将表的 索引删除(是表结构复原)

3.使用案例

 

CREATE procedure [olap].[usp_SwitchOutFact_Partition]
(@date datetime,@tablename varchar(50))
as
begin
BEGIN TRANSACTION
declare @RangeKey1 nvarchar(100) 
declare @RangeKey2 nvarchar(100) 

 set @RangeKey1 = convert(nvarchar(100), year(@date)*10000 + month(@date)*100 + day(@date))
 set @RangeKey2 =convert(nvarchar(100), year(dateadd(day, 1, @date))*10000 + month(dateadd(day, 1, @date))*100 + day(dateadd(day, 1, @date)))

 /*
 --逻辑描述:
 1.先检查 临时表是不是存在, 存在则删除后 使用select into 新建表
 2.select into 创建的表 默认存放在 PRIMARY 文件组, 我们要更改 文件组
 3.给临时表创建索引的时候, 可以更改文件组 
 4.使表结构一致(包括索引) 所以删除刚创建的索引,此时完成 表的 文件组的更改
 5.进行表 压缩 ,指定 WITH(DATA_COMPRESSION = PAGE
 6. SWITCH PARTITION 
 */
 
if exists(select 1 from sys.tables where object_id=object_id(‘[olap].[staging_‘+@tablename+‘]‘))
 exec(‘drop table [olap].[staging_‘+@tablename+‘]‘)

exec (‘select top(0) * into olap.staging_‘+@tablename+‘ from olap.‘+@tablename)

exec(‘CREATE CLUSTERED INDEX PK_staging_‘+@tablename+‘ ON [olap].[staging_‘+@tablename+‘]([PartitionRangeKey]) WITH(ONLINE=ON) ON [FactFG]‘)
exec(‘DROP INDEX PK_staging_‘+@tablename+‘ ON [olap].[staging_‘+@tablename+‘]‘)

exec(‘ALTER TABLE olap.staging_‘ + @tablename + ‘ REBUILD WITH(DATA_COMPRESSION = PAGE )‘)
exec(‘ALTER TABLE [olap].[staging_‘+@tablename+‘] WITH CHECK ADD CONSTRAINT [chk_staging_‘+@tablename+‘] CHECK ([PartitionRangeKey]>=‘ + @RangeKey1 + ‘ AND [PartitionRangeKey]<‘ + @RangeKey2 + ‘ AND [PartitionRangeKey] IS NOT NULL)‘)

exec(‘ALTER TABLE [olap].[staging_‘+@tablename+‘] CHECK CONSTRAINT [chk_staging_‘+@tablename+‘]‘)

exec(‘ALTER TABLE [olap].[‘+@tablename+‘] SWITCH PARTITION $PARTITION.[pf_‘+@tablename+‘] (‘+@RangeKey1+‘) TO [olap].[staging_‘+@tablename+‘]‘)

COMMIT TRANSACTION
end

 

调用语句

 

declare @date datetime
set @date = convert(datetime,‘2016-09-23‘)
print @date
declare @RangeKey1 nvarchar(100) = convert(nvarchar(100), year(@date)*10000 + month(@date)*100 + day(@date))
print @RangeKey1
exec [olap].[usp_SwitchOutFact_Partition] @date,‘Fact_XM_XMBJXX‘

 

sqlserver2012更改文件组

标签:

热心网友 时间:2022-04-09 11:28

Create Table [ DataBase_Name.[ Owner ]. | Owner. ] Table_Name

( { < Column_Definition > | < Table_Constraint > | Column_Name As Computed_Column_Expression } [ ,...n ] )

[ On { FileGroup | Default } ]

[ TextImage_On { FileGroup | Default } ]

< Column_Definition > :: = { Column_Name Data_Type }

[ [ Default Constant_Expression ] | [ Indentity [ ( Seed , Increment ) ] ] ]

[ < Column_Constraint > ] [ ,... ]

DataBase_Name:要在哪个数据库中创建表的数据库名称。

Owner:创建数据表的所有者名,若空,则默认为新表的创建者在当前数据库中的用户名。

Table_Name:创建数据表的名称。

Column_Name:是创建数据表中的字段名。如果表名包含空格,需要将字段名用方括号括起来。

Computed_Column_Expression:定义计算字段值的表达式。

[ On { FileGroup | Default } ]:指定存储表所在的文件组。如果指定FileGroup,则数据表将存在指定的文件组中,如果指定Default或者不指定On参数,则数据表将存储在默认文件组中。

[ TextImage_On { FileGroup | Default } ]:将数据表中的Text和Image类型的数据存储到指定的文件组。

Data_Type:指定字段的数据类型,可以使系统数据类型或者是用户自定义数据类型。

Constant_Expression:是用作字段默认值的常量、Null或者系统函数。

Indentity:指定该字段为标识字段。

Seed:定义标识字段的起始值,起始值是装入表的第一条记录时所使用的值。

Increment:定义标识增量,标识增量是指该字段值相对前一条记录标识字段的增量值。

Column_Constraint:定义与字段相关的约束,如Null、Not Null和Primary等与约束有关的内容。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
吸血鬼与十字架月音被催眠在第几集 十字架与吸血鬼第一季里,胡梦等人后来是不是知道月音是人类了? 过多手淫该吃什么药补一补? 以前手淫过,肾虚腰疼吃些什么药或补品 ...打开这个软件输我原来的密码就成了这样子,求大神解答&gt; &lt;!_百度... 电脑被别人控制了? 咸肉芥菜炒干丝 咸肉芥菜炒干丝的做法 ...年2月29日出生.女。申时出生的。请高手帮我算下运势。要详细点... 《阅读,让教师遇见更好的自己》读后感 2023护士节祝福语正能量(105句) 不丹是什么地方 没有学籍档案,但有毕业证。有问题吗? 没有学籍档案,但有毕业证。有问题吗? 技校毕业证是学籍证明吗?学籍证明又是什么? 技校毕业证是学籍证明吗?学籍证明又是什么? 高中毕业证拿到手以后,学籍怎么办?在学校还是需要拿走? 有毕业证没学位证能开学籍证明和在读证明吗 我现在已经毕业了,拿到了毕业证,请问我还需要去开学籍证明吗? 只有有高中毕业证,但是学籍不知道注销没有,还需要什么证明吗?我以社会青年身份参加高考,我以前学的是 学籍证明和(初中)毕业证有区别吗?有了(初中)毕业证还需要学籍证明吗?学籍证明有什么用? 复读生高考报名需要学籍证明原件吗? 档案整理中,高中毕业证和学历证明,还要学籍证明吗? 有高中毕业证,为什么人社局还要高中学籍? 往届高考报名时有毕业证书了还用学籍证明吗? 应届毕业生在教资现场认定的时候有毕业证了还需要学籍证明吗? 婴儿辅食山药糕怎么做 为什么重庆萝卜是球形? 电脑音响怎么开声音 我的QQ邮箱退出后想登录别的邮箱但是总是自动登录我的邮箱是怎么回事 为甚么我的QQ邮箱一添加附件网页自动关闭了 古代时对联贴是怎样贴 对联如何贴!!速度啊 大学老师辱骂学生会被开除党籍吗 大学老师辱骂学生可以起诉吗 老师辱骂学生怎么处理 老师辱骂学生怎么处理? 老师辱骂学生犯法么 老师用脏话辱骂学生犯不犯法 老师辱骂学生犯法么? 教师辱骂学生应该怎么处理 老师辱骂学生犯了哪些法律 老师辱骂学生如何举报 老师辱骂学生可以告去教育局吗 老师辱骂学生可以去教育局告老师吗 大学被老师骂脏话,很难听,举报有用吗 老师经常打骂学生怎么办? 大学老师可不可以随便打骂学生? 老师辱骂学生是不是犯法 论文里关键词超过一行了,第二行和谁对齐? 在word中,文章两个标题怎样两端对齐 比如说中国宣传部 中国电影制片总厂 中和中对齐,部与厂对齐