Por que devo usar o Visual Studio 2010 sobre SSMS para meu desenvolvimento de banco de dados?

42

O Visual Studio 2010 apresenta projetos de banco de dados e toda uma variedade de recursos relacionados que supostamente facilitam o desenvolvimento do banco de dados. Eu uso o SQL Server Management Studio (SSMS) há muitos anos para fazer meu desenvolvimento de banco de dados sem problemas.

  • Por que devo me preocupar com o VS2010 quando o SSMS funciona para mim? O que, especificamente, faz melhor que o SSMS?
  • Mas talvez minha premissa esteja incorreta e o SSMS ainda supere o VS no desenvolvimento de banco de dados. Se sim, de que maneiras específicas isso é verdade?
Nick Chammas
fonte
2
Das respostas acumuladas até agora, suspeito que os entrevistados não estejam usando nenhuma das ferramentas de banco de dados do VS2010 da maneira pretendida.
Mark Storey-Smith
2
@ MarkStorey-Smith - Sim, e eu vou arrasar com todos na próxima semana com a minha resposta. Pelo que aprendi e usei até agora, o VS 2010 é a ferramenta para desenvolvimento de banco de dados.
Nick Chammas
Na verdade, você já tinha projetos de banco de dados nas versões anteriores do Visual Studio, mas eles estavam disponíveis apenas nas edições Premium, IIRC.
gonsalu 7/11
1
As versões anteriores eram muito diferentes.
Mark Storey-Smith
Eu uso apenas SSMS. O SSMS é totalmente capaz de fazer o que precisa ser feito. O material do nosso servidor não precisa saber o que há ...
Enviado em 24/11

Respostas:

27

Na verdade, fiquei um pouco desapontado com o VS2010, para ser sincero. Eu acho que um script de tabela de criação da velha escola e arquivos para procedimentos armazenados são mais fáceis de trabalhar. Se você precisar de gerenciamento de esquema, poderá obter o Redgate SQL Compare Pro por algumas centenas de dólares.

Se você realmente precisa de uma ferramenta de modelagem de banco de dados, o Powerdesigner ou mesmo Erwin faz um trabalho muito melhor, embora não seja particularmente barato.

Embora eu prefira o SSMS, usei os dois. Alguns prós e contras:

  • O SSMS possui uma interface de usuário que 'simplesmente funciona' bem para o desenvolvimento de SQL. Apenas criar e usar scripts de criação é muito mais conveniente do que os bastidores que o VS2010 o força a avançar. Muito, muito mais flexível (+ SSMS).

  • O VS2010 possui gerenciamento de esquema básico (ou seja, geração de script de diferença / patch) (+ VS2010). No entanto, não é tão bom e tem algumas falhas. Por exemplo, corresponde a restrições no nome. Se você tiver restrições de verificação ou padrão em uma coluna sem nomeá-las, o SQL Server gerará um nome aleatório nos bastidores. Isso confundirá o VS2010 se você instalar o script em uma máquina diferente, pois as restrições podem ter nomes diferentes. Redgate é mais barato e melhor. (+ VS2010, mas com falha).

  • O VS2010 é realmente desajeitado - você precisa ter um arquivo para cada tabela ou outro objeto de banco de dados. Essencialmente, você precisa fazer as coisas da maneira VS2010, o que é bastante complicado. (- VS2010)

  • O VS2010 também é um pouco frágil e a integração do controle de origem é esquisita. Mesmo em um banco de dados simples, cada tabela, restrição, procedimento armazenado, índice e outro objeto de banco de dados é seu próprio arquivo. Os arquivos são adicionados ao projeto o tempo todo, muito mais rápido que um projeto de programação típico com (digamos) C #. Com simultaneidade otimista, ele tende a eliminar silenciosamente arquivos do projeto, à medida que os check-ins ficam fora de sincronia. Mesmo com uma boa disciplina de equipe, o feedback da interface do usuário sobre o status é muito ruim. Isso seria um desastre em um modelo complexo. (-VS2010 - Eu consideraria quase uma falha de parada para um grande projeto).

  • O SSMS vem com o SQL Server - não pode superar o preço (+ SSMS).

  • O VS2010 ainda não possui um repositório adequado, como (digamos) PowerDesigner ou Oracle Designer. Você não pode consultar facilmente o modelo de dados sem instalá-lo em um banco de dados. (- VS2010).

