Estou tentando executar a consulta abaixo:
SELECT DB_NAME(Database_id) FROM [linked_servername].MASTER.SYS.DATABASE_MIRRORING
WHERE database_id > 4 and mirroring_role = 1
Mas estou obtendo Result como NULL significa que o nome do banco de dados é nulo.
O escopo de
DB_NAME()
é limitado à instância local. Aplica-se apenas a bancos de dados que existem no servidor em que você está executando a consulta.Em vez de usar
DB_NAME()
, você deve unirsys.databases
com quatro partes de nomenclatura, como no exemplo a seguir:Percebo que você colocou em maiúsculas partes da consulta, incluindo o
master
banco de dados, osys
esquema e adatabase_mirroring
tabela do sistema. Esses objetos existem em letras minúsculas, então você deve codificá-los em letras minúsculas. Para SQL Servers que fazem distinção entre maiúsculas e minúsculas, especificar as maiúsculas e minúsculas corretas é importante por vários motivos .Outra ocasião em que db_name() pode retornar null é quando você está lidando com o
resources
banco de dados que temdatabase_id = 32767
por exemplo: