none
Controle de Licenças SQL Server RRS feed

  • Pergunta

  • Bom dia a todos

    Atualmente tenho o SQL Server 2005 Enterprise SP4 licenciado por CAL usuário, preciso saber qual meu pico de utilização das licenças CAL? Como posso realizar esta conferencia utilizando o próprio SQL Server?

    Os sistemas de minha empresa (ERP, web, smartphone, BI) acessam meus bancos de dados utilizando um único usuário, ou seja, um usuário com várias conexões.

    Grato pela atenção

    Filipe Quintieri

    segunda-feira, 25 de março de 2013 12:34

Respostas

  • Filipe,

    É exatamente isso, não é possivel afirmar que o numero de conexões no SQL = Numero de usuarios na aplicação, tudo depende de como tudo foi programado. Claro, talvez com este parametro voce tenha um cheiro, mas eu não colocaria esta metrica como 100% real mas ainda sim utilizaria como um parametro para a analise.

    Para fazer isso basta deixar um performance monitor rodando com o numero de conexões ativas. http://www.brentozar.com/archive/2006/12/dba-101-using-perfmon-for-sql-performance-tuning/


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 25 de março de 2013 14:15
    Moderador
  • Filipe,

    Veja se estes Scripts não poderiam ajudar:

    SELECT  ec.client_net_address, 
                  es.[program_name],
                  es.[host_name], 
                  es.login_name,
                  COUNT(ec.session_id) AS [connection count]
    FROM sys.dm_exec_sessions AS es INNER JOIN sys.dm_exec_connections AS ec
                                                               ON es.session_id = ec.session_id
    GROUP BY ec.client_net_address, 
                      es.[program_name],
                      es.[host_name], 
                      es.login_name
    ORDER BY ec.client_net_address,  es.[program_name];

    SELECT sess.session_id, 
                sess.login_time, 
                sess.original_login_name, 
                sess.login_name, 
                sess.host_name, 
                sess.program_name 
     FROM sys.dm_exec_sessions sess Inner JOIN sys.dm_exec_connections conn 
                                                               ON sess.session_id = conn.session_id
    WHERE program_name = 'Microsoft SQL Server Management Studio'


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Filipe Quintieri segunda-feira, 25 de março de 2013 17:51
    segunda-feira, 25 de março de 2013 17:34
    Moderador

Todas as Respostas

  • Filipe,

    O licenciamento por CAL é feito por usuario que acessa o serviço, porem, apesar de que da sua aplicação para o banco existe apenas 1 usuario, o seu CAL deve ser contabilizado pelo usuario de sua aplicação, caso contrario seria muito facil enganar a microsoft e pagar mais barato na licença por exemplo. Uma vez que o SQL Server só enxerga um usuario, voce devera de alguma forma implementar este controle em aplicação.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 25 de março de 2013 12:39
    Moderador
  • Eu estou ciente que apesar de um usuário único ser o acesso da aplicação eu pago por cada acesso deste usuário. O que preciso é descobrir um forma de saber se meu número de licença cal por usuário atual esta me atendendo ou se deve adquirir mais. Imagino que deva existir uma forma de saber qual meu pico de usuários em um dia via alguma ferramente do sql server.

    de qualquer forma grato pela ajuda.

    segunda-feira, 25 de março de 2013 13:19
  • Felipe,

    Da forma que esta projetada sua aplicação em relação ao banco é impossivel saber pois as conexões estão abstraidas em aplicação e um processo de um usuario pode gerar N requisições no banco. Via sql server até é possivel (De N maneiras...), mas em outra arquitetura de sistema.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 25 de março de 2013 13:25
    Moderador
  • Você não acha que via numero de conexões ativas eu não poderia ter uma ideia? Apesar de uma conexão poder ser do mesmo usuário!
    segunda-feira, 25 de março de 2013 14:12
  • Filipe,

    É exatamente isso, não é possivel afirmar que o numero de conexões no SQL = Numero de usuarios na aplicação, tudo depende de como tudo foi programado. Claro, talvez com este parametro voce tenha um cheiro, mas eu não colocaria esta metrica como 100% real mas ainda sim utilizaria como um parametro para a analise.

    Para fazer isso basta deixar um performance monitor rodando com o numero de conexões ativas. http://www.brentozar.com/archive/2006/12/dba-101-using-perfmon-for-sql-performance-tuning/


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 25 de março de 2013 14:15
    Moderador
  • Filipe,

    Veja se estes Scripts não poderiam ajudar:

    SELECT  ec.client_net_address, 
                  es.[program_name],
                  es.[host_name], 
                  es.login_name,
                  COUNT(ec.session_id) AS [connection count]
    FROM sys.dm_exec_sessions AS es INNER JOIN sys.dm_exec_connections AS ec
                                                               ON es.session_id = ec.session_id
    GROUP BY ec.client_net_address, 
                      es.[program_name],
                      es.[host_name], 
                      es.login_name
    ORDER BY ec.client_net_address,  es.[program_name];

    SELECT sess.session_id, 
                sess.login_time, 
                sess.original_login_name, 
                sess.login_name, 
                sess.host_name, 
                sess.program_name 
     FROM sys.dm_exec_sessions sess Inner JOIN sys.dm_exec_connections conn 
                                                               ON sess.session_id = conn.session_id
    WHERE program_name = 'Microsoft SQL Server Management Studio'


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Filipe Quintieri segunda-feira, 25 de março de 2013 17:51
    segunda-feira, 25 de março de 2013 17:34
    Moderador
  • Como vc mesmo disse é só cheiro da resposta, mas já ajuda. Muito Obrigado
    segunda-feira, 25 de março de 2013 17:52
  • Muito obrigado por mais este alternativa.
    segunda-feira, 25 de março de 2013 17:53