Conheça o Raspberry pi

      3 comentários em Conheça o Raspberry pi

O que é “raspberry pi”?

O raspberry pi é uma placa mãe de tamanho extremamente reduzido, aproximadamente do tamanho de um cartão de crédito.

Comparativo de tamanho

Comparativo com case

Todo o hardware é integrado numa placa única e surgiu com o objetivo de estimular o ensino da ciência da computação básica com foco academico. As primeiras placas começaram a ser vendidas em 19 de fevereiro de 2012, e desde então, tem sido uma grande febre, tanto na europa, como na américa.

Esta placa tem o conceito de SoC (System On a Chip), incluindo um processador ARM com 700MHz, GPU (unidade de processamento gráfico) e 256mb de memória RAM.

Isto tudo significa que a placa em si só, não possui um sistema operacional integrado. É necessário inserir num cartão de memória um sistema operacional para que possa ser utilizado como um “computador de tamanho extremamente reduzido”.

Atualmente há duas versões de placa; um modelo com apenas uma porta USB (placa modelo A) e outro modelo com duas portas USB (placa modelo B).

O modelo com uma porta USB (modelo mais simples) não utiliza porta de rede onboard (RJ45). Assim, o consumo de energia deste modelo mais simples é apenas 2.5W, contra 3.5W do modelo mais completo.

 

A especificação básica da placa, modelo “B” é:

  • CPU : 700MHz (possivel overclock até 1.0 GHz)
  • GPU: Broadcom VideoCore IV – OpenGL ES 2.0 – 1080p (h.264/MPEG-4)
  • Memória: 256mb SDRAM
  • Portas USB: 2
  • Saída de Audio: Conector de 3.5mm (stereo) e HDMI (Audio Digital)
  • Saída de Video: RCA Composto (PAL & NTSC) e HDMI (de 640×350 até 1920×1200)
  • Armazenamento: Via cartão de memoria SD (usar SDHC acima de 4gb, classe 4 ou superior)
  • Consumo: 700mA (recomendada fonte 1A)

 

Os sistemas operacionais para este equipamento devem ser baseados em linux e as aplicações devem ser instaladas desde que a linguagem possa ser compilada na arquitetura ARMv6, ou seja, requer alguma atenção naquilo que se pretende instalar e utilizar.

 

Estou oferecendo a venda de um KIT, já configurado e pronto para uso. Neste equipamento, ofereço no KIT montado:

  • Placa mãe
  • Case de acrilico
  • Fonte de alimentação
  • Cartão de memoria com sistema operacional + pacote openOffice (processador de texto, planilha, etc)

Linux Debian

Solução LibreOffice

Solução LibreOffice

Media Center (em breve!)

Ao comprar este kit, serão oferecidos em primeira mão e com desconto, novos cartões de memória com novos sistemas que poderão ser utilizados.

Estarei em breve disponibilizando novas informações sobre este equipamento em meu blog, sobre todas vantagens, novas possibilidades de uso, expansões.

Adianto que estou preparando algo especial, customizado e otimizado para o usuário final. PRONTO para uso.

Tenho no momento apenas 10 unidades, aproveite.

 

 

Acompanhe aqui as novidades.

 

Maiores informações ou pedidos, entre em contato: rodrigo@pelosini.com.br

Utilize a parte de comentários deste post se desejar.

 

 

Aplicando CyanogenMod 9 no Galaxy S2

      Nenhum comentário em Aplicando CyanogenMod 9 no Galaxy S2

CyanogenMod ou apenas CM é uma ROM não oficial dos fabricantes que existe a muito tempo., bastante utilizada e no decorrer do tempo vem acompanhando as novas versões do sistema Android.

A versão 9 do cyanogenmod (CM9) para o Galaxy S2 é baseado no Android 4.0.4 (AOS), ou seja, Android PURO.

Lembre-se que aplicar root e/ou atualizar a ROM (sistema operacional) de um aparelho requer muita atenção, há riscos envolvidos e seu aparelho perde a garantia.

O procedimento que passarei aqui funcionou no meu aparelho, particularmente eu notei uma grande melhora em todos os sentidos.

Mas, tenha em mente que não me responsabilizo por eventuais danos causados ao aparelho. Se  for fazer, faça por sua conta e risco.

Outro ponto FUNDAMENTAL é que o cyanogenMod é Android Puro – NÃO possue nenhuma customização da samsung como voce pode talvez estar acostumado. O teclado swype, por exemplo, voce precisará instalar a parte. Pra encerrar, saiba que voce perderá o aplicativo de rádio FM.

Nenhuma customização da Samsung é de uso imprescendível e voce descobrirá isto quando utilizar uma versão pura. O Cyanogenmod possue várias melhorias em relação ao sistema puro. Num próximo post gostaria de poder listar algumas da várias melhorias que encontrei no cyanogenmod.

Pré-requisitos:

  • Samsung Galaxy S2 com Android 4.0 instalado
  • Ter o root aplicado no seu aparelho
  • Baixar a ROM cyanogenMod 9.10 aqui
  • Baixar o pacote do google play aqui

SUGESTÃO: Faça um backup de todas suas aplicações e dados – recomendo usar o aplicativo Titanium Backup. Mesmo em sua versão free atende a necessidade.

Atende todos os pré requisitos para o procedimento??

Sim? Então vamos agora pra receita do bolo.

  1. Transfira os dois arquivos baixados (veja em pré requisitos quais os arquivos): o arquivo da rom do cyanogenMod e o pacote gapps (ambos zip!) na raiz do aparelho (sdcard interno).
  2. Entre no modo Recovery: Aperte o botão de aumentar volume + botão Home + botão Power
  3. Selecione a opção Wipe data/factory reset, navegando com os botões de volume e confirme com o botão Power.
  4. Selecione Yes – delete all user data, em seguida, botão power
  5. Selecione Wipe cache partition e em seguida Yes – Wipe cache (sempre confirmando com o botão power)
  6. Selecione Install zip from sdcard e em seguida Choose zip from internal sdcard
  7. Siga até o arquivo da Rom Cyanogem no SDCard e clique em Yes – Install
  8. Repita o item 6
  9. Agora faça o mesmo item 7, mas com o arquivo gapps-ics-20120529-signed.zip
  10. Volte até a tela inicial e faça a seleção de “reboot system now”.

 

Pronto! Agora é só aguardar. Lembre-se que o primeiro boot demora, então, tenha muita paciencia para esperar, não adianta querer ter pressa. A pressa só atrapalha.

Em meu aparelho eu validei este procedimento e estou certo que valeu ter feito, fiquei muito satisfeito com o resultado final.

A instalação do arquivo gapps-ics-20120529-signed.zip é muito importante, pois é nele que voce encontra o google play (market).

Assim que o sistema subir pela primeira vez, sugiro entrar novamente no modo recovery e novamente fazer um wipe data/factory reset, só por garantia.

Por último, volte restaurando os aplicativos/dados pelo titanium backup.

 

Muito obrigado a toda a equipe do CyanogenMod, realmente foi um trabalho muito bem feito.

 

 

 

Visão conceitual de replicação de banco de dados

A replicação é um conjunto de tecnologias utilizadas para copiar e distribuir objetos e dados de um banco de dados para um outro banco de dados, sincronizando estes dados com a finalidade de se manter a consistência.
Destes bancos de dados, a replicação pode ser feita entre servidores ou entre servidores e clientes.

Replicação de dados entre servidores:

  • Suporte na melhoria na escalabilidade e disponibilidade;
  • Armazenamento de dados e geração de relatórios;
  • Integração de dados de diversos sites.

Replicação de dados entre servidores e clientes:

  • Suporte a troca de dados com usuários móveis;
  • Utilizado a aplicativos de ponto de vendas para o consumidor;
  • Integração de dados em diversos sites.

