Múltiplas Instâncias SQL Server

Usando o SQL Server Enterprise Edition, você pode instalar até 50 SQL Servers. Então, sim, mais de um SQL Server pode ser instalado por máquina. Nesse caso, chamamos cada instalação de “instância” e cada uma possui um nome específico. É comum escutar o termo “Instância Default”, que poderia significar o mesmo que “instância sem nome” ou “instância com nome em branco”. Exemplo:

  • SERVXYZ  -   instância default
  • SERVXYZ\INSTA  - instância nomeada “INSTA”
  • SERVXYZ\INSTB  - instância nomeada “INSTB”
  • SERVXYZ\INSTC  - instância nomeada “INSTC”

Note que múltiplas instâncias podem ser configuradas no servidor. Cada instância possui seus próprios serviços, binários, chaves de registry, etc. Em outras palavras, as instâncias são independentes. A consequencia disso é que cada instância:

  • Tem uma configuração independente
  • Deve ser associada a uma porta TCP diferente e nunca podem compartilhar a mesma porta (na mesma interface de rede da máquina)
  • Convive independentemente uma da outra e instalação/desinstalação não afetam uma a outra
  • Possui seu próprio binário e podem apresenter diferentes níveis de Service Packs e hotfixes

Alguns componentes são considerados “compartilhados” e ficam nas pastas abaixo (80, 90, 100 se referem respectivamente ao SQL Server 2000, 2005, 2008).

  • C:\Program Files\Microsoft SQL Server\80
  • C:\Program Files\Microsoft SQL Server\90
  • C:\Program Files\Microsoft SQL Server\100

Exemplo: A minha máquina possui os componentes compartilhados e duas instâncias nomeadas: SQLEXPRESS e KATMAI.

clip_image001

Em uma instância default, o nome do diretório seria somente MSSQL. Exemplo de uma instalação SQL Server 2000:

clip_image002

Note que os diretórios podem ser alterados\configurados durante a instalação inicial da instância SQL Server.

 

Referência

Instance Configuration

https://msdn.microsoft.com/en-us/library/ms143531.aspx

Locating Folders and Files (64-bit)

https://msdn.microsoft.com/en-us/library/aa274567(SQL.80).aspx

Comments

  • Anonymous
    February 24, 2011
    Olá Fabrício. Já ouvi alguns profissionais dizerem que ter mais de uma instância no mesmo servidor pode ajudar devido  limitação de existir apenas 1 tempdb por instância.Isso é mesmo verdade ? Abraço Alexandre.

  • Anonymous
    February 26, 2011
    Olá Fabrício muito bom ver você escrevendo novamente no blog. Cara, quando puder escreve algo sobre como ler minidumos. Abraço, Demétrio Silva

  • Anonymous
    February 27, 2011
    Olá Alexandre, Nunca tinha ouvido esse comentário de ter múltiplas instâncias no servidor para evitar problemas de escalabilidade com o banco de dados temporário (TEPMDB). Mas, na teoria, você está 100% correto! Cada instância possui seu próprio TEMPDB independente e isso evita o compartilhamento do espaço. Uma arquitetura mais ousada seria ter múltiplos servidores e cada um com seu próprio TEMPDB em discos locais (ou DAS). Isso evitaria uma contenção no storage (SAN). Se tiver mais comentários sobre esse assunto, não deixe de adicionar no blog. Tenho muito interesse nisso. Abraços, Fabricio

  • Anonymous
    February 27, 2011
    Demétrio, bom dia! Obrigado pelo seu comentário e é bom saber que continua seguindo o blog mesmo após longo tempo de ociosidade. Quanto ao minidump, isso é uma pendência antiga e que ainda não sei qual seria a melhor forma de falar sobre isso. Quero planejar melhor o que falar sobre isso e preciso de uma ajuda. Podemos conversar por email? Abraços, Fabricio

  • Anonymous
    February 28, 2011
    Oi Fabrício, já venho acompanhando seu blog há muito tempo e curtindo cada vez mais os seus posts. Queria compartilhar um recente problema que tive relacionado ao uso das caches stores pelo SQL Server. Será que poderia lhe mandar por email o cenário completo e assim você publicar algo em seu blog? Grande abraço e continue com os excelentes posts.

  • Anonymous
    March 01, 2011
    Claro, manda o assunto sobre Cache Stores. Ficarei mais que feliz se puder publicar no blog.

  • Anonymous
    March 02, 2011
    Oi Fabrício, Eu também fiquei interessado quando me falaram sobre isso, pois eu tenho muitos bancos em 1 instância apenas, e para piorar o servidor é 32 bits. Imagina que eu tenho 100 bancos em  uma instância. Se eu dividir isso em duas instâncias ficaria com 50 bancos compartilhando o tempdb. Além do que, se a arquitetura é 32 bits existe a limitação de 4 GB de memória sendo 2 para o Kernel sobrando "2" GB para aplicação, sem contar com memory to leave e etc. Com a opção /PAE o Windows server reconhece até 64 GB de memória se não me engano. Sendo assim posso ter 2 GB para cada instância podendo aproveitar pelo menos uns 60 GB da memória disponível e é claro que outros recursos como CPU,placa de rede  e etc também teria que ser expandido. Náo sei na prática, mas na teoria parece funcionar. Abs. Alexandre,

  • Anonymous
    March 28, 2011
    Olá Alexandre, A prática de dividir os databases em mais de uma instância é muito utlizada em ambientes de grande porte. Uma das principais razões é a que você citou, diminuir a contenção na tempdb. Abraço, Demétrio Silva

  • Anonymous
    September 23, 2011
    Em qual situação devemos utilizar mais de uma instância SQL Server 2008 em um mesmo servidor?

  • Anonymous
    October 18, 2011
    Olá Rodolfo, Ao meu ver, o principal motivo seria segurança. Com instâncias diferentes, é possível realizar uma configuração independente dos SysAdmin e dos logins. Abraços, Fabricio

  • Anonymous
    November 12, 2013
    Fabricio, estou com uma dúvida. Você sabe me responder qual o nome do servidor onde é instalada a instância do SQL?

  • Anonymous
    November 14, 2013
    O nome do servidor é igual ao Hostname em uma instalação standalone. Se for um servidor clusterizado, então ele utiliza o "Nome Virtual" (recurso do cluster). Será que entendi bem a pergunta? Abs

  • Anonymous
    April 02, 2014
    Olá Fabricio, Uma dúvida: Eu posso instalar uma instância nomeada em um nó secundário (passivo) de um cluster ativo->passivo, para aproveitar sua "ociosidade"?   Dessa forma para alguns bancos ele seria utilizado diretamente, e a instância default ficaria para os bancos que necessitam estar no cluster. Isso é possível e coerente? Grato.

  • Anonymous
    April 02, 2014
    Pode sim David - com uma restrição: você instala a instância no cluster inteiro, mas deixa ele ativo somente no lado "passivo". Assim o cluster se tornaria "ativo-ativo".  

  • Anonymous
    April 02, 2014
    Particularmente, prefiro clusters composto por 3+ nós. Dessa forma você pode deixar 2+ máquinas ativas e somente uma inativa.

  • Anonymous
    April 03, 2014
    Ok Fabricio. Muito obrigado pela resposta!

  • Anonymous
    November 25, 2014
    eu queria saber pq eu istalei o sql server 2005 ai eu desinstalei e fui instalar novamente so que não instala devido a instancia ja procurei em todo lugar mais ninguem conseguiu me ajudar como exclui a instancia pra intalar novamente o sql