为表切换文件组(sql) 60juan5213]

发布时间:2017-5-29 4:38:26 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"为表切换文件组(sql) 60juan5213]",主要涉及到为表切换文件组(sql) 60juan5213]方面的内容,对于为表切换文件组(sql) 60juan5213]感兴趣的同学可以参考一下。

请教为表切换文件组的SQL脚本,谢谢。 详细描述:我已创建表结构,并且也已经创建文件组以及数据文件。由于不能登陆数据库服务器,现在就想指定一个表并且为该表指定文件组,请问能否用脚本实现?多谢!

由于不能登陆数据库服务器?这恐怕不能玩的. 另外没用过SQL语句这么干过,友情帮顶.

不会 友情帮顶..........

楼主的意思是用SQL语句?

-创建数据库时指定数据文件 create database db on primary(name=db,         filename='C:\program files\mircosoft SQL server\mssql10.mssqlserver\mssql\data\db.mdf',         size=100MB         maxsize=200         filegrowth=20) go --解释下上面的参数:     --primary关键字,指定关联<文件定义>列表用于定义主要数据文件,一个数据库只能有一个主文件,如果没有指定primary,那么create database 语句中列出的第一个文件将成为主文件。 --name关键字,用于指定数据文件的逻辑名称 --filename关键字,指定数据文件的操作系统文件名。其后面的参数是创建数据文件时定义的物理文件的路径名和文件名。 --size关键字,指定数据文件的大小。 --maxsize关键字,指定数据文件可以增长到的最大大小。 --unlimitted关键字,上面的例子中省略掉了。若指定了,则代表指定定义的数据文件将增长到磁盘变满为止。 --filegrowth关键字,指定数据文件的增长增量,其值不能超过maxsize设置。0表示不增长。,默认值为MB。如果指定为%,则增量大小为发生时文件大小的指定百分比,如果没有指定,默认值为10%。 --在创建数据库时指定文件组 create database db on primary(name=db1,         filename='C:\program files\mircosoft SQL server\mssql10.mssqlserver\mssql\data\db1.mdf',         size=100MB         maxsize=200         filegrowth=20), filegroup filegroup1 (name=db2,         filename='C:\program files\mircosoft SQL server\mssql10.mssqlserver\mssql\data\db2.mdf',         size=100MB         maxsize=200         filegrowth=20) go --创建数据库时指定事务日志文件 create database db on primary(name=db1,         filename='C:\program files\mircosoft SQL server\mssql10.mssqlserver\mssql\data\db1.mdf',         size=100MB         maxsize=200         filegrowth=20), log on(   name=dblog,         filename='C:\program files\mircosoft SQL server\mssql10.mssqlserver\mssql\data\db_log.ldf',         size=10MB         maxsize=20         filegrowth=2) go

如果表存在,重建表聚集索引 ALTER TABLE 表名 ADD  CONSTRAINT 主健名 PRIMARY KEY CLUSTERED  ( 列  )ON [文件組] 或 創表時 指定 create table t(ID int) on [文件組]

补充:由于数据库已正式使用,不能重新修改和重建表结构,服务器也不是我们管理的,只能用查询分析器连接,有没有那位朋友用脚本为表切换所属文件组。谢谢。。。急急急。。。。

引用 6 楼 juan5213 的回复:补充:由于数据库已正式使用,不能重新修改和重建表结构,服务器也不是我们管理的,只能用查询分析器连接,有没有那位朋友用脚本为表切换所属文件组。谢谢。。。急急急。。。。 在指定的文件组上建立一个结构一样的表-导入数据-删除原表-改名

 路过,学习了。友情帮顶。

Use Test If object_id('sp_MoveTable') Is Not Null     Drop Proc sp_MoveTable Go /*移动表数据到别的文件组  2008-12-29*/ Create Proc sp_MoveTable (     @objectname sysname,     @NewFileGroup sysname=null ) As     Set Nocount On     Declare @objectid int          Select @objectid=object_id,@objectname=name         From sys.objects As a         Where [email protected]                 And Type='U'                  And is_ms_shipped=0                 And    Not Exists(Select 1                                      From sys.extended_properties                                      Where major_id=a.object_id And                                         minor_id = 0 and                                          class = 1 and                                          name = N'microsoft_database_tools_support'                                 )     If @objectid Is Null     Begin         Raiserror 50001 N'无效的表名!'         Return     End          If filegroup_id(@NewFileGroup) Is Null And @NewFileGroup>''     Begin         Raiserror 50001 N'错误的文件组!'         Return     End     IF @NewFileGroup Is Null         Select @NewFileGroup=name From sys.filegroups Where is_default=1           If Exists(Select 1 From sys.indexes As a Inner Join sys.filegroups As b On b.data_space_id=a.data_space_id Where [email protected]  And [email protected] And (a.type=0 Or is_primary_key=1))     Begin         Print [email protected][email protected]+N' .不需要移动! '         Return     End          Declare    @sql nvarchar(4000),             @Enter nvarchar(20),             @PrimaryKey sysname     Select @sql='',@Enter=Char(13)+Char(10)     --删除主键、外键、索引     Select @[email protected]+'Alter Table '+Quotename(object_name(a.parent_object_id))+' Drop Constraint '+Quotename(a.name)[email protected]         From sys.Foreign_keys As a         Where [email protected]     Select @[email protected]+             Case When b.object_id Is Not Null Then 'Alter Table '+Quotename(@objectname)+' Drop Constraint '+Quotename(a.name)+                     Case b.Type When 'PK' Then ' With (Move To '+Quotename(@NewFileGroup)+')' Else '' End             Else 'Drop Index '+Quotename(a.name)+'.'+Quotename(@objectname)             End [email protected]         From sys.indexes As a             Left Outer Join sys.objects As b On b.parent_object_id=a.object_id And b.Type In('PK','UQ') And b.name=a.name         Where [email protected] And a.name Is Not Null               If Not Exists(Select * From sys.indexes Where [email protected] And is_primary_key=1)     Begin         Set @PrimaryKey='ID'+Replace(Newid(),'-','')         --创建主键(在表没有主键的情况)         Set @[email protected]+'Alter Table '+Quotename(@objectname)+' Add [email protected] +' uniqueidentifier Not Null ,Constraint [email protected][email protected]+' Default(newid()) For [email protected]+''+                 ',Constraint [email protected][email protected]+' Primary Key ([email protected]+' Asc)[email protected]             --删除主键         Set @[email protected]+'Alter Table '+Quotename(@objectname)+' Drop Constraint [email protected][email protected] +' With (Move To '+Quotename(@NewFileGroup)+')[email protected]         Set @[email protected]+'Alter Table '+Quotename(@objectname)+' Drop Constraint [email protected][email protected] [email protected]         Set @[email protected]+'Alter Table '+Quotename(@objectname)+' Drop Column [email protected] [email protected]     End     --创建主键、外键、索引     Select @[email protected]+             Case When b.object_id Is Not Null Then 'Alter Table '+Quotename(@objectname)+' Add Constraint '+Quotename(a.name)+                 Case a.is_primary_key When 1 Then ' Primary Key ' Else 'Unique ' End+'('+c.x+')'             Else                  'Create Index '+Case a.is_unique When 1 Then 'Unique ' Else '' End+                 Case a.type When 1 Then 'Clustered ' Else '' End +                 Quotename(a.name)+' On '+Quotename(@objectname)+'('+c.x+')'+ Isnull(' Include('+d.x+')','')             End [email protected]         From sys.indexes As a             Left Outer Join sys.objects As b On b.parent_object_id=a.object_id And b.Type In('PK','UQ') And b.name=a.name             Outer Apply(Select x=Stuff((Select ','+Quotename(y.name)+Case x.is_descending_key When 1 Then ' Desc' Else ' Asc' End                                             From sys.index_columns As x                                                     Inner Join sys.columns As y On y.object_id=x.object_id And x.column_id=y.column_id                                             Where x.object_id=a.object_id And x.index_id=a.index_id And x.is_included_column=0                                             For Xml Path('')                                         ),1,1,'')                         ) As c              Outer Apply(Select x=Stuff((Select ','+Quotename(y.name)                                             From sys.index_columns As x                                                     Inner Join sys.columns As y On y.object_id=x.object_id And x.column_id=y.column_id                                             Where x.object_id=a.object_id And x.index_id=a.index_id And x.is_included_column=1                                             For Xml Path('')                                         ),1,1,'')                         ) As d         Where [email protected] And a.name Is Not Null     Select @[email protected]+'Alter Table '+Quotename(object_name(a.parent_object_id))+' Add Constraint '+Quotename(a.name)                 +' Foreign Key ('+b.x+') References '+Quotename(@objectname)+'('+c.x+')[email protected]         From sys.Foreign_keys As a             Outer Apply(Select x=Stuff((Select ','+Quotename(y.name )                                             From sys.Foreign_key_columns As x                                                 Inner Join sys.columns As y On y.object_id=x.parent_object_id And y.column_id=x.parent_column_id                                             Where x.constraint_object_id=a.object_id                                             For Xml Path('')                                        ),1,1,'')                         ) As b             Outer Apply(Select x=Stuff((Select ','+Quotename(y.name )                                             From sys.Foreign_key_columns As x                                                 Inner Join sys.columns As y On y.object_id=x.referenced_object_id And y.column_id=x.referenced_column_id                                             Where x.constraint_object_id=a.object_id                                             For Xml Path('')                                        ),1,1,'')                         ) As c             Where [email protected]     --执行脚本     Begin Try         Begin Tran             Exec(@sql)         Commit Tran         Print [email protected][email protected]+N' .成功! '     End Try     Begin Catch         Declare @Error nvarchar(1024)         Set @Error=ERROR_MESSAGE()         Raiserror 50001 @Error         Print [email protected][email protected]+N' .失败! '         Rollback Tran     End Catch Go Exec sp_MoveTable A ,'MyFileGroup2' --Select * From sys.filegroups  --Select * From sys.indexes /* If object_id('test2') Is Not Null     Drop Table test2 If object_id('test1') Is Not Null     Drop Table test1 Go Create Table test1 (     id int Identity(1,1) Not Null ,     x nvarchar(50),     Constraint PK_test1_id Primary Key(id Asc) ) Create nonClustered Index IX_test1_x On Test1(x Asc) Create Table test2 (     id int Identity(1,1) Not Null,     test1id int not null,     x nvarchar(50),     Constraint PK_test2_id Primary Key(id Asc),     Constraint FK_test2_test1id Foreign Key (test1id) References Test1(id) ) */

上一篇:数据库表加外键约束不成功是怎么回事呀? 40totaitai97]
下一篇:sql server 2000 Analysis manager如何操作 40分,无满意结帖,结帖人chen_guo_don]

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。