Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use master
- alter database [MY_DATABASE]
- add filegroup [B]
- alter database [MY_DATABASE]
- add file
- (
- NAME = N'new_logical_name01',
- FILENAME = N'X:final_name.mdf',
- SIZE = 100GB,
- FILEGROWTH = 1500MB
- )
- to filegroup [B]
- set nocount on
- declare
- @sql nvarchar(max) = '', --dynamic sql
- @name varchar(100) = '', --name of table
- @schema varchar(100) = '', --name of schema
- @c1 sysname = '' --name of first column
- declare test cursor for
- select distinct
- object_name(i.[object_id]) as name,
- s.name as s
- from sys.filegroups as f
- inner join sys.indexes as i on f.data_space_id = i.data_space_id
- inner join sys.all_objects as a on i.object_id = a.object_id
- inner join sys.tables as t on a.object_id = t.object_id
- inner join sys.schemas as s on t.schema_id = s.schema_id
- where 1=1
- and a.type ='U' -- object type
- and f.name in ('A') -- name of old filegroup
- open test
- fetch next from test into @name, @schema
- while (@@FETCH_STATUS <> -1)
- begin
- set @sql = 'if exists (select * from sys.indexes where name = ''idx1_mover'' and object_id = object_id(''' + @name + ''')) drop index [' + @name + '].idx1_mover'
- exec sp_executesql @sql
- set @c1 = (select top 1 a.name from sys.columns a inner join sys.tables b on a.object_id = b.object_id and b.name = @name order by a.object_id)
- set @sql = 'create clustered index idx1_mover ON [' + @schema + '].[' + @name + '] ([' + @c1 + '])
- with (data_compression = page)
- on [B]' --name of new filegroup
- exec sp_executesql @sql
- set @sql = 'drop index [' + @schema + '].[' + @name + '].idx1_mover'
- exec sp_executesql @sql
- fetch next from test into @name, @schema
- end
- close test
- deallocate test
- dbcc shrinkfile (N'old_logical_name01' , EMPTYFILE) --logical filename of files in filegroup A
- dbcc shrinkfile (N'old_logical_name02' , EMPTYFILE)
- dbcc shrinkfile (N'old_logical_name03' , EMPTYFILE)
- --...
- alter database [MY_DATABASE] remove file [old_logical_name01]
- alter database [MY_DATABASE] remove file [old_logical_name02]
- alter database [MY_DATABASE] remove file [old_logical_name03]
- --...
- alter database [MY_DATABASE] remove filegroup [a]
- alter database [MY_DATABASE] modify filegroup B name=A
- alter database [MY_DATABASE]
- modify file
- (
- NAME = N'new_logical_name01',
- NEWNAME = N'old_logical_name01'
- )
- --...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement