domingo, fevereiro 28, 2010

Criando Partições

A criação de partições é uma novidade implementado no Microsoft SQL Server 2005, a sua função é realizar o particionamento de dados.
Abaixo criando uma partição, isso é o primeiro passo para o particionamento de tabelas, índex etc.:

create partition function partfunc (int) as
range left for values(1000,2000)

Para verificar os valores da partição:

select * from sys.partition_range_values

Criando um esquema

A criação do scheme serve para mapear as partições de uma tabela particionada ou índice para grupos de arquivos, abaixo o exemplo:

create partition scheme partscheme as
partition partfunc to
([FG1],[FG2],[FG3]);

Verificar o resultado do comando

select * from sys.partition_schemes

sábado, fevereiro 27, 2010

Begin Transaction

Uma boa prática para quem trabalha com MS SQL é utilizar a cláusula “Begin Transaction”,”Commit Transaction” e “RoolBack” este comandos são utilizados para manter a consistência na base de dados abaixo um exemplo:

Estou abrindo uma transação:

begin transaction

Agora vou executar um update em uma tabela qualquer

update teste set inteiro=11

Agora eu realizo um select na tabela e verifico que todos os dados estão alterados.
Ao abrir outra conexão com a base de dados e executar um select na tabela teste, não vou receber nenhum resultado, pois a transação está aberta.
Só que acabei lembrando que tinha esquecido a cláusula where...
Para resolver este problema é só usar o comando rollback

rollback

Ao executar o comando rollback os dados voltarão ao estado antes do update.
Para salvar um transação realizada é só realizar o comando:

commit transaction

Estes comandos são bem simples e bem úteis.

quarta-feira, janeiro 13, 2010

Implementando Constraints

Constraints são utilizadas como um meio de segurança prevenindo a entrada de dados fora de um limite estabelecido pelo DBA.
É possível criar um constraints com dois diferentes níveis:
Coluna: É aplicado somente na coluna e não pode referenciar outra coluna.
Tabela: Pode ser referenciado em qualquer coluna de uma tabela, mais não pode fazer referência a outras tabelas.

Criando um rule para validação de e-mail
create rule EmailValida
as
@value like '%@%.[a-z][a-z][a-z]' or @value like '%@%.[a-z][a-z].[a-z][a-z]';

Criando um tabela para realizar a aplicação da Rule

create table Teste(
nome varchar(30) not null,
email varchar(30) not null
)

Aplicando a rule a coluna email
EXEC sp_bindrule 'EmailValida','Teste.email'

Após aplicar a rule eu tento inserir um valor que não passa na validação da rule “s”.
insert Teste(nome,email) values ('maykon','s')
Gera o seguinte erro:

A column insert or update conflicts with a rule imposed by a previous CREATE RULE statement. The statement was terminated. The conflict occurred in database 'data', table 'dbo.Teste', column 'email'.

Este valor passa na validação

insert Teste(nome,email) values ('maykon','maykon@.com.br')
Adicionado default constraint na coluna cidade

create table Teste2(
nome varchar(30) not null,
email varchar(30) not null,
cidade varchar(60) not null default 'Cidade'
)


Unique Constraints
Com essa funcionalidade da para negar a inserção de valores duplicados em uma coluna.

create table Teste3(
nome varchar(30) not null unique nonclustered,
email varchar(30) not null,
cidade varchar(60) not null default 'Cidade'
)

Inserindo os dados

insert Teste3(nome,email,cidade) values ('maykon','maykon@sc.br',default)
Se eu tentar executar novamente a query vai gerar o seguinte erro.
Violation of UNIQUE KEY constraint 'UQ__Teste3__014935CB'. Cannot insert duplicate key in object 'dbo.Teste3'.

Criação de uma chave primária.
create table Teste4(
id int primary key,
nome varchar(30) not null
)

terça-feira, janeiro 12, 2010

Agendador de tarefas não executa batch – Windows Vista,7,2008

Depois de apanhar um tempão consegui descobrir o porquê a tarefa agendada não estava executando o arquivo .bat, ele simplesmente não executava o .bat e dava o erro 0x1
Então acabei descobrindo que se eu colocar a opção “Start in” que está como opcional a tarefa funciona corretamente.

Comando NET parte 2

Depois de muito tempo, segue a parte dois com algumas dicas do comando net.
Os comandos abortados serão: PAUSE | PRINT | SEND | SESSION |
SHARE | START | STATISTICS | STOP | TIME | USE | USER | VIEW ]