No geral, eu classificaria o VS2010 em um B-. Era desajeitado em um projeto de banco de dados relativamente simples, com duas tabelas de fatos e cerca de 15 dimensões.

O maior modelo de dados que já fiz foi para um sistema de gerenciamento de processos judiciais, com cerca de 560 tabelas. Eu não recomendaria o VS2010 para um projeto desse tamanho (fiz isso no Oracle Designer). Essencialmente, está tentando ser inteligente e o paradigma não funciona muito bem. Você está melhor com a melhor ferramenta de modelagem, como o PowerDesigner, ou apenas usando os scripts de criação de tabela manualmente.

O SSMS é simples e confiável, mas manual. Você tem um controle praticamente infinito sobre como deseja gerenciar o modelo. Combine-o com um gerenciador de esquema como o Redgate SQL Compare e talvez uma ferramenta de modelagem decente como o PowerDesigner e você tenha um pacote muito melhor que o VS2010.

Resumo Não tenho certeza se poderia citar quaisquer recursos ou benefícios importantes além da (talvez) integração com soluções VS que contêm outros projetos. Se você já possui o VS2010 premium ou ultimate, você recebe uma ferramenta de desenvolvimento de banco de dados um tanto defeituosa inserida em sua cadeia de ferramentas. Ele integrará projetos de banco de dados à sua solução VS, para que você possa usá-lo para criar pelo menos scripts de implantação de sproc.

No entanto, o VS não possui uma ferramenta de modelagem, portanto, o PowerDesigner ou mesmo Erwin é melhor nesse sentido. O gerenciamento de esquema da Redgate é muito melhor e o SQL Compare Pro é bastante barato (cerca de £ 400 IIRC). O IMHO SSMS funciona muito melhor para o desenvolvimento do T-SQL, mas você certamente pode fazê-lo com o VS2010.

O VS2010 premium não é muito mais barato que uma ferramenta de modelagem de banco de dados de última geração e o VS2010 ultimate é pelo menos tão caro. À custa de forte integração com seu projeto de VS, você provavelmente poderia fazer melhor com ferramentas de terceiros.

Uma alternativa

Eu acho que não se deve esquecer muito do VS2010 sem sugerir pelo menos uma alternativa e descrever seus prós e contras. Para os propósitos disso, assumirei um grande projeto. Embora eu principalmente trabalhe com C / P atualmente, participei de um projeto de mais de 100 funcionários, onde fiz o modelo de dados (e algum trabalho de desenvolvimento) e alguns outros na faixa de 10 funcionários, onde trabalhei principalmente como analista ou desenvolvedor. Atualmente, trabalho principalmente em sistemas de data warehouse, mas os projetos maiores eram principalmente aplicativos. Com base nas minhas experiências com várias ferramentas, aqui estão algumas sugestões para uma cadeia de ferramentas alternativa:

  • VS2010 profissional ou superior. Você pode ou não querer usar os recursos de gerenciamento de projetos premium ou ultimate.
  • Subversion, AnkhSVN e TortoiseSVN - Melhor que o TFS em qualquer dia e funciona bem com o VS. Também é bastante viável cultivar repositórios locais para fluxos de trabalho de desenvolvimento simultâneos.
  • SSMS para desenvolvimento T-SQL - Gerenciamento de projetos e integração de SC não tão bons, mas funcionam bem no trabalho de desenvolvimento de banco de dados.
  • Projeto de banco de dados do VS2010 para rastrear arquivos sproc - um pouco desajeitado se você estiver usando SSMS, mas funciona bem. Também irá gerar scripts de implantação.
  • PowerDesigner - Melhor na modelagem de um banco de dados e no gerenciamento de itens de esquema de banco de dados. Ele também faz UML se você quiser entrar muito no MDA. Se você deseja direcionar seu design de banco de dados a partir de um modelo de objeto, considere o Sparx EA. Ele faz o melhor trabalho do Meta CASE (meta-modelo extensível) de qualquer ferramenta CASE que eu já tenha visto, embora sua modelagem de banco de dados deixe algo a desejar.
  • SQL Compare pro - use isso para gerar scripts de correção de banco de dados ou para testar scripts de correção manuais (consulte 1 abaixo).
  • Framemaker - Recursos de groupware muito mais estáveis ​​e melhores que o Word, se você tiver vários analistas trabalhando em uma especificação. Ele também suporta inclusão condicional, para que você possa ter versões com versões de uma especificação com as alterações WIP ocultas. O MIF e o MML facilitam bastante a integração de documentos de API e dicionários de dados nos documentos de especificação. É bastante útil fazer isso, pois você pode fazer uma referência cruzada nas especificações. As âncoras de etiqueta textual tornam as referências cruzadas estáveis ​​nas reimportações. Você também pode usar o TCS para criar uma fonte única do documento para saída em PDF, HTML e CHM.
  • Rastreador de problemas de código aberto - Muitos bons de código aberto (por exemplo, TRAC, Bugzilla para citar alguns que eu já usei). Os de código aberto são mais fáceis de modificar ou integrar em um fluxo de trabalho personalizado e você não pode superar o preço.
  • NUnit ou outras ferramentas de teste - quaisquer que sejam as ferramentas de teste automatizadas mais adequadas aos seus requisitos.
  • Qualquer coisa, exceto o projeto MS - Considerado prejudicial. O projeto MS é muito introspectivo e força os planos do projeto a um modelo que não representa efetivamente incerteza, risco ou dependência de partes interessadas ou de terceiros (veja 2 abaixo).

