Usuário com melhor resposta
SP_WHO2 não funciona (SQL Server 2008)

Pergunta
-
Olá a todos... Estou com um sério problema aqui.
Tenho um sistema com BD Sql Server e restringo o acesso ao programa (controle de licenças) atraves da seguinte verificação:
--EXTERNAS (Terminal Server) SELECT PROGRAM_NAME, MASTER.DBO.SYSPROCESSES.DBID, NET_ADDRESS, SPID FROM ( MASTER.DBO.SYSPROCESSES INNER JOIN MASTER.DBO.SYSDATABASES ON MASTER.DBO.SYSPROCESSES.DBID = MASTER.DBO.SYSDATABASES.DBID ) WHERE MASTER.DBO.SYSDATABASES.NAME = 'NOME_DO_BANCO' AND LOGINAME = 'USUARIO_BD' --AND UPPER(PROGRAM_NAME) = 'GESTPLUS' AND UPPER(NET_LIBRARY) = 'LPC' AND CONVERT(CHAR(19), LOGIN_TIME, 120) <> CONVERT(CHAR(19), LAST_BATCH, 120) GROUP BY PROGRAM_NAME, MASTER.DBO.SYSPROCESSES.DBID, NET_ADDRESS, SPID --INTERNAS (Rede local) SELECT PROGRAM_NAME, MASTER.DBO.SYSPROCESSES.DBID, NET_ADDRESS, HOSTNAME FROM ( MASTER.DBO.SYSPROCESSES INNER JOIN MASTER.DBO.SYSDATABASES ON MASTER.DBO.SYSPROCESSES.DBID = MASTER.DBO.SYSDATABASES.DBID ) WHERE MASTER.DBO.SYSDATABASES.NAME = 'NOME_DO_BANCO' AND LOGINAME = 'USUARIO_BD' --AND UPPER(PROGRAM_NAME) = 'GESTPLUS' AND UPPER(NET_LIBRARY) <> 'LPC' GROUP BY PROGRAM_NAME, MASTER.DBO.SYSPROCESSES.DBID, NET_ADDRESS, HOSTNAME
Ela funciona perfeitamente com a maioria dos clientes, mas alguns clientes que possuem filiais em outras cidades e acessam o mesmo banco tem tido liberdade para acessar quantas vezes quizer.
O que ocorre é que as instruções acima só retornam o usuário que logou no sistema naquele momento, deixando de retornar os demais. Excemplo: Existem 20 pessoas logadas no sistema agora. Se outro usuario entrar no sistema, a função que mostar a quantidade de usuarios logados retorna apenas um registro ao invés de 21 registros...
Já tentei usar outras instruções como:
...mas não tive exito (Sempre retorna apenas a conexão criada ao rodar o select).SP_WHO SP_WHO2 SELECT * FROM sys.dm_exec_sessions
Alguém pode me ajudar com essa bomba?
- Movido Gustavo Maia Aguiar quinta-feira, 12 de agosto de 2010 18:31 (De:SQL Server - Desenvolvimento Geral)
Respostas
-
Neste cliente que vc se refere, verifique se o usuário que está rodando o select para pegar os users conectados possui direitos como SA, por exemplo, se vc rodar esse script com um usuário comum em um banco A (que não tem acesso a outros bancos) ele vai retornar somente as sessões dele mesmo.
Veja se é isto que está ocorrendo.
http://ricardomura.spaces.live.com- Marcado como Resposta admsellos segunda-feira, 6 de setembro de 2010 17:40
Todas as Respostas
-
-
Jônatas,
Eu não consegui entender o que você esta querendo fazer!!!
Você deseja limitar o acesso ou realizar um monitoramento?
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário] -
Essa insturção serve para eu saber quantos usuários estão logados no meu programa. Através da quantidade de conexões abertas, posso monitorar e restringir acesso ao sistema...
O fato é que em todos os clientes essa isntrução funciona corretamente, porém em um cliente, isso não acontece... Não sei se ele alterou alguma configuração no SQL Server dele...
-
Neste cliente que vc se refere, verifique se o usuário que está rodando o select para pegar os users conectados possui direitos como SA, por exemplo, se vc rodar esse script com um usuário comum em um banco A (que não tem acesso a outros bancos) ele vai retornar somente as sessões dele mesmo.
Veja se é isto que está ocorrendo.
http://ricardomura.spaces.live.com- Marcado como Resposta admsellos segunda-feira, 6 de setembro de 2010 17:40