Componentes de topologia de replicação:

  • Publicador;
  • Distribuidor;
  • Assinantes;
  • Publicações;
  • Artigos;
  • Assinaturas.

Para entender melhor o conceito da replicação e sua topologia, normalmente usamos uma metáfora para exemplificar.
No caso a metáfora é de uma editora de revista (ou jornal, se preferir), onde a própria editora é o “publicador”, o assinante é aquele que recebe seu exemplar da revista, o distribuidor é aquele que faz a entrega e assim por diante.
O único detalhe em que esta metáfora não se enquadra quando relacionamos o caso da editora de revistas com a replicação em si é que na replicação de dados, o assinante pode efetuar atualizações (bilateral) e o publicador(editora) pode enviar alterações incrementais nos artigos. Em outras palavras, o que muda é que no caso de uma editora, você apenas recebe a informação, não atualiza e sempre a editora manda uma edição da revista na versão “final”.

Tipos de Replicação (Publicações):

  • Replicação de Instantâneo (snapshot Publication)
  • Replicação de Transacional (Transactional Publication)
  • Replicação de Mesclagem (Merge Publication)

Este é um básico, um conceito que julgo ser bastante didático e necessário, podendo ajudar quem está começando a entender o que é a “Replicação”, sua finalidade e importância. Pra quem já conhece mas não utiliza, penso que vale relembrar.

No caso de uma integração de um banco OLTP (online transacional) para um banco de ODS (Operational Data Source, que é a base do ETL para um Datawarehouse) a replicação pode suprir a necessidade como uma solução viável.

OLTP, ODS, Datawarehouse, OLAP,… são assuntos que pretendo tratar em outro post, afinal é um assunto distinto, com outro conceito e outra finalidade.

Sobre o conceito de replicação, é isto.

SQL Server: Melhor forma de remover uma replicação

Trabalhar com replicação de dados é muitas vezes necessário e não necessariamente é uma prática utilizada em todas as organizações.
Sobre o conceito da replicação, neste post eu expliquei (espero que de forma clara) em que consiste a replicação.

Aqui falarei mais sobre a forma mais adequada para remover de um banco de dados a assinatura de replicação.
No caso, o comando é sp_removedbreplication. É algo simples, rápido, seguro e confiável.
Seguro e confiável porque não há risco de ficarem dependências para trás que podem ocasionar em futuros problemas.

Se houver uma replicação do tipo “merge” (dois ou mais servidores trocando dados simultaneamente), sendo por algum motivo necessário desabilitar e recebendo o erro “Invalid object name ‘dbo.sysmergesubscriptions’“, provavelmente o comando sp_removedbreplication será necessário ser aplicado.

Antes de explicar melhor isto, vamos entender em quais outras situações o sp_removedbreplication se aplica:

  • Pode ser usado em todos tipos de replicação;
  • Útil quando a restauração de um banco de dados replicado não possui objetos de replicação que precisam ser restaurados;
  • Não pode ser usado enquanto o banco de dados estiver marcado para somente leitura.

Atenção: Somente membros do sysadmin tem a permissão para aplicar este comando.
Não me responsabilizo por possíveis danos caso não esteja totalmente seguro para execução.
Leia tudo com atenção, se for necessário faça por sua conta e risco.
Este procedimento EXCLUI toda replicação, se necessário deverá ser criado e configurado tudo novamente (o que também não é algo do outro mundo!).

Exemplo:

-- Exclui objetos de replicação de assinatura do banco de dados
DECLARE @DBsubscription as sysname
SET @DBsubscription = N'SeuBanco'

Use master
exec sp_removedbreplication @DBsubscription
GO

No caso de replicação merge e se necessário eu recomendo desabilitar a opção de merge publish, tanto no banco do servidor de distribuição como no servidor assinante – embora conceitualmente os artigos entre os mesmos são sincronizados.

sp_replicationdboption 'SeuBanco','merge publish','false'