Prós: Melhor modelagem de banco de dados e gerenciamento de esquema que o VS2010, melhor sistema de controle de versão, mais fácil de personalizar o fluxo de trabalho de construção e projeto, melhor gerenciamento de especificações e documentação.

Contras: Mais esforço para integrar ferramentas, integração limitada ao banco de dados no processo de criação.

Pressupostos: assume que o controle do processo de alteração / liberação é mais importante do que o gerenciamento de liberação automatizado ou totalmente integrado para esquemas de banco de dados. Também pressupõe que o gerenciamento automatizado do esquema de banco de dados não seja 100% confiável.

Não é de alta tecnologia ou está bem integrado, mas para um projeto complexo você provavelmente está mais interessado em controle do que em recursos automatizados atraentes. Eu diria que você está melhor com um conjunto das melhores ferramentas de criação e qualquer compilação caseira e scripts de teste necessários para integrá-los. Apenas tente manter a compilação (a) relativamente simples de entender e (b) totalmente automatizada.

  1. Controle de qualidade em patches de banco de dados. Em um esquema grande, convém ter um processo de correção manual para sistemas ativos, principalmente se as correções envolverem migração de dados. Por exemplo, pode ser desejável ter scripts de rollforward e rollback para suportar o backup de uma alteração, se necessário. Nesse caso, você desejará ter um recurso para testar se o patch realmente funciona corretamente. Se você gerenciar o esquema do banco de dados em um repositório, poderá testar os scripts configurando antes dos bancos de dados e gerando um banco de dados de referência a partir do repositório. A execução do script de correção no banco de dados anterior deve sincronizá-lo com o modelo de repositório. Uma ferramenta de comparação de esquema pode ser usada para testar isso.

  2. Ultimamente, tenho feito muito mais trabalho de data warehouse e integração do que o desenvolvimento de aplicativos sob medida, por isso encontro isso com mais frequência do que uma equipe de desenvolvimento na maioria dos casos. No entanto, as ferramentas e metodologias de gerenciamento de projetos fazem um trabalho muito ruim no gerenciamento de partes interessadas externas. Em um projeto de integração como um data warehouse, eu realmente quero ver uma ferramenta de gerenciamento de projetos que realmente empurre dependências externas (ou seja, aquelas que eu não controlo) em face do gerenciamento de programas. Em qualquer projeto de integração não trivial, as dependências externas são de longe os maiores impulsionadores do tempo perdido.

ConcernedOfTunbridgeWells
fonte
Obrigado por atualizar sua resposta com todos esses detalhes. É muito mais valioso agora.
Nick Chammas
2
Discordo de um arquivo por objeto que é complicado. Não é o caminho do VS2010, é o controle de origem 101. Você não define várias classes de C # em um único arquivo, não é?
Mark Storey-Smith
2
Honestamente, eu não sigo. Em primeiro lugar, as ferramentas gerenciam esses arquivos para você, não adicionando uma sobrecarga à minha produtividade. Em segundo lugar, tabelas, chaves, índices e restrições são separados porque a) são objetos separados, lógica e fisicamente; b) você os manipula isoladamente, por exemplo, eliminando e recriando índices como parte de um refator que envolve a movimentação de dados.
Mark Storey-Smith
1
Declarações abrangentes como 'as ferramentas gerenciam os arquivos para você' não são muito úteis, pois minha observação é que elas claramente não são - pelo menos não de maneira confiável. O VS2010 pode funcionar bem para um único usuário; não funcionou muito bem para uma equipe. Minha experiência é que um parceiro de ouro da MS teve problemas para gerenciar um simples mercado de dados contábeis com isso. Não eram as pessoas.
ConcernedOfTunbridgeWells
2
@ConcernedOfTunbridgeWells, por favor, não veja meus comentários como antagônicos ou argumentativos de forma alguma, essa não é minha intenção. Estou muito interessado em saber por que o VS2010 não está sendo adotado de maneira mais ampla, pois geralmente defendo que as equipes o explorem. Se você tiver tempo para discutir mais detalhadamente , ficaria interessado em ouvir seus pensamentos.
Mark Storey-Smith
19

Venho estudando como estruturar uma resposta para essa pergunta desde que ela foi publicada originalmente. Isso é difícil, pois o VS2010 não se refere à descrição dos recursos e benefícios da ferramenta. Trata-se de convencer o leitor a fazer uma mudança fundamental em sua abordagem ao desenvolvimento de banco de dados. Díficil.

Há respostas para essa pergunta de profissionais experientes em bancos de dados, com um mix de segundo plano abrangendo DBA, developer / dba e OLTP e data warehousing. Não é viável abordar isso para todas as facetas do desenvolvimento de banco de dados de uma só vez; portanto, tentarei defender um cenário específico.

Se o seu projeto se encaixa nesses critérios, acho que há um argumento convincente para o VS2010:

  • Sua equipe está usando o VS2010 para desenvolvimento de aplicativos.
  • Sua equipe está usando o TFS para controle de origem e gerenciamento de compilação.
  • Seu banco de dados é SQL Server.
  • Sua equipe já possui ou está interessada em testes automatizados de VS.

Se você estiver avaliando o VS2010 para desenvolvimento de banco de dados, sua Bíblia será o Guia de Banco de Dados do Visual Studio do Visual Studio ALM Rangers . Quaisquer citações a seguir que não tenham referências serão deste documento.

Lá vamos nós então ...

Por que o processo de desenvolvimento de banco de dados é diferente do desenvolvimento de aplicativos?

Dados. Se não fosse por esses dados incômodos, o desenvolvimento do banco de dados seria um fracasso. Poderíamos simplesmente soltar tudo em cada versão e esquecer esse problemático gerenciamento de mudanças.

A existência de dados complica o processo de alteração do banco de dados porque os dados são frequentemente migrados, transformados ou recarregados quando as alterações são introduzidas pelos esforços de desenvolvimento de aplicativos que afetam a forma das tabelas ou outros esquemas de dados do banco de dados. Durante esse processo de mudança, os dados de qualidade da produção e o estado operacional devem ser protegidos contra mudanças que possam comprometer sua integridade, valor e utilidade para a organização.

O que há de errado com o SSMS?

É chamado de SQL Server Management Studio por um motivo. Como ferramenta independente, é impraticável gerenciar seus esforços de desenvolvimento se você seguir as práticas recomendadas aceitas.

Somente com scripts, para aplicar significativamente práticas de controle de origem estabelecidas ao seu desenvolvimento, você terá que manter as duas definições de objeto (por exemplo, um script CREATE TABLE) E alterar os scripts (por exemplo, ALTER TABLE) e trabalhar duro para garantir que eles permaneçam sincronizados.

A cadeia de versões para alterações em uma tabela fica muito tonta rapidamente. Um exemplo muito simplista:

-- Version 1
CREATE TABLE dbo.Widget (WidgetId INT, Name VARCHAR(20))

-- Version 2
CREATE TABLE dbo.Widget (WidgetId INT, Name VARCHAR(20), Description VARCHAR(50))

-- Version 3
CREATE TABLE dbo.Widget (WidgetId INT, Name VARCHAR(20), Description VARCHAR(100))

Na versão 3, o script de alteração do banco de dados contém:

ALTER TABLE dbo.Widget ADD Description VARCHAR(50)
ALTER TABLE dbo.Widget ALTER COLUMN Description VARCHAR(100)

Se a versão ao vivo desse banco de dados for a versão 1 e nosso próximo lançamento for a versão 3, o script abaixo seria tudo o que era necessário, mas as duas instruções ALTER serão executadas.

ALTER TABLE dbo.Widget ADD Description VARCHAR(100)

Os sprints de 5 anos de 4 semanas somam alguns scripts divertidos da versão e requerem manuseio adicional para minimizar o impacto no tempo de implantação.

Então, há algo errado com o SSMS? Não, é bom para o que é bom, administrar e gerenciar o SQL Server. O que ele nem finge fazer é ajudar um desenvolvedor de banco de dados na (às vezes) tarefa muito complexa de gerenciar mudanças.


Se você não puder criar todas as versões do banco de dados a partir da origem e atualizar para qualquer versão futura, seu controle de origem será interrompido. Se você não acha, pergunte a Eric Sink .


E o SSMS + <- inserir ferramenta de comparação de esquema ->?

Este é definitivamente um passo na direção certa e tira grande parte do esforço manual necessário para manter os scripts. Mas (e é um grande mas), normalmente há etapas manuais envolvidas.

As populares ferramentas de comparação de esquema podem ser totalmente automatizadas e integradas ao processo de construção. No entanto, na minha experiência, a prática mais comum é que uma comparação seja executada manualmente, os scripts resultantes oculares, registrados no controle de origem e depois executados manualmente para implantar. Não é bom.

Sempre que seres humanos falíveis precisam se envolver no processo de construção ou implantação, apresentamos riscos e tornamos o processo repetitivo.

Se você e sua equipe estão entre os poucos que têm comparação e implantação de esquema totalmente automatizadas, vamos começar! Vocês são os mais propensos a estar abertos aos benefícios que o VS2010 tem a oferecer como:

  • Você já aceitou que as etapas manuais são perigosas.
  • Você vê o valor da automação.
  • Você está disposto a investir o tempo necessário para fazê-lo funcionar.

Se você não puder criar uma construção em uma única etapa ou implantar em uma única etapa, seu processo de desenvolvimento e implantação será interrompido. Se você não acha, pergunte a Joel Spolsky .


Por que VS2010?

A pergunta que o @NickChammas colocou está procurando recursos matadores que demonstram por que o VS2010 é um divisor de águas para o desenvolvimento de bancos de dados. Eu não acho que posso argumentar com base nisso.

Talvez comicamente, onde outros veem falhas nessa ferramenta, vejo fortes razões para adoção:

  • Você terá que mudar sua abordagem.
  • Você e sua equipe serão forçados a trabalhar de maneira diferente.
  • Você terá que avaliar o impacto de cada alteração, em detalhes, em detalhes.
  • Você será orientado a tornar todas as alterações idempotentes .

Se você é o único DBA em um projeto, gerenciando todas as alterações no banco de dados, esse raciocínio deve parecer ridículo, beirando o absurdo. Se, no entanto, você acha que o @BrentOzar tem razão e uma das novas regras é que Todo mundo é o DBA , você precisará controlar as alterações no banco de dados de forma que todos os desenvolvedores da equipe possam trabalhar.

A adoção de projetos de banco de dados pode exigir uma mudança mental ( é difícil quebrar os velhos hábitos ) para alguns desenvolvedores ou pelo menos uma mudança no processo ou nos fluxos de trabalho. Os desenvolvedores que desenvolveram aplicativos de banco de dados nos quais o banco de dados de produção representa a versão atual do banco de dados precisarão adotar uma abordagem baseada no código-fonte, onde o código-fonte se tornará o veículo no qual as alterações são feitas nos bancos de dados . Nos Projetos de Banco de Dados do Visual Studio, o projeto e o código-fonte são a "Uma Versão da Verdade" para o esquema do banco de dados e são gerenciados usando fluxos de trabalho do SCM que provavelmente já estão sendo usados ​​pelo desenvolvedor ou pela organização para outras partes da pilha de aplicativos. Para os dados, o banco de dados de produção permanece como "Uma Versão da Verdade", como deveria ser.

Chegamos à mudança fundamental necessária para adotar com sucesso a abordagem VS2010 ao desenvolvimento de banco de dados ...

Trate seu banco de dados como código

Não é mais necessário alterar o banco de dados ativo. Toda mudança de banco de dados seguirá o mesmo padrão que uma mudança de aplicativo. Modifique a fonte, crie, implante. Esta não é uma mudança temporária de direção da Microsoft, é o futuro do SQL Server . O banco de dados como código chegou para ficar.

O desenvolvedor do banco de dados define a forma do objeto para a versão do aplicativo, não como alterar o objeto existente no mecanismo de banco de dados para a forma desejada. Você pode estar se perguntando: como isso é implantado em um banco de dados que já contém a tabela de clientes? É aqui que o mecanismo de implantação entra em cena. Como mencionado anteriormente, o mecanismo de implementação pegará a versão compilada do seu esquema e a comparará com um destino de implantação do banco de dados. O mecanismo de diferenciação produzirá os scripts necessários para atualizar o esquema de destino para corresponder à versão que você está implantando no projeto.

Sim, existem outras ferramentas que seguem um padrão semelhante e, para projetos fora das restrições que coloquei em minha resposta, elas valem a mesma consideração. Mas, se você estiver trabalhando com o ALM do Visual Studio e do Team Foundation Server, não acho que eles possam competir.

O que há de errado com os projetos de banco de dados do VS2010?

Edit: Então, qual é o seu ponto, então?

O @AndrewBickerton mencionou em um comentário que não respondi à pergunta original, então tentarei resumir "Por que devo usar o Visual Studio 2010 sobre SSMS para o desenvolvimento do meu banco de dados?" Aqui.

  • O SSMS não é uma ferramenta de desenvolvimento de banco de dados. Sim, você pode desenvolver o TSQL com SSMS, mas ele não fornece os recursos avançados do IDE do VS2010.
  • O VS2010 fornece uma estrutura para tratar seu banco de dados como código.
  • O VS2010 traz análise de código estático para o código do banco de dados.
  • O VS2010 fornece as ferramentas para automatizar completamente o ciclo de construção, implantação e teste.
  • O SQL2012 e o Visual Studio vNext ampliam os recursos dos projetos de banco de dados. Familiarize-se com o VS2010 agora e você tem vantagem sobre as ferramentas de desenvolvimento de banco de dados da próxima geração.
Mark Storey-Smith
fonte
Resposta meio útil com algumas advertências: 1) Você perdeu um critério "Você está desenvolvendo aplicativos independentes que são enviados aos sites clientes (ou seja: existem várias cópias do mesmo banco de dados nos novos e vazios criadores) / vendido o tempo todo) "2) Você respondeu por que devemos tratar um banco de dados como código e gerenciar desenvolver, criar, implantar ciclos (com o qual eu já concordo). Não vejo uma razão convincente na sua resposta sobre por que devemos usar o VS2010 como o mecanismo para alcançar isso. +2 (resposta ponderada) e -1 (não responder a pergunta real)
Andrew Bickerton
2
Qual "IDE rico" você precisa para um script SQL?
gbn 29/11
1
Os benefícios dos ciclos automatizados de construção, implantação e teste são vistos no downstream. A parte automatizada de uma implantação ao vivo eu limitaria a ser "hands-off", ou seja, sem exigir etapas manuais.
Mark Storey-Smith
1
Além disso, seus argumentos para integração têm algum mérito. Quão bem ele funciona no caso geral? Eu tive problemas com isso, mas ouso dizer que isso pode funcionar.
ConcernedOfTunbridgeWells
2
@ Nick eu vou fazer isso para você :-)
Jack Douglas
7

