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?
tools
ssms
visual-studio
visual-studio-2010
Nick Chammas
fonte
fonte
Respostas:
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:
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.
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.
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.
fonte
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:
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.
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:
Na versão 3, o script de alteração do banco de dados contém:
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.
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:
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:
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.
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.
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.
fonte
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
fonte
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!
fonte
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:
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.
fonte
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.
fonte
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.
fonte