Aproveitando o assunto, por curiosidade e por ser útil até para uma outra possível necessidade: para habilitar a opção de merge publish nos servidores, basta trocar o parâmetro ‘false’ por ‘true’.

sp_replicationdboption 'SeuBanco','merge publish','true'

Se aplicar todo este conceito, na verdade estará desfazendo TODA replicação entre servidores.
Note que os jobs usados para criar snapshots e para sincronismo são EXCLUIDOS.

Se for necessário refazer a replicação após este procedimento, não haverá problemas.

O assunto é bastante extenso, se tiver algo a acrescentar sobre este procedimento, fique a vontade para comentar!

Até a próxima.

Como listar tabelas e campos de um determinado banco de dados

Antes de mais nada, vale lembrar que esta dica se refere ao banco de dados Microsoft SQL Server, podendo na maior parte dos casos ser adaptado para outros bancos de dados, utilizando as respectivas tabelas de sistemas.

Pra que listar tabelas e campos?

Em um determinado momento, pode ser necessário documentar a especificação de entidades e atributos de um banco criado por terceiros, onde não foi fornecida nenhuma documentação com a especificação (que deveria ter sido feita ANTES da criação física).

 

Volto com foco na sugestão.

Você pode montar uma query bastante simples para listar o conteúdo de um banco de dados, utilizando as tabelas de sistema: sysobjects, syscolumns e systypes. Nesta query, é feito um relacionamento simples entre estas tabelas e atende na maior parte dos casos. O código desta query é bastante fácil de encontrar pela web.

Mas, aqui vou apresentar uma forma diferente, usando o objeto information_schema.

use <banco de dados>
go
select a.TABLE_CATALOG as Banco,
a.TABLE_SCHEMA as [Schema],
a.TABLE_NAME as Tabela,
b.TABLE_TYPE as Tipo,
a.COLUMN_NAME as [Coluna],
a.IS_NULLABLE as [Nulo],
a.DATA_TYPE as [DataType],
coalesce(
cast(a.NUMERIC_PRECISION AS varchar(5)) + ',' + cast(a.NUMERIC_SCALE as varchar(5))
, cast(a.character_maximum_length as varchar(5))) as Tamanho
from information_schema.columns as a inner join INFORMATION_SCHEMA.TABLES as b
on a.TABLE_NAME = b.TABLE_NAME
and a.TABLE_SCHEMA = b.TABLE_SCHEMA
and a.TABLE_CATALOG = b.TABLE_CATALOG
order by a.TABLE_NAME, a.ORDINAL_POSITION

Simples e rápido.

 

Até a próxima!

 

 

15 aplicativos recomendados para Ubuntu

      4 comentários em 15 aplicativos recomendados para Ubuntu

Em algum momento, diante de comentários de alguns “amigos”, você resolve “experimentar” linux (sempre há algum conhecido que utiliza e acaba te recomendando).

A distruição linux “Ubuntu” evoluiu bastante no decorrer do seu tempo de vida, e hoje temos um sistema operacional estável, aberto e muito mais amigável.
Isto não significa que voce não precise em algum momento entrar no terminal e inserir comandos.
Bem, há que não precise, vai de acordo com a necessidade.
Mas, quais seriam as ferramentas/softwares básicos e interessantes para se ter instalado?
– Tudo depende da sua necessidade, do seu perfil de uso.
Basicamente, após a instalação do Ubuntu, você é surpreendido com um pacote de aplicativos compativeis com o Office – o LibreOffice (Writer, Calc e Impress – equivalem ao microsoft word, excel e powerpoint). Interessante e tudo gratuito.
Então, aproveito aqui para passar alguns outros que valem a pena, lembrando que esta dica é voltada para usuários “iniciantes”.
  • Ubuntu One – 5gb grátis para armazenamento de arquivos em cloud.
  • Dropbox – Client para linux do dropbox, armazenamento de arquivos online, muito utilizado.
  • GIMP Image Editor – Ótimo editor de imagens, trabalha com layers, tem recursos avançados para tratamento de imagens.
  • Knemo – Para informações de estatisticas da sua rede.
  • k9copy – Para fazer backups de cds e dvds, conversão de midias.
  • Filezilla – Ótimo gerenciador de ftp.
  • Google Chrome – Navegador de internet do google.
  • Virtualbox – Gratuito e ótimo aplicativo para máquinas virtuais
  • MountManager – Para montagens de unidades (recomendado para usuários avançados)
  • Grub Customizer – Para customização da GRand Unifield Bootloader (recomendado para usuários avançados)
  • Gparted Partition Editor – Para gerenciamento de partições (recomendado para usuários avançados)
  • Okular – Visualização de documentos, útil principalmente para abrir arquivos de impressão xps
  • VLC media player – Reprodução de midias
  • Nixnote – ótimo client do evernote.
  • XBMC Media Center – Ótima interface para fazer de seu linux um media center.
Claro, estes são só alguns aplicativos que deixei aqui como destaque, algo meio básico, que testei e achei interessante.
Há inúmeros outros, para cada usuário há uma necessidade.
Para desenvolvedores em java, tanto o netbeans como o Eclipse são ferramentas fundamentais e indispensáveis.
É bastante óbvio.
Conhece algum outro aplicativo básico que não consta aqui e que gostaria de comentar?
Então, deixe seu comentário.

Relembrando a recuperação de logins do SQL

Não há grandes novidades sobre a criação e utilização de uma stored procedure para listar os logins de um SQL Server, inclusive a própria stored procedure já é bem antiga e facilmente encontrada pela web.

Mas, há sempre colegas que desconhecem este método, que é muito simples e rápido de implementar. Uma verdadeira “mão na roda”.

Vamos imaginar um cenário, onde você precisar fazer um “backup” dos logins do servidor SQL Server para ter uma cópia de segurança para ser guardado de tempos em tempos, ou então, simplesmente transferir os logins de um servidor para outros, ou de uma instancia para outra.

Primeiro, pela teoria, a primeira coisa que vem a mente é fazer um backup do banco master e restaurar no novo local.

Mas, o banco master armazena muito mais coisas do que apenas a sys.syslogins, por exemplo. E você só precisa dos logins, não de todo banco master.

Recriar os logins, pode parecer simples, mas você não necessariamente vai ter as senhas de todos os logins.

Em outras palavras, aí você identifica um problema, que pode ser chato e trabalhoso.

Como solução, você “cria” duas novas stored procedures no banco master: uma pra conversão da senha para hexadecimal (afinal, você vai precisar definir a senha para cada login!) e uma outra stored procedure que gera um script de criação dos logins e senhas. Como disse no começo, isto é algo simples e rápido.

Uma última observação, do aspecto “acadêmico” – sabemos que as stored procedures de sistemas são “sp_” e “xp_” e que é recomendável como boa prática não utilizar como nomenclatura estas iniciais. Neste caso específico vamos utilizar, em vários sites são feitas referências a estas nomenclaturas de stored procedure de “usuário”.

 

Vamos a criação das duas stored procedures. É preciso fazer nesta sequencia.

1)  sp_hexadecimal (para conversão da senha em hexadecimal)

 

USE master
 GO
 IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
 DROP PROCEDURE sp_hexadecimal
 GO
 CREATE PROCEDURE sp_hexadecimal
 @binvalue varbinary(256),
 @hexvalue varchar (514) OUTPUT
 AS
 DECLARE @charvalue varchar (514)
 DECLARE @i int
 DECLARE @length int
 DECLARE @hexstring char(16)
 SELECT @charvalue = '0x'
 SELECT @i = 1
 SELECT @length = DATALENGTH (@binvalue)
 SELECT @hexstring = '0123456789ABCDEF'
 WHILE (@i <= @length)
 BEGIN
 DECLARE @tempint int
 DECLARE @firstint int
 DECLARE @secondint int
 SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
 SELECT @firstint = FLOOR(@tempint/16)
 SELECT @secondint = @tempint - (@firstint*16)
 SELECT @charvalue = @charvalue +
 SUBSTRING(@hexstring, @firstint+1, 1) +
 SUBSTRING(@hexstring, @secondint+1, 1)
 SELECT @i = @i + 1
 END
  
 SELECT @hexvalue = @charvalue
 GO


2) sp_help_revlogin (para gerar o script de criação de logins e senhas – vamos supor que você já está no banco master, que anteriormente já criou neste mesmo banco a “sp_hexadecimal”)

IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
 DROP PROCEDURE sp_help_revlogin
 GO
 CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
 DECLARE @name sysname
 DECLARE @type varchar (1)
 DECLARE @hasaccess int
 DECLARE @denylogin int
 DECLARE @is_disabled int
 DECLARE @PWD_varbinary varbinary (256)
 DECLARE @PWD_string varchar (514)
 DECLARE @SID_varbinary varbinary (85)
 DECLARE @SID_string varchar (514)
 DECLARE @tmpstr varchar (1024)
 DECLARE @is_policy_checked varchar (3)
 DECLARE @is_expiration_checked varchar (3)
  
 DECLARE @defaultdb sysname
  
 IF (@login_name IS NULL)
 DECLARE login_curs CURSOR FOR
  
 SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
 sys.server_principals p LEFT JOIN sys.syslogins l
 ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'
 ELSE
 DECLARE login_curs CURSOR FOR
  
 SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
 sys.server_principals p LEFT JOIN sys.syslogins l
 ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_name
 OPEN login_curs
  
 FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
 IF (@@fetch_status = -1)
 BEGIN
 PRINT 'No login(s) found.'
 CLOSE login_curs
 DEALLOCATE login_curs
 RETURN -1
 END
 SET @tmpstr = '/* sp_help_revlogin script '
 PRINT @tmpstr
 SET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
 PRINT @tmpstr
 PRINT ''
 WHILE (@@fetch_status <> -1)
 BEGIN
 IF (@@fetch_status <> -2)
 BEGIN
 PRINT ''
 SET @tmpstr = '-- Login: ' + @name
 PRINT @tmpstr
 IF (@type IN ( 'G', 'U'))
 BEGIN -- NT authenticated account/group
  
 SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']'
 END
 ELSE BEGIN -- SQL Server authentication
 -- obtain password and sid
 SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) )
 EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT
 EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
  
 -- obtain password policy state
 SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
 SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
 SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']'
  
 IF ( @is_policy_checked IS NOT NULL )
 BEGIN
 SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked
 END
 IF ( @is_expiration_checked IS NOT NULL )
 BEGIN
 SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked
 END
 END
 IF (@denylogin = 1)
 BEGIN -- login is denied access
 SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )
 END
 ELSE IF (@hasaccess = 0)
 BEGIN -- login exists but does not have access
 SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )
 END
 IF (@is_disabled = 1)
 BEGIN -- login is disabled
 SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'
 END
 PRINT @tmpstr
 END
  
 FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
 END
 CLOSE login_curs
 DEALLOCATE login_curs
 RETURN 0
 GO



Feito isto, basta executar “sp_help_revlogin” que o script de criação de todos os logins virão na sua janela “Messages”.

 

Conhece outra forma ou gostaria de compartilhar o acréscimo de alguma informação? Então deixe um comentário.

 

Até a próxima.

Ativando xp_cmdshell no SQL Server via script

Por padrão e por questões de segurança, a execução da stored procedure de sistema responsável por comandos em shell são desabilitadas.
A habilitação desta stored procedure de sistema (xp_cmdshell) via comando t-sql é de forma básica e simples. Ao mesmo tempo nem todos memorizam a forma com que esta habilitação é feita, mesmo porque, é algo que normalmente voce faz uma unica vez.
Em outras palavras, não é algo feito com muita frequência.

Então, vamos lá.
A habilitação deste recurso (xp_cmdshell) é feito através de uma outra stored procedure de sistema -> sp_configure, que fica armazenada no banco de dados “master”.
Para habilitação, basta seguir este script:


EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE
EXEC master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE


Pronto! A stored procedure de sistema xp_cmdshell já está habilitada e assim ficará permanentemente.
Se por algum motivo for necessário desabilitar, basta trocar o parâmetro correspondente ao “xp_cmdshell”.
Como disse, não é algo que se faz a toda hora ou com frequência.

Simples, rápido e eficiente.

Um abraço e até a próxima.

SQL Server 2012: Utilizando Result Sets

      Nenhum comentário em SQL Server 2012: Utilizando Result Sets

Em alguns momentos é necessário utilizar uma stored procedure para retorno de valores.
Até aí, nenhuma novidade. Mas, às vezes é necessário especificar todos os campos que devem ser retornados pela stored procedure, inclusive com os respectivos datatypes.

Há uma implementação interessante que pode ser implementada e pode ser bastante útil, principalmente (e não somente) se sua chamada à stored procedure é utilizada dentro do seu projeto de integração (Integration Services).

Imagine se acrescentar no retorno novos campos dentro de sua stored procedure, ou mesmo com pequenas alterações nos tipos de dados dos campos retornados – sua stored procedure pode, mesmo “válida”, apresentar algum problema na execução, pela diferença do retorno quando você precisa de um retorno previsível.

Para “padronizar” o retorno desejado, é uma boa prática definir o “conjunto de resultados” ou melhor, o “result set“.

 

Exemplificando com um código muito simples:

 

Primeiro, a stored procedure, simples e normal – nada de diferente.


create procedure listaCliente
 (
 @patrimonio money
 ) as
 begin
 SELECT codigo, nome, telefone from cliente
 where patrimonioCliente > @patrimonio
 end


 

Segundo, a chamada à stored procedure, modo convencional – nada de diferente também.
Desta forma, o retorno é exatamente o mesmo dos campos relacionados no select.


exec listaCliente @patrimonio = 150000;


 

Agora, demonstro a utilização da mesma stored procedure com o result set:


exec listaCliente @patrimonio = 150000
 WITH RESULT SETS
 (
 (
 codigo integer;
 nome varchar(120);
 telefone varchar(20);
 )
 );


Bem, é simples e espero que a informação seja útil.

 

 

Corrigindo Falha de SPF (SPF FAIL)

      Nenhum comentário em Corrigindo Falha de SPF (SPF FAIL)

Alguns e-mails podem não ser entregues à alguns destinatários (por exemplo, usuários do terra.com.br) por apresentarem uma falha de SPF.

Mas, o que seria SPF?

SPF significa “Sender Policy Framework” e basicamente tem a finalidade de informar aos servidores de e-mails pela internet quais os endereços de IP e servidores estão autorizados a enviar o e-mail de acordo com o domínio designado pelo remetente, ou seja, uma validação de origem do e-mail de acordo com o dominio.

Exemplificando, você diz que num determinado IP, os e-mails originados de um domínio específico estão autorizados a mandar e-mail.Fora disto, o e-mail não é autorizado.

Conclusão, uma forma de aplicar uma segurança a mais – isto não significa que é uma ação anti-spam, justamente porque não é uma medida anti-spam.

Normalmente isto acontece quando você tem seu próprio domínio apontando para um servidor de hospedagem mas, por exemplo, o serviço de e-mail está em outro servidor -algo muito comum para quem utiliza o google-apps.

Para corrigir e configurar o seu SPF, é muito simples.

Basta adicionar um registro “txt” no DNS do seu servidor de hospedagem com a correspondente entrada.

Exemplos:

(Para google apps)
"v=spf1 include:_spf.google.com ~all"


(Outros servidores especificados no registro mx)
"v=spf1 mx -all"

Atenção: Note que para o google apps voce utiliza na entrada o “~all” ao invés de “-all”.

Mais informações em Open SPF e Suporte Google Apps

 

Até a próxima!!