O VS pode parecer ótimo se você não conhece o SSMS ou usou ferramentas de terceiros. As lacunas no VS se destacam se você usar as ferramentas Red Gate para comparação de esquemas etc. E também os plug-ins gratuitos do SSMS.

Os bits de controle da fonte são enganosos: o que está no banco de dados de produção é sua cópia de referência. Não é o que o desenvolvedor está usando. Vejo

gbn
fonte
1
Eu teria que concordar com isso - você pode fazer o design / desenvolvimento de banco de dados e o gerenciamento de esquema com o VS2010, mas existem cadeias de ferramentas de terceiros que fazem dessa maneira, muito melhor.
ConcernedOfTunbridgeWells
1
Por que você levaria a produção como sua cópia de referência? Eu acho que é uma prática ruim e provavelmente também um sinal de que seu controle de origem está quebrado. Por que o código do banco de dados não deveria pertencer ao ciclo de vida do desenvolvimento como todo o resto?
21411 Nick Chammas
@NickChammas: quero dizer uma cópia restaurada da produção. Na minha loja atual, o que está no controle de origem não corresponde ao banco de dados ativo. No meu último, semelhante para outras equipes. O que é implantado por meio de um script de mudança não é o que os desenvolvedores estão trabalhando ...
gbn
6

Eu uso o Visual Studio extensivamente (bem, BIDS) para design de relatórios SSRS e pacotes SSIS. Eu não poderia me sair muito bem, se é que havia, no Management Studio. O Visual Studio é um ambiente de desenvolvimento muito mais completo e integrado e também se conecta aos sistemas de controle de origem. E isso tudo se reflete no preço!

Peter Schofield
fonte
6

Para ser sincero, meu voto vai direto para o SQL Server Management Studio para design, desenvolvimento e administração (obviamente) de banco de dados. É apenas mais fácil digitar:

create table newTable
(
    someId int identity(1, 1) not null primary key clustered,
    ...... you get the idea
)

Depois clique nos lugares certos. O SSMS é um ótimo layout e uma explosão para trabalhar. E sou desenvolvedor de software .NET por natureza. Mas, quando se trata de design e codificação de banco de dados, escolho o SSMS 11 vezes em 10.

Thomas Stringer
fonte
No Visual Studio, você digita a DDL da tabela exatamente da mesma maneira. Você está pensando em outra coisa?
quer
1
@ Nick Eu provavelmente escrevi isso errado. Eu sei que você pode fazer isso no VS, mas o meu ponto é que é bom ter uma ferramenta dedicada para essa tarefa específica (e grande) em mãos. Definitivamente, sou uma fera de hábito e tornei o SSMS meu hábito. :)
Thomas Stringer
2
Sério? Os recursos da solução / projeto do SSMS parecem ter sido adicionados por um estagiário duas semanas antes do lançamento.
Mark Storey-Smith
1
@ MarkStorey-Smith é a pergunta então sobre como o SSMS realmente não tem suporte a projeto / solução e isso é importante para permitir que as equipes trabalhem bem em um IDE em geral.
jcolebrand
3
Um exemplo seria que o SSMS é uma ferramenta de administração de banco de dados, o VS2010 é uma ferramenta de desenvolvimento de banco de dados.
Mark Storey-Smith
5

Não há práticas recomendadas, mas com o projeto de banco de dados do VS 2010 e o controlador de código-fonte (VSS 2010, Subversion etc.), você pode fazer a versão do seu banco de dados.

