Ver Mensaje Individual
  #35 (permalink)  
Antiguo 12/07/2012, 11:07
Avatar de lordalucardmx
lordalucardmx
 
Fecha de Ingreso: junio-2012
Ubicación: Cuernavaca
Mensajes: 38
Antigüedad: 10 años, 3 meses
Puntos: 1
Respuesta: Fragmentar Base de datos SQL Server 2008 por fechas

Ya tengo un avance (todavía no estoy muy seguro pero ahí va):

Código SQL:
Ver original
  1. --DROP PARTITION FUNCTION part_evto_perf
  2. --DROP SCHEMA EVTO_SM
  3.  
  4. -- Funciòn para particionar las 8 tablas de eventos de perturbaciòn y 7
  5. --de perfiles històricos mediante campo fecha (por ahora del 2005 hasta 2007)
  6. --pero se requiere que se "incremente" por cada semestre que vaya a transcurrir
  7. --por tiempo indefinido
  8. CREATE PARTITION FUNCTION evto_perf_pf(datetime)
  9. AS RANGE RIGHT
  10. FOR VALUES ('20050101', '20050701', '20060101', '20060701','20070101')
  11. GO
  12.  
  13. --Creo filegroups por semestre
  14. ALTER DATABASE SERVICIO_BD
  15. ADD FILEGROUP s1_2005_fg
  16. GO
  17.  
  18. ALTER DATABASE SERVICIO_BD
  19. ADD FILEGROUP s2_2005_fg
  20. GO
  21.  
  22. ALTER DATABASE SERVICIO_BD
  23. ADD FILEGROUP s1_2006_fg
  24. GO
  25.  
  26. ALTER DATABASE SERVICIO_BD
  27. ADD FILEGROUP s2_2006_fg
  28. GO
  29.  
  30. ALTER DATABASE SERVICIO_BD
  31. ADD FILEGROUP s1_2007_fg
  32. GO
  33.  
  34. ALTER DATABASE SERVICIO_BD
  35. ADD FILEGROUP s2_2007_fg
  36. GO
  37.  
  38.  
  39. --Agrego a cada archivo un filegroup
  40. ALTER DATABASE SERVICIO_BD
  41. ADD FILE(NAME = s1_2005_BD,
  42.     FILENAME = 'C:\Archivos de programa\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\s1_2005_BD.ndf')
  43. TO FILEGROUP s1_2005_fg
  44. GO
  45.  
  46. ALTER DATABASE SERVICIO_BD
  47. ADD FILE(NAME = 2S_2005_BD,
  48.     FILENAME = 'C:\Archivos de programa\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\s2_2005_BD.ndf')
  49. TO FILEGROUP s2_2005_fg
  50. GO
  51.  
  52. ALTER DATABASE SERVICIO_BD
  53. ADD FILE(NAME = 1S_2006_BD,
  54.     FILENAME = 'C:\Archivos de programa\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\s1_2006_BD.ndf')
  55. TO FILEGROUP s1_2006_fg
  56. GO
  57.  
  58. ALTER DATABASE SERVICIO_BD
  59. ADD FILE(NAME = 2S_2006_BD,
  60.     FILENAME = 'C:\Archivos de programa\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\s2_2006_BD.ndf')
  61. TO FILEGROUP s2_2006_fg
  62. GO
  63.  
  64. ALTER DATABASE SERVICIO_BD
  65. ADD FILE(NAME = 1S_2007_BD,
  66.     FILENAME = 'C:\Archivos de programa\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\s1_2007_BD.ndf')
  67. TO FILEGROUP s1_2007_fg
  68. GO
  69.  
  70. -- Filegroup exra
  71. ALTER DATABASE SERVICIO_BD
  72. ADD FILE(NAME = 2S_2007_BD,
  73.     FILENAME = 'C:\Archivos de programa\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\s2_2007_BD.ndf')
  74. TO FILEGROUP s2_2007_fg
  75. GO
  76.  
  77. -- Creo un esquema de particiòn usando un file group diferente para cada particion
  78.  
  79. CREATE PARTITION SCHEME evto_perf_ps
  80. AS PARTITION evto_perf_pf
  81. TO (s1_2005_fg, s2_2005_fg, s1_2006_fg,
  82.     s2_2006_fg, s1_2007_fg, s2_2007_fg)
  83. GO


Pero veo que tengo que crear tablas y no puedo reutilizar las que ya tengo y que ya tienen datos.

y luego encontré según como pasar los datos pero no se como (lo adapté con el campo tipo fecha):

Código SQL:
Ver original
  1. -- Mover los datos al esquema particionado
  2. CREATE UNIQUE CLUSTERED INDEX ID
  3.         ON EVTO_DESB (FECHA)
  4. WITH (DROP_EXISTING = ON, ONLINE = ON)
  5.         ON evto_perf_ps (FECHA)
  6. GO

¿Cómo hago el alter table para mis tablas que no son como las del sig. ejemplo?


Código SQL:
Ver original
  1. CREATE TABLE dbo.tblDatos
  2. (
  3. ID UNIQUEIDENTIFIER NOT NULL
  4. ,DESCRIPCION VARCHAR(200) NOT NULL
  5. ,FECHA DATETIME NOT NULL
  6. ,CONSTRAINT PK_tblDatos PRIMARY KEY NONCLUSTERED (ID, FECHA) ON psDatos(FECHA)
  7. ) ON psDatos(FECHA);

Última edición por lordalucardmx; 12/07/2012 a las 11:25