Herramientas de datos de SQL Server y funciones de partición


16

Estoy creando un escenario de carga de ventana deslizante y las funciones de partición cambiarán sus límites a lo largo del tiempo.

He creado algunas funciones de partición en mi proyecto de base de datos de SQL Server Data Tools (SSDT) ​​con algunos límites iniciales codificados.

Sin embargo, a medida que pasa el tiempo y cambian los límites de las funciones de partición, las futuras publicaciones de la base de datos SSDT revertirán los límites a los originales.

¿Hay alguna forma de manejar este escenario con gracia, posiblemente deshabilitando la publicación de las funciones de partición?

Intenté cambiar la propiedad Build Action de las funciones de partición en SSDT, de la predeterminada Build, a None, pero luego el proyecto no se puede construir debido a una referencia faltante en los objetos dependientes.


44
Siempre dije que la implementación basada en diferencias está fundamentalmente rota. ¡Las migraciones son una metáfora de despliegue tan inmensamente superior !
Remus Rusanu

Las 'Opciones de ignorar índice' también deben configurarse para evitar que SSDT reconstruya su índice particionado cada vez que se active la implementación.

Respuestas:


16

Pude encontrar una solución a mi problema, espero que esto ayude a alguien más.

Para evitar que cada publicación de la base de datos vuelva a crear la función de partición, puede marcar la opción Ignorar esquemas de partición en el cuadro de diálogo Configuración de publicación avanzada ( botón Avanzado ... en el cuadro de diálogo Publicar base de datos).

De la descripción de la opción (énfasis mío):

Especifica si las diferencias en los esquemas y funciones de partición deben ignorarse o actualizarse cuando publica en una base de datos.

Sin embargo, si ha definido un objeto particionado (tabla o índice) con compresión de página o fila, aunque la opción Ignorar esquemas de partición ya no recrea la función de partición, el objeto particionado se volverá a crear de todos modos.

Esto sucede porque el objeto particionado se crea con una secuencia de comandos con la compresión definida por partición , y dado que el objeto tiene un número diferente de particiones de lo que se definió originalmente, SSDT recrea el objeto en la publicación. Por ejemplo (formateado):

WITH ( DATA_COMPRESSION = PAGE ON PARTITIONS (1)
     , DATA_COMPRESSION = PAGE ON PARTITIONS (2)
     , ...

Para que esto no suceda, también puede marcar la opción Ignorar opciones de tabla , en el mismo cuadro de diálogo Configuración de publicación avanzada , solo tenga en cuenta que ignorará otras opciones, como ALLOW_ROW_LOCKSy ALLOW_PAGE_LOCKS( referencia de las opciones de la tabla ).

Cuadro de diálogo Configuración avanzada de publicación


1
Google me acaba de llevar aquí. Impresionante información, gracias por compartir.
jamiet 05 de

Tenga en cuenta que si está utilizando un cuadro de diálogo similar en las propiedades del proyecto -> Página de depuración, los cambios se guardarán en el archivo .sqlproj.user, PERO solo en la descarga del proyecto.
Taran

3

Ouch, esa no es una buena situación. Hasta donde sé, SSDT no es compatible con esto. La mejor solución que se me ocurre es usar una secuencia de comandos previa a la implementación para almacenar los límites en una tabla y luego alterar la función de partición utilizando esos valores en la secuencia de comandos posterior a la implementación.


Ignora mi respuesta aquí, juzgando la respuesta de mi Gonsalu arriba, estaba claramente equivocado.
jamiet 05 de
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.