Eu tenho uma consulta que me mostra todas as instâncias do SQL Server em um servidor:
DECLARE @GetInstances TABLE
( Value nvarchar(100),
InstanceNames nvarchar(100),
Data nvarchar(100))
Insert into @GetInstances
EXECUTE xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'SOFTWARE\Microsoft\Microsoft SQL Server',
@value_name = 'InstalledInstances'
Select [ServerName] = @@servername,InstanceNames from @GetInstances
e também tenho uma consulta que mostra as configurações de memória e o uso de uma instância específica:
SELECT [instance] = @@servername, p.*
FROM (SELECT name, [value_in_use]
FROM sys.configurations) t
PIVOT (MAX([value_in_use]) FOR name IN ([min server memory (MB)],
[min memory per query (KB)],
[max server memory (MB)],
[optimize for ad hoc workloads])) p
existe uma maneira de ter o melhor desses dois mundos - ter todas as informações de todas as minhas instâncias do SQL Server, em uma consulta?
Gostaria de evitar a necessidade de criar um servidor vinculado.
Eu não me importaria de usar o PowerShell ou qualquer outra ferramenta, desde que não precise executá-lo como administrador.
Você pode usar a excelente biblioteca de scripts Powershell do DbaTools para isso.
Você também pode fazer isso usando o SMO diretamente se tiver um nome de instância ou outra cadeia de conexão.
uma maneira que encontrei é adicionar um grupo nos servidores registrados, por exemplo SERVER_T007, e dentro desse grupo adicionar as duas instâncias - no meu caso:
em seguida, execute uma consulta no grupo registrado - os 3 da imagem abaixo.
o resultado é:
caso o link se perca, este é o nome do artigo e do autor, boa referência pois tem fotos, gostamos disso.
existem outras maneiras conforme descrito (sem imagens nem exemplos aqui )