Ferramentas de Dados do SQL Server e funções de partição

16

Estou criando um cenário de carregamento de janelas deslizantes e as funções da partição mudarão seus limites com o tempo.

Criei algumas funções de partição no meu projeto de banco de dados SQL Server Data Tools (SSDT) ​​com alguns limites iniciais codificados.

No entanto, à medida que o tempo passa e os limites das funções da partição mudam, as publicações futuras do banco de dados SSDT reverterão os limites para os originais.

Existe alguma maneira de lidar com esse cenário normalmente, possivelmente desativando a publicação das funções da partição?

Tentei alterar a propriedade Build Action das funções da partição no SSDT, do padrão Buildpara None, mas o projeto falha ao criar devido a uma referência ausente nos objetos dependentes.

gonsalu
fonte
4
Eu sempre disse que a implantação baseada em diferenças é fundamentalmente interrompida. Migrações é uma metáfora de implantação tão superior !
Remus Rusanu
As 'Ignorar opções de índice' também devem ser definidas para evitar que o SSDT reconstrua seu índice particionado sempre que a implantação for acionada.

Respostas:

16

Consegui encontrar uma solução para o meu problema - espero que isso ajude outra pessoa.

Para evitar que cada publicação no banco de dados recrie a função de partição, marque a opção Ignorar esquemas de partição na caixa de diálogo Configurações avançadas de publicação ( botão Avançado ... na caixa de diálogo Publicação do banco de dados).

A partir da descrição da opção (ênfase minha):

Especifica se as diferenças nos esquemas e funções de partição devem ser ignoradas ou atualizadas quando você publica em um banco de dados.

No entanto, se você definiu um objeto particionado (tabela ou índice) com compactação de página ou linha, embora a opção Ignorar esquemas de partição não recria mais a função de partição, o objeto particionado será recriado de qualquer maneira.

Isso acontece porque o objeto particionado recebe um script com a compactação definida por partição e, como o objeto possui um número diferente de partições que o definido originalmente, o SSDT recria o objeto na publicação. Por exemplo (formatado):

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

Para que isso não aconteça, você também pode marcar a opção Ignorar opções da tabela , na mesma caixa de diálogo Configurações avançadas de publicação - lembre-se de que você estará ignorando outras opções, como ALLOW_ROW_LOCKSe ALLOW_PAGE_LOCKS( referência das opções da tabela ).

Caixa de diálogo Configurações avançadas de publicação

gonsalu
fonte
11
O Google acabou de me levar aqui. Informações impressionantes, obrigado por compartilhar.
jamiet
Observe que, se você estiver usando o diálogo semelhante nas propriedades do projeto -> página Debug, as alterações serão salvas no arquivo .sqlproj.user, MAS apenas na descarga do projeto.
Taran
3

Ai, isso não é uma boa situação. Tanto quanto eu sei, o SSDT não suporta isso. A melhor solução possível é usar um script de pré-implantação para armazenar os limites em uma tabela e alterar a função de partição usando esses valores no script pós-implantação.

jamiet
fonte
Ignore a minha resposta aqui, julgando a resposta do meu Gonsalu acima, eu estava claramente errado.
jamiet