quinta-feira, 7 de março de 2013

Listar instâncias no servidor.


Como listar as instâncias intaladas no servidor.


Declare @tb_Instances Table (InstanceName NVarChar(255),
RegPath      NVarChar(255))

Insert Into @tb_Instances
exec master..xp_regenumvalues
             @rootkey = N'HKEY_LOCAL_MACHINE',
             @key = N'SOFTWARE\\Microsoft\\Microsoft SQL Server\\Instance Names\\SQL'

Select * from @tb_Instances

Versão do SQLServer e Service Pack instalado.


Como descobrir a versão so SQL Server e tambem muito importante, a versão do Service Pack instalados.

SELECT  SERVERPROPERTY('productversion') as Versão,
     SERVERPROPERTY('productlevel')as [Service Pack], 
     SERVERPROPERTY('edition')as Edição
Ou
SELECT @@VERSION

segunda-feira, 4 de março de 2013

Instalando o Cliente de Telnet

1 - Efetue logon como administrador e digite o comando Dism /online /enable-feature /featurename:TelnetClient e pressione Enter. Será carregada a janela conforme mostra a figura 1.1.
Figura 1.1

2 - Para verificar se o Cliente de Telnet foi instalado digite o comando Dism /online /get-features /format:table e pressione Enter. Será carregada a janela conforme mostra a figura 1.2.

quinta-feira, 28 de fevereiro de 2013

Como gerar scripts para exportar dados no SQL Server 2008

1. INICIANDO O ASSISTENTE

O assistente deve ser iniciado clicando com o botão direito do mouse sobre o banco onde se encontra a tabela a qual iremos gerar o script. Deve se clicar no banco, não na tabela e escolher as opções Tasks > Generate Scripts.
image

Figura 1 – Iniciando o assistente

Ao fazer isto uma janela de boas vindas pode ser apresentada, dependendo das configurações escolhidas. O assistente é bem sucinto. Você deve realizar a ação desejada e clicar no botão Next. O assistente mantém um painel de navegação à esquerda para você saber em qual etapa está e também poder retornar em um ponto específico da tarefa. A figura 2 demonstra a janela de boas vindas.
image
Figura 2 – Janela de boas vindas do assistente


Na segunda etapa deve ser selecionada a tabela ou as tabelas que devem ser usadas no script.
image
Figura 3 – Selecionando as tabelas

Um ponto importante para se observar é que ao gerar scripts para os dados a ferramenta não cria scripts dos dados das tabelas as quais aquela que foi selecionada depende, ou seja, possui chaves estrangeiras, então, é importante antes disto verificar este detalhe. Isto pode ser feito com o próprio SSMS, basta selecionar a tabela, clicar com o botão direito do mouse e escolher a opção View Dependencies. A figura 4 exibe a janela que é aberta ao fazer isto. Use a opção Object that depend on para mostrar as que dependem da tabela selecionada e Objects on wich <tabela> depends para mostrar aquelas que dependem da tabela selecionada.
image
Figura 4 – Janela para exibição de dependências


O passo seguinte consiste em escolher se o script será gerado em um arquivo, na área de trasnferência do Windows (Clipboard) e assim poder ser colado em qualquer editor de texto ou, ainda, em uma janela de consulta nova do SSMS. A Figura 5 mostra as opções selecionadas.
image
Figura 5 – Escolhendo como o script será gerado


Neste ponto é que se deve escolher entre gerar o script do schema da tabela e assim poder recriá-la no banco de dados de destino, se somente os dados serão gerados ou se tanto o schema como os dados irão para o script. Para fazer isto deve se clicar no botão Advanced que abre uma janela como a que pode ser conferida na figura 6.
image
Figura 6 – Seleção do tipo de script que será gerado


Esta janela possui várias opções principalmente relacionadas com a exportação do schema do banco. Veja qual a mais adequada com sua necessidade.
image
Figura 7 – Tela final do assistente


Com a próxima etapa o assistente executa a geração do script e finaliza copiando para a fonte escolhida.
image
Figura 8 – Tela final do assistente


Uma vantagem é que mesmo após finalizada a geração do script você pode voltar e gerar novamente para outra tabela ou com outras opções.
image
Figura 9 – Resultado final do script gerado

SQL – Gerando Inserts de Tabelas via T-SQL

Apesar do SQL Management Studio Express ser uma ferramenta poderosa  e gratuita, peca em algumas funcionalidades simples que a maioria  das ferramentas free tem. A título de exemplo, as ferramentas do MySQL como o Administrator e o Query Browser são extremente completas, auxiliando inclusive em uma funcionalidade que coloque em questão aqui. A geração de scripts de dados de um banco.

Tá, conseguimos facilmente gerar o script de criação das tabelas, procs, enfim, tudo mais de objetos existentes no banco através SQL Management Studio Express, clicando com o botão direto do mouse sobre o database na janela Object Explorer, indo em Tasks, Generate Scripts… Daí, basta selecionar os objetos a serem gerados e voilá! Está tudo aí, pronto para ser salvo e criado em qualquer outra servidor.
sqlmanagementstudioexpressgeneratescripts
Gerando Scripts do SQL Management Studio

O problema são os dados. Tudo bem, dá até pra fazer um backup em arquivo binário, mas e se o servidor for de acesso restrito? A rotina de backup só funciona apontando para os discos existentes no computador instalado. Com algum esforço, daria para apontar para um diretório da rede, mas nem sempre isso está acessível.

segunda-feira, 25 de fevereiro de 2013

Alterar chave de instalação do SQL2008R2

Sempre que desejamos conhecer um novo software, instalamos a versão de demonstração ( trial ). Em determinado tempo essa versão de demonstração expira e o software é bloqueado ou tem suas funções limitadas.
No caso abaixo tenho uma versão do Microsoft SQL Server 2008 R2 Trial que foi bloqueada.
a1
Após comprar do produto, temos em mãos a chave de instalação ( Product Key ou Serial Number ) que libera novamente o software.

Como instalar a nova chave?
1. Execute novamente o setup.exe
2. No SQL Server Installation Center, selecione Maintenance, depois Edition Upgrade
a2
3. Clique Next duas vezes, então informe a nova chave
a3
4. Continue com Next e Install, aguarde alguns minutos até concluir.

Verificar qual a porta que o SQLSERVER esta utilizando

DECLARE @TcpPort VARCHAR(5)
        ,@RegKey VARCHAR(100)
IF @@SERVICENAME !='MSSQLSERVER'
    BEGIN
        SET @RegKey = 'SOFTWARE\Microsoft\Microsoft SQL Server\' + @@SERVICENAME + '\MSSQLServer\SuperSocketNetLib\Tcp'
    END
    ELSE
    BEGIN
        SET @RegKey = 'SOFTWARE\MICROSOFT\MSSQLSERVER\MSSQLSERVER\SUPERSOCKETNETLIB\TCP'
    END
EXEC master..xp_regread
    @rootkey = 'HKEY_LOCAL_MACHINE'
    ,@key = @RegKey
    ,@value_name = 'TcpPort'
    ,@value = @TcpPort OUTPUT
SELECT @TcpPort AS PortNumber
        ,@@SERVERNAME AS ServerName
        ,@@SERVICENAME AS ServiceName

quarta-feira, 20 de fevereiro de 2013

Alterando a senha do usuário root no MySQL

Linux:

1.Parar o serviço do MySQL (service mysqld stop, /etc/init.d/mysqld stop, matando o processo – conforme sua distribuição);
2.Reiniciar o mysql com a opção –skip-grant-tables (você poderá utilizá-la ao iniciar o mysqld manuamente ou colocando-a no arquivo de init)
3.Alterar a senha do usuário root com o comando:

# mysqladmin -u root password 'nova_senha'
# mysqladmin flush-privileges

4.você pode alterar a senha também com o comando:

# mysql -u root mysql
# mysql> UPDATE user SET Password=PASSWORD('nova_senha') WHERE User='root';
# mysql> FLUSH PRIVILEGES; 

Windows XP (com o MySQL rodando como serviço):

1.Entrar nos serviços do windows (Iniciar -> Executar -> services.msc);
2.Procure pelo MySQL, clique com o botão direito sobre ele e vá em propriedades;
3.Pare o serviço (clicando sobre o botão parar);
4.Insira no campo “Parâmetros de inicialização” o parâmetro –skip-grant-tables e clique no botão iniciar e em seguida botão Ok;
5.Execute o cmd (Iniciar -> Executar -> cmd) , entre no diretório de binários do MySQL (cd c:\arquivos de programas\mysql\bin (ou onde estiver instalado));
6.Alterar a senha do usuário root com o comando:

# mysqladmin -u root password 'nova_senha'
# mysqladmin flush-privileges

7. você pode alterar a senha também com o comando:
# mysql -u root mysql
# mysql> UPDATE user SET Password=PASSWORD('nova_senha') WHERE User='root';
# mysql> FLUSH PRIVILEGES; 

O parâmetro –skip-grant-tables desabilita no servidor o uso do sistema de privilégios. Com isso todos os usuários terão acesso a todos os bancos de dados. Ao executar o comando Flush privileges, o servidor retorna a utilizar seu sistema de privilégios, mantendo a segurança original do serviço.

Agora se você adicionou o parâmetro –skip-grant-tables no arquivo de init, não se esqueca de remové-lo de lá, para evitar que na próxima reinicialização do serviço ele fique vulnerável. Caso seu MySQL esteja no Windows, execute os 4 primeiros passos novamente removendo o parâmetro passado na inicialização.

segunda-feira, 18 de fevereiro de 2013

Habilitar/Desabilitar Archivelog no banco de dados Oracle


Archivelog é gerado pelo banco de dados em todas as operações de transações no banco de dados como: INSERT, DROP, ALTER, ETC. No Oracle versão 9i para frente a Oracle recomenda o uso do Backup com RMAN, isto implica dizer que você precisa do seu banco em modo de Archive.


