Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. use master
  2. alter database [MY_DATABASE]
  3. add filegroup [B]
  4.  
  5.  
  6. alter database [MY_DATABASE]
  7. add file
  8. (
  9. NAME = N'new_logical_name01',
  10. FILENAME = N'X:final_name.mdf',
  11. SIZE = 100GB,
  12. FILEGROWTH = 1500MB
  13. )
  14. to filegroup [B]
  15.  
  16. set nocount on
  17. declare
  18. @sql nvarchar(max) = '', --dynamic sql
  19. @name varchar(100) = '', --name of table
  20. @schema varchar(100) = '', --name of schema
  21. @c1 sysname = '' --name of first column
  22.  
  23. declare test cursor for
  24. select distinct
  25. object_name(i.[object_id]) as name,
  26. s.name as s
  27. from sys.filegroups as f
  28. inner join sys.indexes as i on f.data_space_id = i.data_space_id
  29. inner join sys.all_objects as a on i.object_id = a.object_id
  30. inner join sys.tables as t on a.object_id = t.object_id
  31. inner join sys.schemas as s on t.schema_id = s.schema_id
  32. where 1=1
  33. and a.type ='U' -- object type
  34. and f.name in ('A') -- name of old filegroup
  35.  
  36. open test
  37. fetch next from test into @name, @schema
  38. while (@@FETCH_STATUS <> -1)
  39. begin
  40. set @sql = 'if exists (select * from sys.indexes where name = ''idx1_mover'' and object_id = object_id(''' + @name + ''')) drop index [' + @name + '].idx1_mover'
  41. exec sp_executesql @sql
  42. 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)
  43. set @sql = 'create clustered index idx1_mover ON [' + @schema + '].[' + @name + '] ([' + @c1 + '])
  44. with (data_compression = page)
  45. on [B]' --name of new filegroup
  46. exec sp_executesql @sql
  47. set @sql = 'drop index [' + @schema + '].[' + @name + '].idx1_mover'
  48. exec sp_executesql @sql
  49. fetch next from test into @name, @schema
  50. end
  51. close test
  52. deallocate test
  53.  
  54. dbcc shrinkfile (N'old_logical_name01' , EMPTYFILE) --logical filename of files in filegroup A
  55. dbcc shrinkfile (N'old_logical_name02' , EMPTYFILE)
  56. dbcc shrinkfile (N'old_logical_name03' , EMPTYFILE)
  57. --...
  58.  
  59. alter database [MY_DATABASE] remove file [old_logical_name01]
  60. alter database [MY_DATABASE] remove file [old_logical_name02]
  61. alter database [MY_DATABASE] remove file [old_logical_name03]
  62. --...
  63.  
  64. alter database [MY_DATABASE] remove filegroup [a]
  65.  
  66. alter database [MY_DATABASE] modify filegroup B name=A
  67.  
  68. alter database [MY_DATABASE]
  69. modify file
  70. (
  71. NAME = N'new_logical_name01',
  72. NEWNAME = N'old_logical_name01'
  73. )
  74. --...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement