O Visual Studio 2008 vem com o SQL Server 2005 Express (9). Essa versão é legal, é bem melhor que a versão de 2000 (8). Só que a versão 2008 (10) é melhor ainda. Uma das que eu mais gosto é o Intelisense no SQL Management Studio, e tem ainda um monte de outras features legais, que você pode ler no blog do Leandro Daniel.
Não sei porque a Microsoft não liberou ainda uma versão do Visual Studio 2008 empacotado já com o SQL Server 2008, e tudo com os últimos service packs. Instalei meu Windows 7, e tive que instalar o VS, instalar o SP do VS, e instalar o SP do SQL. Cansa. Cansa mais ainda porque eu não queria o SQL Server 2005. Busquei de toda forma atualizar o SQL Server 2005 para o 2008, mas não deu. Deve até ter um caminho, mas não encontrei. Melhor que perder mais 3 dias procurando é resolver de uma vez. Desinstalei o SQL Server 2005, instalei o 2008 Express, que já vem com Full Text Search e Reporting Services, algo que o 2005 também não tinha. O SQL Server Management Studio também já vem. Cool. E depois, de novo, instalei o SP1… porque não tem uma versão completa já com o SP1, só a versão básica, sem SSMS, sem RS, sem nada do que eu queria.
Essa odisséia de instalações me lembrou de algo: tenho clientes que não têm o SQL Server Express, trabalharam com a edição developer. Esta edição não usa named instances para se comunicar com o servidor, geralmente usa a instância padrão, que é só o nome da máquina, o que no meu caso era "BASSINOTE", já que minha máquina tinha esse nome. Na Windows 7 RC que estava instalado, eu tinha um SQL Server 2005 Express, e um SQL Server 2008 Developer, tinha 2 instâncias:
- A padrão, do SQL Server 2008 Developer, que eu acessava somente pelo nome da máquina: "BASSINOTE"
- A nomeada, do SQL Server 2005 Express, que eu acessava pelo nome da instância, que é padrão "SQLEXPRESS", ficando assim: "BASSINOTE\SQLEXPRESS".
Eu não podia não ter uma instância nomeada SQLEXPRESS, porque todo o ambiente de desenvolvimento assume que você tem essa instância. A string de conexão padrão para conexão de bases anexadas usa esta instância. Eu até podia mecher no machine.config, mas não ia resolver, ia ter que alterar outros lugares, e ficar atento com toda instalação. Melhor não.
Mas eu não queria instalar outra versão do SQL Server só para ter uma outra instância que respondesse no nome da instância padrão.
Atenção: Não sou especialista em SQL Server, vou descrever aqui apenas algo que fiz e funcionou para mim, então estou contando pra vocês. Não sei se essa é a melhor maneira de fazer ou se estou abrindo o cubo do Hellraiser ao alterar estas configurações. Sou MVP de C#, não de SQL Server… Se alguém tiver uma sugestão melhor, comente!
Aí entra o Sql Server Configuration Manager. Essa ferramenta, que roda via MMC, nos permite configura o SQL Server. Estava ajustando uns protocolos por lá, e percebi um item "Aliases" no treeview.
No meu caso há duas, porque estou rodando um SO de 64 bits, e ele separa as configurações dos clientes. Cliquei lá com o botão direito, e há uma opção "New Alias…":
Hmm… isso está ficando interessante. Apareceu essa tela:
Preenchi tudo. Escolhi "BASSINOTE" como nome do alias, e o protocolo named pipes, que é um protocolo "intra máquina" (para deixar no básico), e coloque como nome do server o próprio nome da máquina:
Você ainda pode escolher TCP e VIA como protocolos:
Fiz isso para os outros possíveis nomes, os nomes mais comuns, que são o ponto ".", o "(local)". Fui testar, e funcionou:
As quatro conexões são feitas à mesma instância do mesmo servidor.
Agora posso usar a instância nomeada como se fosse a padrão, o que não vai causar problemas quando eu estiver utilizando o código que está no repositório de um cliente que usa estas configurações. Muito bom!
Giovanni Bassi
Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.