Como dividir um DB em dois no SQL Server 2008?

1

No meu projeto, eu tenho um DB usado para tudo. Eu quero quebrar em dois bancos de dados. Tabelas estáticas com valores de pesquisa devem ser armazenadas em um banco de dados e outro banco de dados seria ter tabelas com dados dinâmicos. Meu problema é como eu usaria a restrição de chave estrangeira entre esses dois bancos de dados. Alguém pode me ajudar e sugerir uma maneira de proceder, melhor se eu for fornecido um exemplo para o mesmo.

Eu pensei em usar sinônimos para tabelas e restrições sobre sinônimos. mas depois fiquei sabendo que os sinônimos não poderiam ser usados para restrições.

Eu preciso manter relações entre as tabelas de ambos os DB como o problema é com a atualização, com uma nova versão eu só quero atualizar as tabelas de pesquisa e para o mesmo eu quero dividir meu banco de dados.

    
por Robin Jain 30.11.2012 / 12:11

2 respostas

5

Robin:

Se você deseja separar fisicamente os dados estáticos e voláteis, sugiro que veja o filegroups recurso. (Role para baixo até o meio da página da web para obter as informações relevantes.)

Os grupos de arquivos permitem agrupar tabelas. Isso permite que você controle sua localização física com mais facilidade (dados usados com freqüência podem ser colocados em SSDs rápidos e outros dados podem ser colocados em discos rígidos mais lentos, por exemplo), controle acesso de leitura / gravação (um grupo de arquivos pode ser sinalizado somente leitura ) e melhorar os esquemas de backup / restauração (um grupo de arquivos pode ser armazenado em backup ou restaurado). Como todas as tabelas estão no mesmo banco de dados, independentemente do grupo de arquivos, a integridade referencial declarativa (DRI, também conhecida como "chaves estrangeiras") ainda funciona.

Se você insistir em usar bancos de dados diferentes, não poderá usar chaves estrangeiras e terá que usar um método diferente. Isso significa escrever seus próprios gatilhos (ou talvez procedimentos). Escrever seu próprio código significa trabalho extra, há sempre a possibilidade de erros nesse código e os gatilhos geralmente têm um desempenho pior do que o DRI. Existem outros aspectos negativos do uso de bancos de dados diferentes, a maioria obviamente de segurança (você terá o dobro de gerenciamento) e recuperação point-in-time (é mais difícil obter consistência entre dois bancos de dados do que um banco de dados). Essas coisas podem não parecer importantes hoje, mas :

  1. É mais fácil fazer as coisas corretamente agora do que consertar as coisas mais tarde.
  2. É melhor adquirir bons hábitos.
por 30.11.2012 / 14:42
2

Deixe-me sugerir que você está sem noção e não tem ideia do que deseja.

Veja, o tamanho do servidor sql é um problema - seja em expresso quando você atinge o limite máximo de 10gb, ou em um servidor "real" quando você clica - sem ideia, talvez 10000gb ou mais.

Na maioria das vezes, sua suposição está errada - você não pode fazer nada e somente a complexidade do anúncio (chaves estrangeiras não funcionam, mas substituí-las por gatilhos) neste. Se este é dois db, então você não pode nada, se isso é dois servidores, você adiciona latência e uma tonelada de outros problemas.

Eu começaria com a suposição de que o requisito que você apresenta aqui é inválido. Por que você acha que há necessidade disso?

Eu tenho um banco de dados de quase 1000GB em casa e não há problemas com tamanho.

    
por 30.11.2012 / 12:20

Tags