update TABELA set CAMPO_A = RTRIM(CAMPO_A);
SELECT * FROM Busca_de_Conhecimento WHERE Tema LIKE '% Banco de Dados %' or Tema LIKE '% Assuntos relacionados%'
quarta-feira, 17 de outubro de 2012
Comando RTRIM - SQLSERVER 2008
RTRIM (string) = remove os espaços em branco à direita de uma string.
update TABELA set CAMPO_A = RTRIM(CAMPO_A);
update TABELA set CAMPO_A = RTRIM(CAMPO_A);
terça-feira, 16 de outubro de 2012
DICAS - SQLSERVER 2008R2
Como fazer para visualizar os usuários conectados no banco SQLServer 2008?
- Exec sp_who
Como derrubar a conexão de um determinado usuário via comando no SQL-SERVER 2008?
- Procure o spid do usuário através da instrução:
- SELECT session_id FROM sys.dm_exec_sessions where login_name = ‘usuario_desejado'
Matando o spid do usuário desejado
- kill do spid
segunda-feira, 15 de outubro de 2012
SQL Server Management Studio
SQL Server Management Studio é um ambiente integrado para acessar, configurar, gerenciar, administrar e desenvolver todos os componentes do SQL Server. O SQL Server Management Studio combina um amplo grupo de ferramentas gráficas com editores de scripts ricos para fornecer acesso ao SQL Server para desenvolvedores e administradores de todos os níveis.
Para fazer o download ou conhecer mais sobre essa plataforma acesse: SQL Server 2008 Management Studio
Renomeando bases do SQL 2000/2005/2008/2012
Acredite, em algum momento da sua vida você vai precisar renomear uma base. Veja como fazer isso no SQL 2000, 2005, 2008 e 2012.
SQL 2000:
EXEC sp_renamedb 'antigoNome', 'novoNome'
SQL 2005/2008/2012:
ALTER DATABASE antigoNome MODIFY NAME = novoNome
Também pode ser feito através de detach/attach:
EXEC sp_detach_db 'antigoNome', 'true'
EXEC sp_attach_db @dbname = N'novoNome', @filename1 = N'c:\caminho\arquivo_dados.mdf', @filename2 = N'c:\caminho\arquivo_tlogs.ldf'
EXEC sp_attach_db @dbname = N'novoNome', @filename1 = N'c:\caminho\arquivo_dados.mdf', @filename2 = N'c:\caminho\arquivo_tlogs.ldf'
Se preferir, exceto no SQL 2000, tem como fazer através da interface gráfica do SSMS (Management Studio). Clique com o direito sobre a base que deseja renomear e clique em "rename".
Consumo de CPU por base
Este script é uma baita de uma mão na roda:
WITH DB_CPU_Stats
AS
(SELECT DatabaseID, DB_Name(DatabaseID) AS [DatabaseName], SUM(total_worker_time) AS [CPU_Time_Ms]
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY (SELECT CONVERT(int, value) AS [DatabaseID]
FROM sys.dm_exec_plan_attributes(qs.plan_handle)
WHERE attribute = N'dbid') AS F_DB
GROUP BY DatabaseID)
SELECT ROW_NUMBER() OVER(ORDER BY [CPU_Time_Ms] DESC) AS [row_num],
DatabaseName, [CPU_Time_Ms],
CAST([CPU_Time_Ms] * 1.0 / SUM([CPU_Time_Ms]) OVER() * 100.0 AS DECIMAL(5, 2)) AS [CPUPercent]
FROM DB_CPU_Stats
WHERE DatabaseID > 4 -- system databases
AND DatabaseID <> 32767 -- ResourceDB
ORDER BY row_num OPTION (RECOMPILE);
(SELECT DatabaseID, DB_Name(DatabaseID) AS [DatabaseName], SUM(total_worker_time) AS [CPU_Time_Ms]
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY (SELECT CONVERT(int, value) AS [DatabaseID]
FROM sys.dm_exec_plan_attributes(qs.plan_handle)
WHERE attribute = N'dbid') AS F_DB
GROUP BY DatabaseID)
SELECT ROW_NUMBER() OVER(ORDER BY [CPU_Time_Ms] DESC) AS [row_num],
DatabaseName, [CPU_Time_Ms],
CAST([CPU_Time_Ms] * 1.0 / SUM([CPU_Time_Ms]) OVER() * 100.0 AS DECIMAL(5, 2)) AS [CPUPercent]
FROM DB_CPU_Stats
WHERE DatabaseID > 4 -- system databases
AND DatabaseID <> 32767 -- ResourceDB
ORDER BY row_num OPTION (RECOMPILE);
Resultado:

Verifica quem está logado e quantas sessões possui
Este pequeno select mostra quais os usuários ou logins conectados à instância e quantas sessões abertas possuem:
SELECT login_name, COUNT(session_id) AS [session_count]
FROM sys.dm_exec_sessions
GROUP BY login_name
ORDER BY COUNT(session_id) DESC OPTION (RECOMPILE);
FROM sys.dm_exec_sessions
GROUP BY login_name
ORDER BY COUNT(session_id) DESC OPTION (RECOMPILE);
Resultado:

