Como você fazer upload de bancos de dados SQL Server para ambientes de hospedagem compartilhada?

StackOverflow https://stackoverflow.com/questions/245252

  •  05-07-2019
  •  | 
  •  

Pergunta

Temos um problema comum de mudar o desenvolvimento de banco de dados SQL 2005 em servidores web compartilhados em empresas de hospedagem site.

Idealmente, gostaríamos de um sistema que transfere a estrutura de banco de dados e dados como uma réplica exata.

Este seria normalmente alcançada por restaurar um backup. Mas porque eles são compartilhados servidores SQL, não podemos restaurar backups -. Nós não têm acesso à máquina real

Podemos gerar um script para criar a estrutura de banco de dados, mas, em seguida, nós não poderíamos fazer uma transferência de dados através das tarefas de itens de menu / Importação de dados porque pode violar restrições de chave estrangeira como tabelas são importadas em ordem os conflitos com o banco de dados esquema. Além disso, os índices não pode ser replicado se eles estão definidos para auto gerar.

Assim, ficamos com uma operação confusa:

  1. Criar um script no SQL 2005 que gera o banco de dados em formato SQL 2000.
  2. Execute o script para criar um banco de dados SQL 2000 no SQL 2000.
  3. Criar um script no SQL 2000 que gera a estrutura de banco de dados sem índices e chaves estrangeiras.
  4. Execute este script no servidor de produção. Agora você tem uma estrutura de banco de dados para fazer upload de dados.
  5. Use SQL 2005 para transferir os dados para o servidor de produção com as tarefas / Importar dados.
  6. Use SQL 2000 para gerar um script que cria o banco de dados com índices e chaves.
  7. Copie os comandos que geram os índices e chaves estrangeiras apenas. Estes estão localizados após os comandos de criação de tabela. Nota:. No SQL 2005, os índices e chaves estrangeiras são gerados como um e não podem ser facilmente separados
  8. Execute este script no banco de dados de produção.

Voila! O banco de dados é carregado com todos os dados e chaves / restrições no lugar. O que um confuso e sistema propenso erro.

Existe algo melhor?

Foi útil?

Solução

Scott Gu tinha escrito alguns posts sobre este tema:

Banco de Dados SQL Server Publishing Toolkit para web hosting

Outras dicas

scripts de geração são muito bem para criar os objetos de banco de dados, mas não para informações da base de dados de transporte. Por exemplo, bancos de dados específicos do cliente onde é necessário o desenvolvedor para pré-preencher alguns dados.

Uma das questões eu correr em com isto é os novos tipos MAX em SQL Server 2005 +. (Nvarchar (max), varchar (max), etc.) Claro, isso é pior quando você está realmente usando o SQL Server Express, que não permite a exportação que não seja a criação de seus próprios scripts para criar os dados.

Eu recomendaria a mudança para uma empresa de hospedagem que permite que você tenha a capacidade de backup de arquivos FTP e não requer que você use seus próprios scripts. Esse é o ponto de SQL Server, certo? Para fornecer mais ferramentas que são mais amigável de usar. Se a empresa de hospedagem tem que distância, assim como você pode mover-se para MySql por sua facilidade em despejar informações.

WebHost4Life é uma poupança de vida nesta categoria. Eles oferecem FTP para o servidor de banco de dados para fazer upload de seu arquivo de backup ou arquivos MDF e LDF para fixação! Eu estava tão chateado quando vi GoDaddy tinha a restrição semelhante que você mencionou. Sua ferramenta não me disse que era uma má importação, e eu não conseguia descobrir por que meu site estava voltando com 500 erros.

Uma outra nota: Eu não tenho certeza que é considerado mais seguro. I habilitado conexões externas no GoDaddy e conectado com Management Studio, e eu era capaz de ver cada banco de dados no servidor! Eu não podia acessá-los, mas agora tenho essa informação. Um duplo golpe é que GoDaddy requer que o nome de usuário para o DB ser o mesmo como o DB! agora tudo que você precisa fazer é senhas de spam contra as centenas de bancos de dados!