Para você recuperar seu banco de dados é mais rápido e mais seguro, já que você poderá voltar seu backup em uma determinada faixa de tempo e depois aplicar os Archivelog do dia ou do tempo.
Se o seu banco de dados não está no modo Archive, você poderá realizar os procedimentos abaixo para mudar seu banco para o modo Archive.

[oracle@oraserver ~]$ sqlplus / as sysdba

Verificando onde ficaram os ARCHIVELOG
SQL> show parameter log_archive_dest_1


Habilitando...
SQL> select log_mode from gv$database;
SQL> shutdown immediate;
SQL> startup mount exclusive;
SQL> alter database archivelog;
SQL> alter database open;
SQL> select log_mode from gv$database;

Desabilitando...
SQL> startup mount
SQL> alter database noarchivelog;
SQL> alter database open;

quarta-feira, 6 de fevereiro de 2013

Retorna o número de usuários conectados - PostgreSQL

SELECT COUNT(*FROM pg_stat_activity;

pg_stat_database que apresenta para cada banco de dados o número de conexões.

DUMP E RESTORE - PostgreSQL


Dump


dump de um banco inteiro - formato sql puro
pg_dump -U usuario -h ip_servidor nomedobanco > nomedobanco.sql
dump de um banco inteiro - formato binario
pg_dump -U usuario -h ip_servidor -Fc -f banco.dump nome_do_banco
dump de uma tabela do banco
pg_dump -U usuario -h ip_servidor -Fc -t tabela -f tabela.pgdump nome_do_banco
dump de um table de um schema
pg_dump -U postgres -h 127.0.0.1 -Fc -n schema -t tabela -f tabela.pgdump banco

Restore

para restaurar um banco com dump em formato SQL
psql -U usuario -h ip_do_servidor -f nomeodabanco.sql nomedobanco
para restaurar um banco com dump em formato binário
pg_restore -U usuario -h ip_servidor -d nome_do_banco arquivo.dump
para restaurar somente os dados:
pg_restore -U usuario -h ip_servidor -a -d nome_do_banco arquivo.dump
para restaurar somente um determinado esquema
pg_restore -U usuario -h ip_servidor -n meu_esquema -d nome_do_banco arquivo.dump
para restaurar apenas os dados de uma tabela especifica
pg_restore -U usuario -h ip_servidor -a -t tabela_especifica -d nome_do_banco arquivo.dump

exemplos

fazendo dump de tabela da radioagencia
pg_dump -Fc -U drupal -h 127.0.0.1 -t drupal_webform -f arquivo -d drupal drupal_webform
restaurando tabela da radioagencia
pg_restore -Fc -U drupal -h 127.0.0.1 -t drupal_webform -d drupal drupal_webform
Observe o formato do DUMP, ele precisa ser tipo C ou tipo F para que o pg_restore consiga recuperar, se for plain text vai dar erro.

dicas soltas

alterando senha do usuario

postgres=#alter user fernando with password 'senha';

tamanho de uma base

dados sem arrendodamento, tamanho do bancos apenas
postgres=# SELECT pg_database_size('geekdb');
arredondando, tamanho do banco apenas
postgres=# SELECT pg_size_pretty(pg_database_size('geekdb'));
tamanho real do banco no disco arredondando
postgres=# SELECT pg_size_pretty(pg_database_size('somedatabase')) As fulldbsize;

tamanho de uma tabela

postgres=# SELECT pg_size_pretty(pg_total_relation_size('drupal_cache'));
nde

tamanho de todas as tabelas

postgres=# SELECT
  relname as "Table",
  pg_size_pretty(pg_total_relation_size(relid)) As "Size",
  pg_size_pretty(pg_total_relation_size(relid) - pg_relation_size(relid)) as "External Size"
  FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC;
  

tamanho de todos as tabelas e objetos maiores que 64k

postgres=# SELECT
  relname AS objectname,
  relkind AS objecttype,
  reltuples AS "#entries", pg_size_pretty(relpages::bigint*8*1024) AS size
  FROM pg_class
  WHERE relpages >= 8
  ORDER BY relpages DESC;
  
  

tamanho da maior tabela para menor

SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;

psql

usando o console

listando bancos

postgres=# \l

conectando a um banco

postgres=# \c nome_do_banco

outros

work mem

Quando algum processo pesado é executado, por exemplo a geracao de indices do drupal ou consultas que usam muito ORDER BY, um diretorio pgsql_temp será criado caso o uso da memoria setado na variavel WORK_MEM seja execedido.
Nestes caso o aconselhável é aumentar - perante monitoramento - o parametro WORK_MEM na sessão em que está executando a query ou rodando os indices.
SET WORK_MEM TO "64MB"
Esse valor é por consulta, se colocar um valor muito alto a máquina vai sentar bonito, procure um valor entre 64 e 128, monitorando o servidor para verificar o impacto.