C:\ net pause Server
Pausa o serviço Server, não é todos os serviços que pode entrar em pause.
--
C:\net print
Exibe trabalhos na fila de impressão, não mais disponível no Windows 7
--
C:\net send
Envia mensagens, não mais disponível no Windows 7.
--
C:\net session
Informações sobre sessões abertas.
--
C:\net share
Administração dos recursos compartilhados.
Para compartilhar uma pasta:
C:\net share Comp=C:\Teste /remark:"Teste"
Compartilhei a pasta C:\Teste com o nome de Comp.
Deletando o compartilhamento.
C:\net share Comp /delete
--
C:\net start
Inicia um serviço, abaixo iniciando serviço de soopler.
C:\ net start spooler
--
C:\net statistics
Informações sobre serviços, os serviços disponíveis são Server e estação de trabalho.
--
C:\net stop
Para um serviço, parando o serviço de spooler do Windows
C:\net stop spooler
--
C:\net time
Sincronização do Horário do Windows.
--
C:\net use
Mapeamento de compartilhamentos
C:\ net use m: \\computador\recurso /persistent:yes
--
C:\net user
Adiciona e verifica usuários no sistema, abaixo adicionando o usuário teste com a senha @123456789
C:\ net user /add teste @123456789
--
C:\net view
Mostra os recursos compartilhados de um computador
--
Pronto essa foi a segunda parte com os commandos net.
Parte 1


Godmode - Windows

Uma dica que eu recebi da Luciana, minha colega de trabalho é o godmode, basicamente o godmode centraliza todas as configurações do sistema, funciona em Windows 7, Windows 2008, Windows Vista, pelo menos nestes eu testei. Para ativar essa função é só criar um pasta no explorer e dar o seguinte nome GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}

domingo, janeiro 03, 2010

Criação de Tabelas

É possível a criação de três diferentes tipos de tabelas no SQL Server, tabelas permanentes, temporárias e tabelas variáveis.

-- criando de uma tabela permanente
create table tabela(
endereco varchar(30) not null,
bairro varchar(30) null,
cidade varchar(30) not null,
nome varchar(30) not null,
cep char(10) null,
)

Para a criação de uma tabela temporária é só especificar o # após o table.

create table #temp
(
Nome varchar(30) not null,
)

As tabelas temporárias são criadas na database tempdb, as tabelas temporárias são automaticamente deletadas após a conexão associada terminar, no caso acima a tabela vai ficar disponível somente para o usuário que criou a tabela, se for necessário que está tabela fique disponível para todos os usuários é necessário utilizar dois ##.

Criação de uma tabela variável:
declare @teste table
(
nome varchar(30) not null
)

A criação de um tabela variável é uma alternativa a criação de tabelas temporárias, a tabela variável é utiliza na criação de tiggers e procedures, sua criação não requer espaço em disco, pois ela fica armazenada na memória.

Existem sete permissões para as tabelas são elas:
create table,
alter table,
select,
insert,
update,
delete,
references

Para dar as permissões nas tabelas utilizemos a cláusula Grant

use Teste

GRANT SELECT, INSERT, UPDATE, ALTER ON Teste TO mcp

No exemplo acima foi dado a permissão para o usuário mcp na database Teste.




quinta-feira, dezembro 31, 2009

2009 - Resumo

Em 2009 aconteceram muitas coisas na minha vida, coisas boas e ruins, mais felizmente foi um ano bom para mim, consegui mudar de emprego, para um emprego muito melhor, obtive algumas certificações Microsoft, não consegui postar mais de 100 post em meu blog, mas tudo bem, em 2010 quero ter mais de 100 post em meu blog, assim espero.
Tenho alguns planos para 2010, mais prefiro deixar eles em minha cabeça, pelo menos por enquanto, este ano foi um ano que eu pensei muito sobre a vida, e continuo a pensar sobre as coisas que acontecem e aconteceram comigo, mais espero que no final de tudo certo.

domingo, dezembro 20, 2009

Configurando Linked Server

A finalidade de configurar um Linked Server é obter acesso a uma base de dados que pode estar rodando em Access, Oracle entre outras.
Para a criar um linked Server é possível através do SSMS ou executando a procedure SP_addlinkedserver.
Usando a procedure SP_addlinkedServer

execute sp_addlinkedServer 'North','OLE DB Provider for Jet','Microsoft.Jet.OLEDB.4.0','E:\Files\Northwind.mdb'

O base de dados de teste é Norhtwind.
Executando uma query na tabela Customers

select * from north...customers

quarta-feira, dezembro 16, 2009

Especialização em Segurança da Informação

Sábado dia 12 acabei minha especialização em segurança da informação, meu TCC foi com mais três colegas, desenvolvemos um plano de segurança para a empresa onde eu trabalho, foram 18 meses de Pós mais passou rápido, agora sou um especialista em segurança da informação.!