MSSQL – Query para saber quantas sessões estão abertas
Postado por Rafael | Postado em Desenvolvimento, SQL | Postado 02-04-2011
0
SELECT login_name As ‘Login’ ,
COUNT(session_id) AS ‘Conexões’
FROM sys.dm_exec_sessions
GROUP BY login_name;
Percebo que vários desenvolvedores Joomla recorrem a componentes ou módulos extras para executar tarefas que o próprio Joomla oferece nativamente. Isso porque muitos desconhecem todo o poder desse CMS fantástico. Neste artigo, vamos aprender a criar um sistema de colunistas, articulistas, colaboradores...
SELECT login_name As ‘Login’ ,
COUNT(session_id) AS ‘Conexões’
FROM sys.dm_exec_sessions
GROUP BY login_name;
Retorna informações sobre cada solicitação sendo executada no SQL Server.
|
Nome de coluna |
Tipo de dados |
Descrição |
|---|---|---|
|
session_id |
smallint |
ID da sessão a que esta solicitação está relacionada. Não permite valor nulo. |
|
request_id |
int |
ID da solicitação. Exclusiva no contexto da sessão. Não permite valor nulo. |
|
start_time |
datetime |
Carimbo de data e hora em que a solicitação chegou. Não permite valor nulo. |
|
status |
nvarchar(30) |
Status da solicitação. Pode ser o seguinte:
Não permite valor nulo. |
|
command |
nvarchar(16) |
Identifica o tipo atual de comando que está sendo processado. Os tipos de comando comuns incluem:
O texto da solicitação pode ser recuperado usando-se sys.dm_exec_sql_text com o sql_handle correspondente para a solicitação. Os processos de sistema internos definem o comando com base no tipo de tarefa que eles executam. As tarefas podem incluir o seguinte:
Não permite valor nulo. |
|
sql_handle |
varbinary(64) |
Mapa de hash do texto SQL da solicitação. Permite valor nulo. |
|
statement_start_offset |
int |
Número de caracteres no procedimento em lote ou armazenado atualmente em execução no qual a instrução atualmente em execução se inicia. Pode ser usado junto com sql_handle, statement_end_offset e a função de gerenciamento dinâmico sys.dm_exec_sql_text para recuperar a instrução atualmente em execução para a solicitação. Permite valor nulo. |
|
statement_end_offset |
int |
Número de caracteres no procedimento em lote ou armazenado atualmente em execução no qual a instrução atualmente em execução termina. Pode ser usado junto com sql_handle, statement_end_offset e a função de gerenciamento dinâmico sys.dm_exec_sql_text para recuperar a instrução atualmente em execução para a solicitação. Permite valor nulo. |
|
plan_handle |
varbinary(64) |
Mapa de hash do plano para execução SQL. Permite valor nulo. |
|
database_id |
smallint |
ID do banco de dados no qual a solicitação está em execução. Não permite valor nulo. |
|
user_id |
int |
ID do usuário que enviou a solicitação. Não permite valor nulo. |
|
connection_id |
uniqueidentifier |
ID da conexão em que a solicitação chegou. Permite valor nulo. |
|
blocking_session_id |
smallint |
ID da sessão que está bloqueando a solicitação. Se esta coluna for NULL, a solicitação não estará bloqueada ou as informações da sessão de bloqueio não estarão disponíveis (ou não podem ser identificadas). -2 = O recurso de bloqueio pertence a uma transação distribuída órfã. -3 = O recurso de bloqueio pertence a uma transação de recuperação adiada. -4 = A ID da sessão do proprietário da trava de bloqueio não pôde ser determinada neste momento devido a transições internas de estado da trava. |
|
wait_type |
nvarchar(60) |
Se a solicitação estiver bloqueada, esta coluna retornará o tipo de espera. Permite valor nulo. |
|
wait_time |
int |
Se a solicitação estiver bloqueada, esta coluna retornará a duração, em milissegundos, da espera atual. Não permite valor nulo. |
|
last_wait_type |
nvarchar(60) |
Se esta solicitação tiver sido previamente bloqueada, esta coluna retornará o tipo da última espera. Não permite valor nulo. |
|
wait_resource |
nvarchar(256) |
Se a solicitação estiver bloqueada, esta coluna retornará o recurso pelo qual a solicitação está esperando atualmente. Não permite valor nulo. |
|
open_transaction_count |
int |
Número de transações abertas para esta solicitação. Não permite valor nulo. |
|
open_resultset_count |
int |
Número de conjuntos de resultados abertos para esta solicitação. Não permite valor nulo. |
|
transaction_id |
bigint |
ID da transação na qual esta solicitação é executada. Não permite valor nulo. |
|
context_info |
varbinary(128) |
Valor CONTEXT_INFO da sessão. Permite valor nulo. |
|
percent_complete |
real |
Porcentagem de trabalho concluída para os comandos a seguir:
Não permite valor nulo. |
|
estimated_completion_time |
bigint |
Somente interno. Não permite valor nulo. |
|
cpu_time |
int |
Tempo da CPU, em milissegundos, usado pela solicitação. Não permite valor nulo. |
|
total_elapsed_time |
int |
Tempo total decorrido em milissegundos desde que a solicitação chegou. Não permite valor nulo. |
|
scheduler_id |
int |
ID do agendador que está programando esta solicitação. Não permite valor nulo. |
|
task_address |
varbinary(8) |
Endereço de memória alocado à tarefa associada a esta solicitação. Permite valor nulo. |
|
reads |
bigint |
Número de leituras executadas por esta solicitação. Não permite valor nulo. |
|
writes |
bigint |
Número de gravações executadas por esta solicitação. Não permite valor nulo. |
|
logical_reads |
bigint |
Número de leituras lógicas executadas pela solicitação. Não permite valor nulo. |
|
text_size |
int |
Configuração TEXTSIZE para esta solicitação. Não permite valor nulo. |
|
language |
nvarchar(128) |
Configuração de idioma para a solicitação. Permite valor nulo. |
|
date_format |
nvarchar(3) |
Configuração DATEFORMAT para a solicitação. Permite valor nulo. |
|
date_first |
smallint |
Configuração DATEFIRST para a solicitação. Não permite valor nulo. |
|
quoted_identifier |
bit |
1 = QUOTED_IDENTIFIER é ON para a solicitação. Caso contrário, é 0. Não permite valor nulo. |
|
arithabort |
bit |
1 = configuração ARITHABORT é ON para a solicitação. Caso contrário, é 0. Não permite valor nulo. |
|
ansi_null_dflt_on |
bit |
1 = configuração ANSI_NULL_DFLT_ON é ON para a solicitação. Caso contrário, é 0. Não permite valor nulo. |
|
ansi_defaults |
bit |
1 = configuração ANSI_DEFAULTS é ON para a solicitação. Caso contrário, é 0. Não permite valor nulo. |
|
ansi_warnings |
bit |
1 = configuração ANSI_WARNINGS é ON para a solicitação. Caso contrário, é 0. Não permite valor nulo. |
|
ansi_padding |
bit |
1 = configuração ANSI_PADDING é ON para a solicitação. Caso contrário, é 0. Não permite valor nulo. |
|
ansi_nulls |
bit |
1 = configuração ANSI_NULLS é ON para a solicitação. Caso contrário, é 0. Não permite valor nulo. |
|
concat_null_yields_null |
bit |
1 = configuração CONCAT_NULL_YIELDS_NULL é ON para a solicitação. Caso contrário, é 0. Não permite valor nulo. |
|
transaction_isolation_level |
smallint |
Nível de isolamento com que a transação desta solicitação é criada. Não permite valor nulo. |
|
lock_timeout |
int |
Tempo limite de bloqueio em milissegundos desta solicitação. Não permite valor nulo. |
|
deadlock_priority |
int |
Configuração DEADLOCK_PRIORITY da solicitação. Não permite valor nulo. |
|
row_count |
bigint |
Número de linhas que foram retornadas ao cliente por esta solicitação. Não permite valor nulo. |
|
prev_error |
int |
Último erro ocorrido durante a execução da solicitação. Não permite valor nulo. |
|
nest_level |
int |
Nível de aninhamento atual do código sendo executado na solicitação. Não permite valor nulo. |
|
granted_query_memory |
int |
Número de páginas alocadas à execução de uma consulta na solicitação. Não permite valor nulo. |
|
executing_managed_code |
bit |
Indica se uma solicitação específica está atualmente executando objetos de tempo de execução de linguagem comum, como rotinas, tipos e gatilhos. É definida para todo o tempo em que um objeto de tempo de execução de linguagem comum estiver na pilha, mesmo durante a execução de Transact-SQL no tempo de execução de linguagem comum. Não permite valor nulo. |
|
group_id |
int |
ID do grupo de carga de trabalho a que pertence esta consulta. Não permite valor nulo. |
|
query_hash |
binary(8) |
Valor de hash binário calculado na consulta e usado para identificar consultas com lógica semelhante. Você pode usar o hash de consulta para determinar o recurso agregado usado para consultas que são diferentes apenas nos valores literais. Para obter mais informações, consulte Localizando e ajustando consultas semelhantes usando consulta e hashes de plano de consulta. |
|
query_plan_hash |
binary(8) |
Valor de hash binário calculado no plano de execução de consulta e usado para identificar planos de execução de consulta semelhantes. Você pode usar o hash de plano de consulta para localizar o custo cumulativo de consultas com planos de execução semelhantes. Para obter mais informações, consulte Localizando e ajustando consultas semelhantes usando consulta e hashes de plano de consulta. |
Retorna uma linha por sessão autenticada no SQL Server. sys.dm_exec_sessions é uma exibição de escopo de servidor que mostra informações sobre todas as conexões de usuário ativas e tarefas internas. Essas informações contêm versão de cliente, nome do programa cliente, hora de logon do cliente, usuário do logon, configuração da sessão atual etc. Use sys.dm_exec_sessions para exibir primeiro a carga do sistema atual e identificar uma sessão de interesse e, depois, para obter mais informações sobre essa sessão usando outras exibições ou funções de gerenciamento dinâmicas.
Resumindo são as informações que sobre as sessões que estão abertas.
|
Nome da coluna |
Tipo de dados |
Descrição |
|---|---|---|
|
session_id |
smallint |
Identifica a sessão associada a cada conexão primária ativa. Não permite valor nulo. |
|
login_time |
datetime |
Hora quando sessão foi estabelecida. Não permite valor nulo. |
|
host_name |
nvarchar(128) |
Nome da estação de trabalho cliente específica de uma sessão. O valor é NULL para sessões internas. É anulável. |
|
program_name |
nvarchar(128) |
Nome de programa cliente que iniciou a sessão. O valor é NULL para sessões internas. É anulável. |
|
host_process_id |
int |
ID de processo do programa cliente que iniciou a sessão. O valor é NULL para sessões internas. É anulável. |
|
client_version |
int |
Versão de protocolo TDS da interface usada pelo cliente para conexão com o servidor. O valor é NULL para sessões internas. É anulável. |
|
client_interface_name |
nvarchar(32) |
Nome de protocolo que é usado pelo cliente para conexão com o servidor. O valor é NULL para sessões internas. É anulável. |
|
security_id |
varbinary(85) |
Identificador de segurança do Microsoft Windows associado ao logon. Não permite valor nulo. |
|
login_name |
nvarchar(128) |
Nome de logon de SQL Server em que a sessão está sendo executada atualmente. Para o nome de logon original que criou a sessão, consulte original_login_name. Pode ser um nome de logon autenticado por SQL Server ou um nome de usuário de domínio autenticado pelo Windows. Não permite valor nulo. |
|
nt_domain |
nvarchar(128) |
Domínio de Windows do cliente se a sessão estiver usando Autenticação do Windows ou uma conexão confiável. Este valor é o NULL para sessões internas e usuários que não tiverem domínio. É anulável. |
|
nt_user_name |
nvarchar(128) |
Nome de usuário do Windows do cliente se a sessão estiver usando Autenticação do Windows ou uma conexão confiável. Este valor é o NULL para sessões internas e usuários que não tiverem domínio. É anulável. |
|
status |
nvarchar(30) |
Status da sessão. Os valores possíveis são:
Não permite valor nulo. |
|
context_info |
varbinary(128) |
Valor CONTEXT_INFO para a sessão. As informações de contexto são definidas pelo usuário com o uso da instruçãoSET CONTEXT_INFO. É anulável. |
|
cpu_time |
int |
Tempo da CPU, em milissegundos, usado por essa sessão. Não permite valor nulo. |
|
memory_usage |
int |
Número de páginas de 8 KB de memória usado por essa sessão. Não permite valor nulo. |
|
total_scheduled_time |
int |
Tempo total, em milissegundos, para o qual a sessão (solicitações internas) era programada para execução. Não permite valor nulo. |
|
total_elapsed_time |
int |
Tempo, em milissegundos, desde que a sessão foi estabelecida. Não permite valor nulo. |
|
endpoint_id |
int |
ID do ponto de extremidade associado à sessão. Não permite valor nulo. |
|
last_request_start_time |
datetime |
Hora em que a última solicitação na sessão começou. Inclui a solicitação atualmente em execução. Não permite valor nulo. |
|
last_request_end_time |
datetime |
Hora da última conclusão de uma solicitação na sessão. É anulável. |
|
reads |
bigint |
Número de leituras executadas, por solicitações nesta sessão, durante esta sessão. Não permite valor nulo. |
|
writes |
bigint |
Número de gravações executadas, por solicitações nesta sessão, durante esta sessão. Não permite valor nulo. |
|
logical_reads |
bigint |
Número de leituras lógicas executadas na sessão. Não permite valor nulo. |
|
is_user_process |
bit |
0 se a sessão for uma sessão de sistema. Caso contrário, será 1. Não permite valor nulo. |
|
text_size |
int |
Configuração TEXTSIZE para a sessão. Não permite valor nulo. |
|
language |
nvarchar(128) |
Configuração LANGUAGE para a sessão. É anulável. |
|
date_format |
nvarchar(3) |
Configuração DATEFORMAT para a sessão. É anulável. |
|
date_first |
smallint |
Configuração DATEFIRST para a sessão. Não permite valor nulo. |
|
quoted_identifier |
bit |
Configuração QUOTED_IDENTIFIER para a sessão. Não permite valor nulo. |
|
arithabort |
bit |
Configuração ARITHABORT para a sessão. Não permite valor nulo. |
|
ansi_null_dflt_on |
bit |
Configuração ANSI_NULL_DFLT_ON para a sessão. Não permite valor nulo. |
|
ansi_defaults |
bit |
Configuração ANSI_DEFAULTS para a sessão. Não permite valor nulo. |
|
ansi_warnings |
bit |
Configuração ANSI_WARNINGS para a sessão. Não permite valor nulo. |
|
ansi_padding |
bit |
Configuração ANSI_PADDING para a sessão. Não permite valor nulo. |
|
ansi_nulls |
bit |
Configuração ANSI_NULLS para a sessão. Não permite valor nulo. |
|
concat_null_yields_null |
bit |
Configuração CONCAT_NULL_YIELDS_NULL para a sessão. Não permite valor nulo. |
|
transaction_isolation_level |
smallint |
Nível de isolamento da transação da sessão. 0 = Não Especificado 1 = Leitura Não Confirmada 2 = Leitura Confirmada 3 = Repetível 4 = Serializável 5 = Instantâneo Não permite valor nulo. |
|
lock_timeout |
int |
Configuração LOCK_TIMEOUT para a sessão. O valor está em milissegundos. Não permite valor nulo. |
|
deadlock_priority |
int |
Configuração DEADLOCK_PRIORITY para a sessão. Não permite valor nulo. |
|
row_count |
bigint |
Número de linhas retornadas na sessão até este ponto. Não permite valor nulo. |
|
prev_error |
int |
ID do último erro retornado na sessão. Não permite valor nulo. |
|
original_security_id |
varbinary(85) |
Identificador de segurança do Microsoft Windows associada a original_login_name. Não permite valor nulo. |
|
original_login_name |
nvarchar(128) |
Nome de logon do SQL Server que o cliente usou para criar esta sessão. Pode ser um nome de logon autenticado por SQL Server ou um nome de usuário de domínio autenticado pelo Windows. Observe que a sessão pode ter passado por muitas opções de contexto implícitas ou explícitas após a conexão inicial. Por exemplo, se EXECUTE AS for usado. Não permite valor nulo. |
|
last_successful_logon |
datetime |
Hora do último logon efetuado com êxito para original_login_name antes de a sessão atual ter sido iniciada. |
|
last_unsuccessful_logon |
datetime |
Hora da última tentativa de logon para original_login_name antes de a sessão atual ter sido iniciada. |
|
unsuccessful_logons |
bigint |
Número de tentativas de logon malsucedidas para original_login_name entre last_successful_logon e login_time. |
|
group_id |
int |
ID do grupo de carga de trabalho a que pertence esta sessão. Não permite valor nulo. |
SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END – qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_worker_time/execution_count DESC;
Um componente para efeito de transição, parecido com um cubo.
Parceiro da Microsoft desde 2006, o laboratório do Instituto de Computação da Universidade de Campinas (Unicamp) vem desenvolvendo uma série de projetos relacionados a Computação de Alto Desempenho (mais conhecida pela sigla HPC, acrônimo para High Performance Computing). O projetoVirtual Cluster Orchestration System (ViCOS), publicado no Codeplex, por exemplo, busca prover uma infraestrutura heterogênea para processamento de aplicações de HPC sob demanda, levanto em conta os recursos disponíveis no ambiente físico. “A infraestrutura para HPC é muito cara e em muitos casos não é utilizada em sua totalidade”, justifica Sandro Rigo, professor da Unicamp e um dos coordenadores do Laboratório de Sistemas Computacionais da universidade.
O objetivo é fazer um uso inteligente do processamento ocioso do ambiente, aproveitando momentos de ociosidade do sistema e também liberando os recursos que não estão sendo usados. O foco pode ser tanto em ganhos de desempenho como em economia de energia, usando conceitos de computação em nuvem para criar um ambiente flexível, econômico e tolerante a falhas para o processamento de tarefas de alto desempenho.
Interoperabilidade
Através dele, é possível integrar, numa mesma infraestrutura, clusters HPC de plataformas diversas – hoje a Unicamp trabalha com Windows HPC Server 2008 R2 e Plataforma open source baseada em Linux – e até mesmo formar um ambiente de propósito misto, contendo tanto clusters como máquinas de usos diversos. “Isso pode permitir que um laboratório da universidade, que contém máquinas dedicadas ao uso dos alunos, possa ser usado para executar tarefas de alto desempenho, usando o poder computacional ocioso do ambiente”, exemplifica Rigo. “Isso tudo é feito sob demanda e automaticamente pelo sistema, de acordo com a carga de operação do ambiente.”
O ViCOS faz uso de virtualização, usando Hyper-V Server 2008, de forma que os cluster HPC são formados por máquinas virtuais (VMs) rodando sobre o hardware real de forma transparente. Além disso, outros conceitos de computação em nuvem são usados para garantir que os clusters de alto desempenho virtualizados possam se adequar ao ambiente de acordo com a demanda.
Usando uma infaestrutura de um cluster de torelancia a falhas e técnicas como “live migration” de máquinas virtuais, características providas na tecnologia de “Failover Clustering” presente no Windows Server 2008 R2, é possível fazer com que as VMs sejam movidas pela sistema físico conforme a política de escalonamento adotada, que pode visar tanto um ganho de desempenho, balanceamento de carga ou até economia de energia. A migração transparente garante também que as VMs, que são os componentes dos clusters HPC, fiquem protegidas contra falhas nas máquinas físicas, uma vez que, em caso de problemas, as VMs podem migrar para uma máquina que esteja funcionando corretamente.
MSDN
SVG é a abreviatura de Scalable Vectorial Graphics que pode ser traduzido do inglês como gráficos vetoriais escaláveis. Trata-se de uma linguagemXML para descrever de forma vetorial desenhos e gráficos bidimensionais, quer de forma estática, quer dinâmica ou animada. Umas das principais características dos gráficos vetoriais, é que não perdem qualidade ao serem ampliados. A grande diferença entre o SVG e outros formatos vetoriais, é o fato de ser um formato aberto, não sendo propriedade de nenhuma empresa. Foi criado pela World Wide Web Consortium, responsável pela definição de outros padrões, como o HTML e o XHTML.
A criação deste formato foi baseada noutros já existentes: CSS, DOM, JPEG, PNG, SMIL e XML.
Um exemplo rápido para permitir digitar somente numero em uma caixa de texto, testei em muitos navegadores e até hoje sem problemas:
A Caixa de Texto:
<asp:TextBox ID=”txtQualquer” onKeyPress=”return soNumero(event);” runat=”server” />
O Javascript :
function soNumero(event)
{
iKey = KeyStroke( event );
if (!((iKey > 47 && iKey < 58) || iKey == 0 || iKey == 8 || iKey == 13)) {
return false;
}
return true;
}
function ltrim(str)
{
l = new Number(str.length);
if(l >0){
while (str.charAt(0) == ” ” || str.charAt(0) == “\t”)
str = str.substr(1,l-1);
}
return str;
}
function rtrim(str)
{
l = new Number(str.length);
if(l >0){
while (str.charAt(l-1) == ” ” || str.charAt(l-1) == “\t”)
{
str = str.substr(0,l-1);
l = str.length;
}
}
return str;
}
function trim(str)
{
str = rtrim(str);
str = ltrim(str);
return str;
}