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 conseguir 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.