Informações gerais da instância
Para realizar uma análise precisamos levantar uma série de informações que nos guiarão durante todo o processo até a conclusão. Algumas informações básicas como nome do servidor, da instância, se está em cluster, etc. são fundamentais para o início da análise e podem ser obtidas com o simples select abaixo:
SELECT SERVERPROPERTY('MachineName') AS [MachineName], SERVERPROPERTY('ServerName') AS [ServerName],
SERVERPROPERTY('InstanceName') AS [Instance], SERVERPROPERTY('IsClustered') AS [IsClustered],
SERVERPROPERTY('ComputerNamePhysicalNetBIOS') AS [ComputerNamePhysicalNetBIOS],
SERVERPROPERTY('Edition') AS [Edition], SERVERPROPERTY('ProductLevel') AS [ProductLevel],
SERVERPROPERTY('ProductVersion') AS [ProductVersion], SERVERPROPERTY('ProcessID') AS [ProcessID],
SERVERPROPERTY('Collation') AS [Collation], SERVERPROPERTY('IsFullTextInstalled') AS [IsFullTextInstalled],
SERVERPROPERTY('IsIntegratedSecurityOnly') AS [IsIntegratedSecurityOnly];
SERVERPROPERTY('InstanceName') AS [Instance], SERVERPROPERTY('IsClustered') AS [IsClustered],
SERVERPROPERTY('ComputerNamePhysicalNetBIOS') AS [ComputerNamePhysicalNetBIOS],
SERVERPROPERTY('Edition') AS [Edition], SERVERPROPERTY('ProductLevel') AS [ProductLevel],
SERVERPROPERTY('ProductVersion') AS [ProductVersion], SERVERPROPERTY('ProcessID') AS [ProcessID],
SERVERPROPERTY('Collation') AS [Collation], SERVERPROPERTY('IsFullTextInstalled') AS [IsFullTextInstalled],
SERVERPROPERTY('IsIntegratedSecurityOnly') AS [IsIntegratedSecurityOnly];
Resultado:
Agora já temos informações básicas para começar a análise ou para fazer uma documentação.
Obtendo informações importantes de todas as bases
Hoje vamos obter informações importantes como Recovery Model, Log Reuse, Log Size, Log Used, Compatibility Level, Page Verify, Auto Shrink entre algumas outras.
Vamos utilizar o script abaixo para obter estas informações que podem ser utilizadas para documentação, checagem, análise, ou seja, são realmente úteis.
SELECT db.[name] AS [Database Name], db.recovery_model_desc AS [Recovery Model],db.log_reuse_wait_desc AS [Log Reuse Wait Description],ls.cntr_value AS [Log Size (KB)], lu.cntr_value AS [Log Used (KB)],CAST(CAST(lu.cntr_value AS FLOAT) / CAST(ls.cntr_value AS FLOAT)AS DECIMAL(18,2)) * 100 AS [Log Used %],db.[compatibility_level] AS [DB Compatibility Level],db.page_verify_option_desc AS [Page Verify Option], db.is_auto_create_stats_on, db.is_auto_update_stats_on,db.is_auto_update_stats_async_on, db.is_parameterization_forced,db.snapshot_isolation_state_desc, db.is_read_committed_snapshot_on,db.is_auto_close_on, db.is_auto_shrink_onFROM sys.databases AS dbINNER JOIN sys.dm_os_performance_counters AS luON db.name = lu.instance_nameINNER JOIN sys.dm_os_performance_counters AS lsON db.name = ls.instance_nameWHERE lu.counter_name LIKE N'Log File(s) Used Size (KB)%'AND ls.counter_name LIKE N'Log File(s) Size (KB)%'AND ls.cntr_value > 0 OPTION (RECOMPILE);
Vamos ver o resultado disso:
Na primeira parte do resultado, podemos observar informações relacionadas a utilização do Transaction Log (que depende do Recovery Model) de todas as bases.
Arraste a barra inferior para a direita para vermos o restante das informações:
Agora sabemos se as estatísticas estão sendo criadas e atualizadas automaticamente, se é síncrona ou assíncrona, se há parametrização, snapshot isolation, se o auto close está habilitado e se o auto shrink está sendo realizado.
Estas informações são bem úteis na hora de conferir suas configurações ou conhecer um novo ambiente, além de ficar bem prático para documentar.
Atalho para sp_who
Muitas vezes precisamos executar o sp_who para vermos quem está conectado não é verdade? Ao invés de abrir uma nova query e digitar sp_who, experimente apenas pressionar Ctrl+1 e veja o resultado:
domingo, 14 de outubro de 2012
Dicas rápidas MySQL
Mostrando tabelas criadas na db
SHOW TABLES;
Mostrando db criadas
SHOW DATABASES;
Mostrando detalhes da tabela
DESCRIBE tabela;
Mostrando somente as colunas
SHOW COLUMNS FROM tabela;
Ordenando a consulta
De forma crescente
SELECT * FROM showsvistos ORDER BY campo;
De forma decrescente (de z para a, de 9 para 0)
SELECT * FROM showsvistos ORDER BY campo DESC;
Otimizar tabela
OPTIMIZE table tabela;
Reparar tabela
REPAIR table tabela;
Dar permissão a USUÁRIO
GRANT ALL PRIVILEGES ON nomedabase.* to usuario@ip_de_onde_vai_acessar IDENTIFIED by ‘senha_do_caboco’;
Você pode ser mais cuidadoso e falar o que e onde o cara vai poder mexer:
GRANT insert,delete ON nomedabase.tabela to usuario@ip_de_onde_vai_acessar IDENTIFIED by ‘senha_do_caboco’;
Assinar:
Postagens (Atom)