Estava precisando rodar um script em uma base de dados, e por acaso era uma User Instance, e não uma base padrão do SQL Server. Vocês se lembram o que é uma user instance, certo? É uma base que fica em um arquivo MDF solitário, que não está disponível através de uma conexão padrão do SQL. Ela deve ser anexada por um código .Net. São muito comuns em projeto web, principalmente de testes, e era este mesmo esse o caso. Eu tinha uma instância de usuário e precisava rodar um script:
Pois bem. Sapequei o Server Explorer do Visual Studio, achei a base, e selecionei "New Query"
Inseri o script. Foi pau atrás de pau. Pensei "Não é possível! Não dá para rodar scripts em user instances?" Dá. Veja só como:
Abra o SQL Management Studio ou a ferramenta que você achar melhor (não sendo o VS…). Conecte como admin em alguma base qualquer, pode até ser a master. Rode a seguinte query:
SELECT owning_principal_name, instance_pipe_name
FROM sys.dm_os_child_instances
Vai aparecer o seguinte nos resultados:
owning_principal_name | instance_pipe_name |
<Maquina>\<Usuario> | \\.\pipe\C1377ECE-A57A-48\tsql\query |
Essa string em instance_pipe_name é mágica. Coloque ela na string de conexão e voilà. Você está conectado:
Dêem uma olhada. A conexão aberta possui uma base de dados com um nome estranho. Essa é nossa base.
Atente que você pode ter problemas de conexão (por padrão terá). Isso pode acontecer porque o servidor não aceita conexões remotas. Para resolver, abra o surface area configuration (disponível no Start Menu), selecione "Service Area configuration for services and Connections" e ajuste para aceitar TCP e Named Pipes:
A partir daí é só rodar os scripts. Mais fácil impossível. Have fun!
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.