Webhost4life, por outro lado, tem apenas o seu banco de dados específico mostrado na Management Studio. E eles permitem que você escolher o seu próprio nome de banco de dados e nome de usuário, independentes um do outro. Eles só anexar a mesma id único no final dos nomes de usuário e dB, a fim de mantê-los de entrar em conflito com os outros.

Você não deve confiar em restaurar backups para copiar / transferência de bases de dados. Você precisa usar scripts - confiar em mim você vai ficar melhor para ele

.

Eu tenho usado o RedGate Comparar ferramentas com hospedagem compartilhada e funciona bem.

Banco de Dados de geração de scripts de são confuso, mas eles também têm várias vantagens que ... bem, fazer a dor mais tolerável.

Em primeiro lugar, se você tratar os scripts DB como tarefas de programação reais em si mesmos, você pode encapsular a confusão. Se você gerar um script uma vez (usando uma ferramenta de banco de dados), você pode dividir os aspectos da estrutura da tabela dos aspectos de restrição (chaves, índices, etc.). Da mesma forma, você pode exportar os dados uma vez, mas dividi-lo em dados do "sistema" que não é frequentemente alterado, mas é necessário para o funcionamento correto (coisas como impostos ou taxas de transporte, etc.), os dados de teste "que é facilmente identificável, e ' dados operacionais' que precisa ser movido a partir DB versão antiga para DB Nova versão (ordens da semana passada).

Os primeiros 3 minutos, depois de ter conseguido isso, as coisas são maravilhosa: você pode regenerar uma nova base de dados com ou sem dados de teste em poucos minutos. Infelizmente, após 3 minutos, as bases de dados estão fora de sincronização, pelo menos em termos de dados, se não tão frequentemente em termos de estrutura.

Eu pessoalmente gosto de ter a estrutura de cada tabela como um arquivo SQL separado (e é constrangimentos como um arquivo separado em um diretório separado, e de dados de teste em um arquivo, é os dados do sistema em outra, etc.). Por um lado, isso significa que vários ficheiros têm de ser tocado ao fazer uma mudança, mas por outro lado, torna-se muito mais fácil ver a granularidade do que foi alterado: está tudo bem lá nos logs de controle de versão. (Eu provavelmente poderia ser convencido de que muitos-arquivos é uma estratégia equivocada ...)

Tudo isso se baseia no pressuposto de que você tem algum mecanismo para realmente executar um script complexo que envolve muitos arquivos e não está apenas restrita a alguns painel de controle baseado na Web, que pode ser o que você está descrevendo quando você diz " que não têm acesso à máquina real ". Eu sinto que você não pode fazer desenvolvimento de software personalizado e não têm alguns tipo de acesso shell no servidor; o negócio de hospedagem é bastante competitiva que você pode certamente encontrar um anfitrião amigável-script com bastante facilidade.

Verifique se a empresa webhsoting fornece myLittleBackup Esta é definitivamente a solução mais fácil para "instalar" uma db a partir do servidor de desenvolvimento para o servidor SQL compartilhada

Resposta para os usuários SQL Server 2008.

Eu tive o mesmo problema exato como OP, mas eu estava usando SQL Server 2008 e minha empresa de hospedagem compartilhada é GoDaddy. Aqui está a solução para copiar DB + os dados para banco de dados GoDaddy ...

No Visual Studio 2010, vá para o Server Explorer (em VS Express, eu acho que é chamado explorador de banco de dados). clique direito em banco de dados e selecione Publicar para Provider ... isso abre o Assistente de publicação de banco de dados ... atravessar o assistente e ele vai criar um arquivo xxx.sql no seu computador local ...

Abra o SQL Server Management Studio e conecte ao banco de dados GoDaddy (você já deve ter criado esta via painel de controle do GoDaddy dentro de seu website) ...

Abrir janelas Explorer e localize o arquivo xxx.sql e dê um duplo clique nele. O script deve abrir no SSMS. Executar o script "no banco de dados adequada" ... pronto, feito.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top