No meu servidor SQL Server 2016, configurei uma auditoria de logins de usuário para a ação Login bem-sucedido e Falha no login. Aqui está o roteiro.
USE [master]
GO
CREATE SERVER AUDIT SPECIFICATION [ServerAuditSpecification-20190404-091348]
FOR SERVER AUDIT [Audit_SQL_Logins]
ADD (FAILED_LOGIN_GROUP),
ADD (SUCCESSFUL_LOGIN_GROUP)
WITH (STATE = ON)
GO
USE [master]
GO
CREATE SERVER AUDIT [Audit_SQL_Logins]
TO FILE
( FILEPATH = N'D:\SQL_Logins_Audit\'
,MAXSIZE = 20 MB
,MAX_FILES = 50
,RESERVE_DISK_SPACE = OFF
)
WITH
( QUEUE_DELAY = 1000
,ON_FAILURE = CONTINUE
,AUDIT_GUID = '77795756-1928-4ce4-85f5-e3ad2e3e22e5'
)
WHERE ([server_principal_name]<>'name1' AND [server_principal_name]<>'name2' AND ([server_principal_name]<>'name3' AND [server_principal_name]<>'name4') AND ([server_principal_name]<>'name5' AND [server_principal_name]<>'name6'))
ALTER SERVER AUDIT [Audit_SQL_Logins] WITH (STATE = ON)
GO
Nos registros de auditoria,
Eu posso ver muitas falhas com SID principal do servidor como NULL e nome como string vazia. Anteriormente, quando configurei o login, não dei nenhum filtro e, dessa vez, os logs de auditoria mostraram apenas sucesso e não houve falhas.
Não entendo o que está falhando aqui, pois o log mostra NULL .
Aqui está a captura de tela. Este é um servidor de banco de dados de produção e os usuários estão efetuando login a partir do aplicativo Web .Net. Vejo a mensagem "Ocorreu um código de erro de rede ao estabelecer uma conexão; a conexão foi fechada".
Criei exatamente a mesma auditoria e não consegui reproduzir o problema que você descreve. Quando eu faço login com um login que na verdade não existe:
E para uma senha intencionalmente errada:
Eu até tentei um nome com um grande número de espaços e tabulações iniciais, apenas para ver se o nome ficaria truncado e ficaria em branco, mas os espaços em branco iniciais seriam cortados.
É claro que eu esperaria que o SID fosse nulo no primeiro caso, porque qual SID você gostaria de mostrar para um login que não existe (e, portanto, não pode ter um SID)? E para o segundo caso, talvez porque um login não pôde ser autenticado, uma correspondência com o SID não foi feita?
Você terá que fornecer mais informações para determinar por que o nome principal do servidor não está sendo preenchido. Qual é o nome do aplicativo? O que diz a afirmação ? Qual é o cliente (endereço IP no extrato)? Você pode perguntar a essa pessoa o que ela está fazendo?