Eu recomendo que você primeiro projete seu banco de dados diretamente no SSMS. Depois que seu banco de dados estiver quase pronto, importe-o para um projeto de banco de dados do VS 2010. Depois que a importação estiver concluída, você sempre deve adicionar um novo script ao seu projeto de banco de dados para acompanhar todas as modificações. Você pode usar o recurso de comparação do projeto de banco de dados para obter todas as alterações do servidor de desenvolvimento e importar todos esses scripts diretamente para o seu projeto. Agora você só precisa "confirmar" sua alteração no seu controlador de código-fonte.

Com esse método, você pode ter um banco de dados com versão. Você pode identificar a versão de cada modificação e reverter suas alterações.

Esta não é a única vantagem. Com esse tipo de projeto, você pode comparar qualquer banco de dados ao seu projeto para criar um script das alterações e, com o prompt de comando do SQL PowerShell, pode atualizar todos os seus bancos de dados com o mesmo script: esse script é um esquema XML do seu banco de dados. Ele executará apenas os comandos necessários para atualizar seus bancos de dados. Você também tem a possibilidade de fazer um teste de unidade no seu banco de dados. Um outro bom artigo para o projeto de banco de dados está disponível aqui . Com o recurso de implantação, você pode ter pré-script e pós-script. Com esses scripts, você pode validar ou inserir dados nas tabelas do sistema.

Aqui está um bom procedimento passo a passo para o projeto de banco de dados.

Nico
fonte
4
Não é assim que o desenvolvimento do banco de dados no VS2010 deve ser feito, você parece ter perdido o objetivo. 1) Por que um mundo você projetaria um banco de dados greenfield no SSMS e depois importaria para o VS? 2) Você não precisa "sempre adicionar novo script ao seu projeto de banco de dados" para acompanhar as alterações. 3) Os scripts não são um "esquema xml" do seu banco de dados.
Mark Storey-Smith
Você já tentou um projeto de banco de dados? 1 - Como você pode importar seu banco de dados apenas uma vez, se não quiser fazer o script, faça o máximo possível no SSMS para o primeiro rascunho do banco de dados. 2- Você está certo, pode acompanhar as alterações com a ferramenta comparadora do VS2010 e o VS2010 irá gerá-lo para você. 3- Experimente o projeto de banco de dados, quando você implantar seu projeto de banco de dados, obterá um esquema XML do seu banco de dados para atualizar seus bancos de dados de produção.
Nico
2
Sim, desde as versões iniciais e mais dolorosas . Você realmente importaria uma vez, mas sincronizou muitos (não que você precisaria fazê-lo, a menos que continue trabalhando fora do ambiente). Uma descrição mais precisa do que você está chamando de script 'Esquema XML' é que as ferramentas mantêm um metamodelo baseado em xml do banco de dados, usado pela ferramenta de implantação de linha de comando para criar os comandos necessários para atualizar um banco de dados de destino .
Mark Storey-Smith
2

Eu uso o SSMS mais do que o VS2010 porque ele existe quando instalo o SQL Server. Essa é provavelmente a coisa mais importante porque o SSMS é usado mais do que o VS2010, IMHO.

Também descobri que fornecedores como o Red-Gate estão lançando ferramentas que se integram ao SSMS e não necessariamente ao VS2010. Isso pode ser positivo, pois permite melhorar o SSMS onde a Microsoft não possui. Um exemplo disso é o SQL Source Control da Red-Gate, que é um complemento do SSMS que permite conectar o SSMS ao sistema de controle de origem da sua empresa, seja o Visual Team Foundation ou o que você possui. O VS2010 possui esse recurso, mas, comparado ao preço da ferramenta da Reg-Gate, economizei muito dinheiro sem ter que comprar o VS2010.

Eu acho que, no geral, tudo se resume à preferência, você trabalha com o que lhe agrada. Se você está treinando uma nova pessoa e treinando-a no VS2010, isso se tornará a preferência deles, porque eles sabem como lidar com isso.

Se você começou a jogar com o SQL Server 2012, pode ter notado que o SSMS está começando a se maquiar do VS2010 lenta mas seguramente. Por fim, talvez você não consiga perceber a diferença entre eles.

Shawn Melton
fonte