Perfil de LucasLucas Souza [MCP | MCTS ...FotosBlogListasMás Herramientas Ayuda

Lucas Souza [MCP | MCTS SQL Server 2008]

23 noviembre

Restrições em Views Particionada no SQL Server 2008

Olá Pessoal,

Esses dias estive bastante ocupado e infelizmente não obtive muito tempo, todavia estarei passando algumas restrições importantes que temos que ter em mente com em relação as Views particionada no SQL Server 2008:

Todos os membros que pertence a tabela precisa obter a mesma definição da opção ANSI_PADDING;
A chave primária (primary key) de cada tabela precisa ter o mesmo número de colunas da tabela membro;
As tabelas não podem obter índices em colunas ‘COMPUTED’;
As tabelas não podem serem exibidas duas vezes dentro da definição da view;
A coluna particionada não pode ser ‘COMPUTED’,’TIMESTAMP’, constraint ‘DEFAULT’, ou ‘IDENTITY’;
A coluna definida pela constraint ‘CHECK’ precisa fazer parte da chave primária;
As colunas não podem ser usadas múltiplas vezes dentro de uma instrução SELECT;
Todas as colunas que são da tabela precisam estar contidas na instrução SELECT pertencente a view;
As colunas precisam estar na mesma posição ordinal de cada instrução SELECT, é necessário também que os tipo de dados e a ‘collation’ sejam iguais.

[]´s
Lucas Souza
MCP | MCTS SQL Server 2008 - Implementation and Maintenace
Ciências da Computação - FFB

20 noviembre

Configurando/Instalando o SQL Server 2008 (Parte 02)

No artigo anterior foi descrito quais são os Sistemas Operacionais suportados pelo SQL Server 2008, quais são as edições dísponiveis e suas features, e por último  as configurações mínima ambos de CPU/Memória para cada Edição e Sistema Operacional.

Tenha em mente quais são as limitações que o SQL Server 2008 adota, neste momento iremos efetuar a instalação do SQL Server 2008.

1º) execute o aplicativo setup.exe o qual está situado na pasta de instalação do aplicativo.


Figura 1.0 (Setup.exe)

2º) Após isto, clique em Installation situado no lado esquerdo, em seguida New SQL Server stand-alone installation or add features to an existing installation, a imagem abaixo ilustra de forma clara.


Figura 1.1 (Installation)    

3º) A próxima janela tem por objetivo mostrar as regras que o SQL Server 2008 possui, e além disso se foi bem sucedida ou não, para mais informações sobre estas regras clique em Show Details >>, ou então em  View Detailed Report para visualização em modo web, após isto clique em OK.

4º) Na janela abaixo, selecione a sua edição preferencial,e/ou digite a chave do produto conforme  você adqueriu na compra do Aplicativo,clique em Next, clique na caixa ao lado do nome I accept the license terms (se desejar copiar ou imprimir os termos exibido, clique na figura conforme desejado) em seguida Next, esta última janela de suporte a instalação de arquivos tem por objetivo mostrar os componentes requerido para instalação do SQL Server, clique em Install .



Figura 1.2 (Installation – Product Key)


Figura 1.3 (Installation – Setup Support Files)

5º) Para visualizarmos o status e a regras dísponiveis clique em Show Details, após isto clique em Next >, Clique em Select All (Selecionar todas as features), ou então selecione apenas as features que será necessário ao uso da aplicação,  selecione o diretório conforme será instalado, em seguida clique em Next >.



Figura 1.4 (Installation – Setup Support Rules)

6º) Selecione Default Instance, ou Named Instance, se necessário altere Instance ID, e Instance root directory, após isto clique em Next >, na próxima janela será exibido quanto de espaço o aplicativo irá consumir, e quanto dísponivel a unidade possui, clique em Next >.

7º) Selecione a conta para cada serviço, defina o password , escolha qual o modo que aplicação irá se comportar, ou use a mesma conta para todos os serviços (não recomendado), na aba Collation, selecione a opção conforme satisfaz a sua aplicação, apóst isto clique em Next >.
OBS: A Microsoft recomenda que você tenha uma conta para cada serviço dísponivel.

8º) Selecione a opção Windows authentication mode, ou Mixed Mode (SQL Server authentication or Windows authentication juntamente definido com o password desejado, clique em Add Current User, na aba Data Directories, veja/escolha a pasta da qual as informações serão armazenadas, na aba FILESTREAM, se necessário for que sua aplicação utilize este novo recurso marque a opção ao lado de Enable FILESTREAM for Transact-SQL access e/ou selecione a opção abaixo, para mais informações relacionado a este recurso veja: http://msdn.microsoft.com/en-us/library/cc949109.aspx (Configuring SQL Server for FILESTREAM), clique em Next >.

9º) Ao estarmos na janela (Analysis Services Configuration) , clique em Add Currrent User, na aba Data Directories, veja aonde as informações relacionadas ao serviço serão armazenadas, clique em Next >.

10º) Escolha uma das 3 opções conforme foi exibido, a primeira opção tem por objetivo instalar o serviço de relatórios (Reporting Services) no modo nativo,  segunda opção irá instalar o SharePoint no modo integrado por padrão, e a terceira e ultima opção informa que será instalado, porém não irá ser configurado, clique em Next >.

11º) A janela atual possui 2 opções, ambos tem por objetivo enviar erros ao centro de servidor da Microsoft, é recomendado que habilite as duas opções citadas.

12º) Veja que, através da opção Show Details >> podemos visualizar o sumário de todas as opções/configurações que selecionamos/escolhemos dos passos anteriores, a figura abaixo ilustra de forma mais clara, clique em Next >.


Figura 1.3 (Installation – Installation Rules)

13º) Nesta última janela será mostrado todas as informações conforme  a aplicação irá obter, e por último clique em Next >.

14º) Por último é mostrado o nome das features e o seu status, esta janela por objetivo exibir quais foram as features que obtiveram sucesso ou não.


15º) Ao chegarmos ao término da instalação,se for necessário a visualização do log de instalação (clique no link), após isto, clique em Close.

Conclusão
Concluimos explicando quais configurações mínimas requerem para obter uma instalação bem sucedida do SQL Server 2008, quais softwares e sistemas operacionais dão suporte ao aplicativo,  quanto de espaço consome cada feature que engloba o SGBD, e por último vimos a instalação do software em um ambiente real (Windows Server 2008).

[]´s
Lucas Souza

MCP | MCTS SQL Server 2008 - Implementation and Maintenace
Ciências da Computação - FFB

12 noviembre

Desconto em Certificações

A Paz Esteja Convosco,
 
A Prometric está fornecendo para os estudantes um desconto de 50% nas certificações Microsoft.
A promoção é válida até 30 de junho de 2010.
Para maiores detalhes acesse o site abaixo:
http://www.prometric.com/microsoft/student, aproveitem... logo, logo estarei agendando os meus exames! (:
 
 
[]´s
Lucas Souza
MCP | MCTS SQL Server 2008
Ciência da Computação - FFB
10 noviembre

Certificação

A Paz Esteja Convosco,
 
Gostaria de comunicar a todos que hoje obtive meu primeiro título de MCTS em SQL Server 2008 (obtive 828 Pontos), a prova foi composta por 48 questões. Em breve estarei criando algumas perguntas e respostas com em relação a este exame, tenho por objetivo ajudar aqueles que estão postos a fazer, obrigado.
 
[]´s
Lucas Souza
MCP | MCTS SQL Server 2008
Ciência da Computação - FFB
09 octubre

Student to Business (2ª FASE)

Olá Pessoal,
 
Estou comunicando á todos os aprovados para a 2ª FASE do programa Studento to Business (Microsoft)
 
Local: Fanor Dunas - Av. Santos Dumont, 7800 - Dunas - Fortaleza - Ceará - Fone/Fax: (85) 3052.4848
Rua Antônio Gomes Guimarães, 150 - Papicu. Fortaleza-CE 85.3052.4827

 
Os dois endereços acima são do Dunas, no site na FANOR tem o primeiro e no site do S2b o segundo. Mas é o mesmo local.
 
Infra-Estrutura

idestudante Nome Email
8382 Leandro Franklin dos Santos leandrofranklin@msn.com
21176 Lones de Castro Maciel lonnix@hotmail.com
1236 Sérgio Ricardo Gurgel Menezes sergio@aubitec.com.br
13557 Diego Fernando da Silva Oliveira diego.fernando2@hotmail.com
1132 Lucas Souza Saraiva lucassouzace@hotmail.com
15806 Livio Oliveira Fichera lfichera@hotmail.com
15184 Sandra Souza Ribeiro sr_sandrinha@yahoo.com.br
746 JULIANA MARIA JALES BARBOSA julianajalesbarbosa@yahoo.com.br
3072 Ramon Weslley Vasconcelos Barreto ramon.weslley@gmail.com
15390 Francisco Roberto do Nascimento Dias roberto-nascimento22@hotmail.com
115 Bruno Tinoco Prado bruno.itprofessional@hotmail.com
4337 JOSÉ OSVALDO MESQUITA CHAVES omosquiteiro@yahoo.com.br
17228 Anderson Henriques de Souza Moreira inforplay_lan@hotmail.com
20667 Danilo Régis de Souza Barbosa danilo.ffx@gmail.com
17393 Daniel Lima Catunda d.catunda@click21.com.br
12720 Jocastra Pinheiro Aguiar jocastraguiar@gmail.com
16822 Ednardo Cavalcante Teixeira Junior ednardo_jr_7@hotmail.com
18698 Fabiano Pereira de Lima fabiano_lima2000@hotmail.com
9359 Vlademir Nogueira de Oliveira vlademirnogueira@hotmail.com
718 Kilvia Cristina Chagas dos Santos. kilvia@gmail.com

 
Desenvolvimento
idestudante Nome Email
967 Rubens Cadete Parente rubensparente@yahoo.com.br
13375 Carlos Eduardo Valentim Vieira eduardovalentim79@hotmail.com
19008 RAIMUNDO NONATO RAMOS RAMOSNR@GMAIL.COM
18735 giliard gomes vieira giliardwebmast@gmail.com
331 FRANCISCO CLEBSON PESSOA DA SILVA cvafam@hotmail.com
8972 Tiago Ponte Carvalho Vasconcelos tiago_vascon@hotmail.com
10487 Dhiego Francisoc Tamanini dhiegotamanini@gmail.com
9250 Donnis kilvisson Siva de Oliveira donnisoliveira@gmail.com
18079 Igor Sheldon da Silva Pessoa igorsheldon@hotmail.com
38 José Evilásio Dias Rocha Filho evilasiodr@hotmail.com

 
O Cronograma:
 
Abaixo segue os dias e horári referentes a sua trilha:
 
 

DIA

Data

Horário

Turmo

Infra

Dev

FASE 02

 

 

 

 

 

 

Sabado

10/out

08:00

Manhã

x

x

 

 

13:00

Tarde

x

x

 

 

 

 

 

 

Sabado

17/out

08:00

Manhã

x

x

 

 

13:00

Tarde

x

x

 

 

 

 

 

 

Quinta

22/out

18:30

Noite

x

x

Sexta

23/out

18:30

Noite

 

 

Sabado

24/out

08:00

Manhã

x

x

 

 

13:00

Tarde

x

x

 

 

 

 

 

 

Quinta

29/out

18:30

Noite

x

x

Sexta

30/out

18:30

Noite

 

 

Sabado

31/out

08:00

Manhã

x

x

 

 

13:00

Tarde

x

x

 
Quem não recebeu e-mail, ou não teve pontuação mínima ou escolheu a trilha de Design WEB, que não temos no Ceará.
 
[]´s

Lucas Souza
06 octubre

Configurando/Instalando o SQL Server 2008 (Parte 01)

A Paz do Senhor Esteja Convosco,

Nesta Série de artigos tenho por objetivo descrever como devemos configurar/instalar o SQL Server 2008 em um ambiente comporativo, sendo assim estarei mostrando á vocês passo-a-passo como devemos configurar/instalar utilizando o S.O (Sistema Operacional) Windows Server 2008 Enterprise, é possível efetuar a instalação em outro S.O, porém é necessário termos em mente quais são as limitações que o SQL Server 2008 adota.

Antes de iniciarmos a instalação do aplicativo, quero mostrar a todos vocês quais são as configurações mínimas requerida de hardware para termos a instalação do SQL Server 2008 bem sucedida, a tabela abaixo ilustra de forma clara e simples.

REQUERIMENTO

64-BITS

32-BITS

PROCESSADOR

Itanium, Opteron, Athelon ou Xeon/Pentium com suporte a EM64T

Pentium III ou superior

VELOCIDADE PROCESSADOR

1.6 GHZ ou superior

1.0 GHZ ou superior

MEMÓRIA

512 MB

512 MB

Tabela 1.0 (Hardware Requerimento)

Para mais informações relacionado aos requerimentos mínimo de Hardware e Software, veja: “Hardware and Software Requirements for Installing SQL Server 2008”.

Requerimento de Softwares
Alguns aplicativos geralmente requerem atualizações básicas sendo ambos no S.O e Softwares, sendo assim o SQL Server 2008 requer ambos .NET Framework 3.5 e Windows Installer 4.5.  

OBS: .NET Framework 2.0 já inclui Windows Installer 3.1.

Além dos requerimentos conforme descrito acima, o SQL Server 2008 também requer alguns outros componentes, por exemplo:

o    Internet Explorer 6 SP1 ou superior;

o    Shared Memory (Memória Compartilhada), Named Pipes ou suporte a rede TCP/IP;

o    Microsoft Data Access Components (MDAC) 2.8 SP1 ou superior.

Suporte a Sistemas Operacionais
SQL Server 2008 pode ser instalado em versões ambos Microsoft Windows  32-bits e/ou 64- bits, lembre-se de que:  a versão 64-bits do SQL Server pode ser instalado apenas na versão 64- bits do Windows e a versão 32-bits do SQL Server pode ser instalada ambos na versões 32-bits e 64-bits do Windows.

O SQL Server Express suporta os seguintes sistemas operacionais (S.O):

o        Windows XP Tablet Edition SP2 ou superior;

o        Windows XP Media Center 2002 SP2 ou superior;

o        Windows XP Home Edition SP2 ou superior;

o        Windows XP Home Reduced Media Edition;

o        Windows XP Professional Reduced Media Edition;

o        Windows XP Professional Embedded Edition Feature Pack 2007 SP2;

o        Windows XP Professional Embedded Edition for Point of Service SP2;

o        Windows Server 2003 Small Business Server Standard Edition R2 ou superior.

Os sistemas operacionais (S.O) abaixo suportam todas as edições do SQL Server:

o        Windows Server 2003 Standard SP2 ou superior;

o        Windows Server 2008 Standard ou superior;

Os sistemas operacionais (S.O) que dão suporte as edições SQL Server Express,  Developer e Evaluation são:

o        Windows XP Professional SP2 ou superior;

o        Windows Vista Home Basic ou superior.

OBS: SQL Server 2008 não dá suporte ao sistema operacional (S.O) Windows Server 2008 Server Core, isto devido ao .NET Framework que não é suportado no Server Core.

Edições dísponiveis no SQL Server 2008

§  Enterprise:  Útilizavel em ambientes corporativo pelo qual possuí grande volume de dados, além disso é possivel utilizar todas as features (características) dísponiveis do aplicativo.
OBS: Dá suporte ao número máximo de processadores que o servidor possui.

 

§  Standard: Projetado  para organizações pequenas e médias as quais não necessitam amplamente de todas features (caractéristicas).
OBS: Suporta no máximo quatro processadores por servidor.


§  Workgroup:  Edição pelo qual pode ser útil em cenários de pequeno volume de dados em estações que possuem poucos servidores.
OBS: Suporte apenas dois processadores.

 

§  Express: Esta edição é totalmente gratuíta,  ou seja, útil em cenários aonde envolva pequeno volume de informações.
OBS: Suporte a 1 CPU, 1GB MB e o banco de dados não pode exercer o tamanho de 4GB.

 

§  Web Edition: Edição que suporta alto nível de aplicação para banco de dados na web, sendo asssim, oferecendo o menor custo.
OBS: Suporte apenas quatro processadores.

 

§  Developer: Possui todas as features (características) da Enterprise, porém pode ser utilizado apenas em ambientes de teste, ou seja, não é permitido o uso desta edição para produção.

 

§  Compact Edition: Esta edição é propriamente utilizada em aplicativos pelos quais se conectam diretamente a dispositivel móvel (celulares),.
OBS: Não pode exercer o tamanho de 4GB, Pode-se utilizar apenas 1 CPU e além disso não limita o uso máximo de memória, idêntica a edição Express, todavia não possui algumas features (características) de progamabilidade, por exemplo: triggers, stored procedures,  views.

Desde já, podemos escolher qual dentre as edições citadas acima satisfaz a nossa aplicação comercial, no entanto, é interessante também sabermos qual o tamanho de cada componente que engloba o SQL Server, a tabela abaixo tem por objetivo mostrar quanto de espaço físico cada componente irá ocupar no disco rígido existente.

Tamanho físico dos arquivos de banco de dados

Componentes de banco de dados

280MB

Analysis Services

90MB

Reporting Services

120MB

Integration Services

120MB

Componentes Client

850MB

Tabela 1.1 (Componentes do SQL Server)

 

OBS: lembre-se que, o SQL Server 2008 não pode ser instalado no S.O Windows Server Core.

Caros usuários, se por acaso sua aplicação estiver situada no SQL Server 2005 e deseja atualizar para o 2008, utilize a tabela abaixo que tem por objetivo a verificação das edições que o SQL Server suporta.

Considerações em atualização

SQL Server 2008 (32-bits)

* SQL Server 2005 (32-bits)
* SQL Server 2005 (64-bits) x64

SQL Server 2008 (64-bits) IA64 

* SQL Server 2005 (64-bits) IA64

SQL Server 2008 (64-bits) x64

* SQL Server 2005 (32-bits)
* SQL Server 2005 (64-bits) x64

Tabela 1.2(Atualizações no SQL Server)

 

[]´s

Lucas Souza
http://www.souzalucas.spaces.live.com

 

20 septiembre

Alta disponibilidade no SQL Server

A definição básica de Hight Availability (Alta-Disponibilidade) pode ser descrito de forma simples, ou seja, é a solução que permite o hardware ou software em caso de falha continue sendo executado ou melhor, funcionando. A solução de alta-disponibilidade é funcionável através da redundância de drivers, memória ou CPU no servidor.

Particulamente quando definimos a redundância dos díscos rígidos em nossa aplicação geralmente aplicamos a tecnologia RAID (Redundant Array of Inexpensive Disks), ou seja, esta tecnologia tem por objetivo nos oferecer diversas opções relacionado á perfomance, segurança, alta-disponibilidade no sistema operacional (S.O), todos níveis de RAID requerêm pelo o menos dois discos rígidos dísponiveis, sendo que alguns é necessário termos três ou quatro.

RAID 0: Aonde em todos os discos são escritos numa só vez. A parte superior deste nível RAID é bastante rápida e econômica, porém em caso de falha de hardware os díscos irão perder as informações processadas.

RAID 1: Aqui é necessário ter pelo menos dois discos rígidos, os dados são escritos primeiramente ao disco um e também será escrito ao disco dois numa só vez, este level tem por objetivo nos garantir ótimo benefício com relação á alta-disponibilidade, ou seja, em caso de falha as informações não serão perdidas, com relação á perfomance não é uma boa escolha.

RAID 5: É o mais comum usado, nos garante ambos as funcionalidades de RAID 0 e 1, porém tem o menor custo por gigabyte, o RAID 5 requer pelo o menos três díscos rígidos, este lével (RAID 5) é escrito em todos discos com exceção á um.

RAID 6: É um novo level RAID dísponivel dentro no mundo de banco de dados, este level requer pelo o menos quatro dísco rígido, similar ao RAID 5 com exceção de que usa dois drivers separados.

RAID 10: É o mais caro entre todos dísponiveis, possuí alta redundância e execução, requer pelo o menos quatro dísco rígido;

Veja bem, acima mostra-se cinco tipos distintos de RAID, Uma das perguntas que sempre vem a mente é: Qual deles é o melhor¿ Esta resposta pode ser facilmente respondida: Qual objetivo de sua aplicação¿, perfomance¿, alta-disponibilidade¿  segurança¿, Se necessário for buscar sua resposta pergunta á si mesmo e adquira o que submeter a sua aplicação.

Opções de Alta-Disponibilidade
Existem diferentes opções de alta-disponibilidade que garante ao usuário confiabilidade em sua aplicação comercial e além disso, cada opção possuí objetivo distinto por mais que pareçam similares.

Log Shipping (overview)
Dísponivel em versões anteriores ao 2008, esta é uma das opções de alta-disponibilidade considerada mais antiga no SQL Server a qual tem por objetivo a efetuação de backup completo (full backup) do banco de dados e restaurá-lo em máquinas distintas.
Vale lembrar que Log Shipping está dísponivel em todas edições do SQL Server 2008 cobradas, ou seja, Enterprise, Standard, WorkGroup, Web, e além disso, não requer hardware especial para funcionamento, no entanto é necessário termos dois servidores que estão usando hardwares iguais.
OBS: SQL Server 2000 permite log-shipping apenas na versão Enterprise, já no SQL Server 2008 possuí em várias como foi descritas acima.

Log Shipping é consistido por três operações:
01) Backup do transaction log na instância do servidor primário;
02) Cópia do arquivo transaction log para a instância do servidor secundário;
03) Restaurar o backup do transaction log na instância do servidor secundário.

Para utilizar o log-shipping siga os passos abaixo:

01) Na janela Object-Explorer, clique com o botão direito encima do banco de dados desejado, em seguida Tasks, a imagem abaixo ilustra de forma clara.


Figura 1.0 (Object Explorer – Tasks(Shipg Transaction Logs))

Apartir de já podemos configurar/alterar algo referente na aplicação pelo qual utiliza o log shipping.

Mirroring(overview)
Relativamente é outra opção de alta-disponibilidade que foi introduzida no SQL Server 2005 que garante uma solução altamente confiável e robusta. Existe diversos caminhos para configurarmos o espelhamento (mirroring), um deles seria o modo assícrono (asyncrhronous mode), e / ou síncrono (syncrhronous mode).
Ultimamente o modo síncrono
(
syncrhronous mode). tem sido mais utilizado em aplicações pelas quais existem apenas dois servidores de banco de dados, isto devido aos tipos de transações de um enviando para o outro, no caso ambos são isolados, ou seja, as mudanças criadas/alteradas no servidor primário são escritas também no servidor secundário (mirroring) e assim enviando o ‘agradecimento’ de que a aplicação sofreu alteração ou algo similar.
Já em relação ao modo assícrono(asyncrhronous mode) os comandos são rodados primeiramento no servidor primário e em seguida é enviado o ‘agradecimento’  de volta ao cliente, depois que a transação for executa com sucesso rapidamente será posta ao servidor de espelhamento (mirror server).

Benefícios:
* Alto nível da proteção a dados;
* Garante alta-disponibilidade de dados;
* Garante dísponibilidade em banco de dados de produção durante atualizações.

OBS:
*
Espelhamento de dados (Data Mirroring) pode ser utilizado apenas no modelo ‘recovery full’, ou seja, as opções de simple e bulk-logged não suporta espelhamento;
* Não é possivel aplicar o espelhamento nos banco de dados master, msdb, tempdb ou model.

Além disso o Data Mirroring pode ser utilizado com os seguintes componentes do SQL Server:
* Replication;
* Database snapshot;
* Full-Text Catalogs;
* Log-shipping.

Para configurarmos o Data Mirroring clique com o botão direito no banco de dados desejado em seguida Tasks > Mirror como mostra a imagem abaixo.

 
Figura 1.1 (Object Explorer – Tasks(Mirror))

Desde já podemos iniciar nosso espelhamento no banco de dados desejado.

Clustering
Windows Clustering é viável ao Microsoft Cluster Service (MSCS), ou seja, é uma das tecnologias de alta-disponibilidade mais utilizada em aplicações de grande porte. O conceito de Windows Clustering é que você tenha únicamente configurado díscos rígidos para ambos os servidores de acesso, ou melhor, você instala e em seguida configura o Microsoft Cluster Service em ambos os servidores de cluster e após isto inicia a instalação do SQL Server utilizando a opção de Cluster como desejavelmente quer.

O cluster está aplicado geralmente em dois ou mais servidores unidos mostrando-se como um único servidor, os servidores que estão conectados ao cluster permitem o compartilhamento de cargas de trabalho, permite unicamente um ponto de gerenciamento/operação e além disso nos garante um dirétorio altamente beneficiado e protegido, sendo assim o objetivo do Cluster é fornece um ambiente de Alta-disponibilidade.

Para iniciar a instalação do Cluster juntamente com o SQL Server clique no link New SQL Server Stand-Alone Installation ou então abaixo dele, no link New SQL Server Failover Cluster Installation, a figura abaixo ilustra de forma mais viável.


Figura 1.2 (SQL Server Installation Center – High-Availability)

Apartir de então podemos escolher qual das opções acima satisfaz o nosso ambiente e  após isto aplicarmos.

Links:

Installing a SQL Server 2008 Failover Cluster:
http://msdn.microsoft.com/en-us/library/ms179410.aspx

White papers

SQL Server 2008 Failover Clustering:
http://sqlcat.com/whitepapers/archive/2009/07/08/sql-server-2008-failover-clustering.aspx

SQL Server 2008 High Availability:
http://www.microsoft.com/sqlserver/2008/en/us/high-availability.aspx

 

[]´s
Lucas Souza

12 septiembre

O que são Views no SQL Server¿

Simplismente pode ser descrito como uma ou mais instrução SELECT contendo schema, colunas, atributos, etc.  As views são comumente conhecidas como tabelas virtuais as quais tem por objetivo capturar colunas de tabelas existentes no banco de dados, desta forma podemos definir o nome específico da view e armazenar-la no banco de dados. A maior vantagem das Views é criar-las contendo uma ou mais instrução SELECT, a sintaxe da criação da view mostra-se abaixo:

CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]

[ WITH <view_attribute> [ ,...n ] ]

AS select_statement

[ WITH CHECK OPTION ] [ ; ]

 

<view_attribute> ::=

{

    [ ENCRYPTION ]

    [ SCHEMABINDING ]

    [ VIEW_METADATA ]     }

 

Apartir do momento que sabemos que as views armazenam instruções SELECT definida  pelo usuário, além disso vale lembrar que as instruções SELECT pode ser referenciada por tabelas, views ou até mesmo funções.

 

BENEFÍCIOS

o    Nos garante um mecanismo de segurança que restringe aos usuários ter permissões nos dados em uma ou mais tabelas;

o    Garante os desenvolvedores visualizarem apenas os dados armazenados em tabelas lógica;

o    Mineração de dados através de cargas de trabalho;

o    Data warehouses;

o    Data marts;

o    Armazenar e originar processamento analítico online (OLAP)

o    Decisão para suportar cargas de trabalho

 

LIMITAÇÕES

o    Usar a cláusula OPTION;

o    Usar a palavra-chave INTO;

o    Referenciar tabelas temporárias, variáveis ou outros tipos;

o    Contêr a cláusula ORDER BY ao menos que específique o operador TOP;

o    Contêr a cláusula COMPUTE ou COMPUTE BY.

OBS: As views podem contêr múltiplas instruções SELECT juntamente utilizadas com os operadores UNION ALL ou UNION;
A view pode ser criada apenas no banco de dados atual e além disso não pode exercer o valor de 1024 colunas

Exemplo¹:

-- Esta view tem por objetivo a exibição de dois campos para cada tabela distinta, sendo elas: Product, Address, Customer

CREATE VIEW dbo.ViewTeste

AS

SELECT ProductID, Name FROM AdventureWorks.Production.Product

UNION ALL

SELECT AddressID, City FROM AdventureWorks.Person.Address

UNION ALL

SELECT CustomerID, CustomerType FROM AdventureWorks.Sales.Customer

 

Exemplo²:

 

-- Esta view tem nos mostra a soma do Total de impostos da tabela SalesOrderHeader, sendo assim nos trazendo apenas os resultados em que a data esteja acima do ano 1992, mês 11, dia 25.

CREATE VIEW dbo.TotalVendas

AS

SELECT TOP 100 SalesPersonID, SUM(TotalDue) AS TotalSales

FROM Sales.SalesOrderHeader

WHERE OrderDate > CONVERT(DATETIME,'19921125',101)

GROUP BY SalesPersonID;

GO

 

Se por acaso for necessário utilizar operações de indexes nas views é necessário seguirmos alguns passos, por exemplo:

 

o    Verifique a configuração da opção ANSI_NULLS se está corretamente assinalada para todas a tabelas existentes a qual irá ser referenciada dentro da view;

o    Verifique a configuração ANSI_NULLS se está corretamente assinadada para a sessão atual que mostra-se dentro da tabela;

o    Verifique as propriedades ANSI_NULLS e QUOTED_IDENTIFIER se está corretamente assinaladas as sessões atuais mostradas na tabela;

o    Verifique se a definição da view é deterministica, para mais informações, veja: Deterministic and Nondeterministic ;

o    Crie a view usando a opção WITH SCHEMABINDING;

o    Verifique suas sessões com a opção SET e vejam como estar corretamente mostrada na tabela;

o    Crie finalmente o index clustered unique dentro na view.

 

[]´s

 

Lucas Souza

 

 

29 agosto

Novidades no SQL Server 2008 com Integration Services, Analysis Services e Reporting Services

A Paz do Senhor Esteja Convosco,


Neste artigo iremos abordar algumas novidades que estão presentes no SQL Server 2008, novidades estas que sempre vem nos garantindo possuírmos aplicações úteis e ao mesmo fáceis de gerenciar.

 
 

Integration Services (SSIS)

Presente em versões anteriores ao 2008, tem por objetivo a capacidade de Extrair (Extract), Transformar (Transform) e Carregar (Load) dados ou melhor, comumente conhecido como ETL, nos permite construimos aplicações que seja capaz de gerenciar ambos banco de dados e fontes de informações sobre-carregadas.

Integration Services no SQL Server 2008

Suporte á scripts VSTA, podendo assim utilizar juntamente com aplicações C#.NET ou Visual Basic.NET.

Novos tipo de dados ‘time e date’ o qual nos permitem aplicarmos em intervalos ou zonas de tempo definido pelo usuário.

Nos permite aprimorar operações de consultas altamente fragmentadas através do novo transformador de dados.

Permite nos livrarmos de arquivos sujos os quais foram gerados nos próprios pacotes pessoais.

Componentes ADO.NET permitindo agora enviar/receber arquivos de provedores compátiveis juntamente com ADO.NET.

Mecanismo Change Data Capture (CDC) armazenado diretamente dentro do SSIS, permitindo pacotes para extração e manipulação de dados.

 

Analysis Services (SSAS)

Está presente também em edições anteriores ao 2008, SQL Server Analysis Services pode ser conhecido como uma ferramenta de processo analítico (OLAP) , permite a distribuição de consultas, scripts e também capaz de gerenciar cubos que foram criados pelo Business Intelligence Development Studio (BIDS).

Analysis Services no SQL Server 2008

Permite dividir ambos os dados testados e também nos capacita á preparar-los.

Permite visualisar a consulta dos dados em cache que estão em modelos minerados (mining), similiar ao que pode ser visto em versões anteriores.

Permite cruzar múltiplos modelos de dados minerados que foram validados, além disso podemos também determinar quais deles poderiam ser o modelo exato.

Sequências de algortimos produzidos pela Microsoft que podem agora ser configurados para utilizar juntamente com o padrão ARTxp ou ARIMA o qual é o novo.

Extensões personalizadas que permitem adicionar métricas para o cubo e além disso á possibilidades de compartilhar informações com usuários que estão dentro do cubo.

 

Reporting Services (SSRS)

SQL Server Reporting Services tem por objetivo á distribuição de relátorio de dados. Esta ferramenta nos garante possuirmos uma plataforma ambos robusta e organizada com a capacidade de construir relátorios complexos que podem ser vistos em portais web e assim serem também acessados através de regras de segurança definidas pelo usuário.

Reporting Services no SQL Server 2008

Capacidade de integração com SharePoint através de interfaces programáveis.

Pode-se criar relatórios dentro do Business Intelligence Development Studio (BIDS) ou através do único Report Designer.

O mapeamento de relatórios tem melhorado para nos garantir ambos os tipos de gráficos específicos e controle de elementos.

Uma nova região para estimar os dados agora é dísponivel com a funcionalidade similar ao Key Perfomance Indicators (KPIs) o qual é usado no SQL Server Analysis Services cubos.

As variáveis podem ser declaras ambos global ou escopo para especificar os grupos necessários.

As tabelas, matrizes e listas de regiões de dados foram substituidas por uma única região o qual tem a capacidade de assumir as três em uma só.

Pode-se criar de forma automática relátorios para Excel, Word, Imagens, PDF, CSV, Web Forms, Windows Forms e formatos XML.

Regiões de dados aninhados podem ser invertidos para Excel.

Eliminação do IIS na área de configuração, o servidor de relátorio é retornado totalmente autênticado.

Os administradores podem definir a quantidade de memória necessária para se consumir juntamente com os servidores de relatórios.

O servidor de relatório não requer o IIS e está nativamente no ambiente padrão, a biblioteca HTTP.SYS permite acesso a relatórios(únicos) e servidores de relatórios.

Itens dos relatórios ‘Dundas’ são completamente suportados.

[]´s

Lucas Souza

19 agosto

SQL Server 2008 R2

 


    Gostaria de indicar á todos que a Microsoft lançou o SQL Server 2008 R2, no entanto vale lembrar que é uma versão preview e está dísponivel apenas para assinantes TechNet e MSDN, lembrando que também o público tem a permisão de efetuar o download e por enquanto só possuí a versão Inglês(English).
    Esta versão nos garante termos mais produtividade e redundância dos dados gerenciados na aplicação, sendo assim SQL Server 2008 R2 facilita com que os usários construa ricas organizações de relatórios garantindo assim excelentes fontes de dados.

Efetue o download do SQL Server 2008 Aqui:
Download the CTP

 

[]´s

Lucas Souza

12 agosto

SQL Server - Dicas ao utilizar datetime

A Paz do Senhor Esteja Convosco,
 
Estarei trazendo para todos vocês hoje uma dica em relação á hora/minuto no SQL Server, no entanto vale para qualquer versão/edição, todavia estarei utilizando a edição 2008.
 

Propriedade

Resultado 

Sintaxe

Data e Hora

Exemplo

DECLARE @VarDataTime datetime

CREATE TABLE TableDateTime ( ColumnDateTime datetime )

Intervalo de data

Janeiro 1, 1753, á Dezembro 31, 9999

Intervalo de tempo

00:00:00 á 23:59:59.997

Elementos de intervalo

YYYY quatro digitos de 1753 á 9999 pelo qual representa o ano.

MM dois digitos, intervalo de 01 á 12, representando assim o mês no ano especificado.

DD dois digitos, intervalo de 01 á 31, dependendo do mês representa o dia do mês especificado.

hh dois digitos, intervalo de 00 á 23, representando hora.

mm dois digitos, intervalo de 00 á 59, representado minuto.

ss dois digitos, intervalo de 00 á 59, representando segundo.

n* de zero para representa três digitos, intervalo de 0 á 999, representa frações em segundos.

Tamanho caractere

19 posições mínima á 23 máxima.

Tamanho armazenado

8 bytes

Precisão

Incrementando o arredondamento de .000, .003, ou .007 segundos.

Resultado Padrão

1900-01-01 00:00:00

Calendário

Gregoriano (Não incluí intervalos de anos.)

 
Bem, vamos agora ao que interessa.
 
Primeiramente se por acaso quisermos saber os resultados referente á hora, minuto e segundo no SQL Server 2000 e 2005 podemos executar á instrução abaixo:

SELECT

   CONVERT(VARCHAR(8),GETDATE(),108) AS HoraMinutoSegundo
GO

Podemos também saber em que dia estamos:

SELECT

   CONVERT(VARCHAR(8),GETDATE(),101) AS DateOnly
GO
 
Quando passamos á utilizar o SQL Server 2008 nos torna mais fácil até porque temos novos tipos de dados, por exemplo: date, time, entre outros...
 

SELECT
  

CONVERT(TIME,GETDATE()) AS HoraMinutoSegundo,
  
CONVERT(DATE,GETDATE(),101) AS ApenasData
GO

datetime
http://msdn.microsoft.com/en-us/library/ms187819.aspx

OBS: Estes tipos de dados citados acima (TIME,DATE) estão dísponiveis apenas na edição 2008.
 
[]´s
 
Lucas Souza
08 agosto

Utilizando dados espaciais no SQL Server 2008 (Parte 02)

A Paz do Senhor Esteja Convosco,

No artigo anterior falamos qual a importância dos dados espaciais em nossas aplicações, porque e quando devemos utilizar, o que é o plano geométrico e suas dimensões, qual diferença dos tipos de dados geometry e geography os quais são novos tipos de dados que estão presente no SQL Server 2008 e por último vimos quais são os tipos específicos para cada tipo de dados existente.

Ao termos conhecido as diferenças dentre os tipos de dados geometry e geography o que nos resta neste momento é conhecermos quais são os diferentes formatos que podem ser utilizados para representar os dados espaciais, existe exatamente três:

1.      The Well-Known-Binary (WKB) format

2.      The Well-Known-Text (WKT) format

3.      The Geography Markup Language (GML) data format.

Todos os formatos mostrado acima foram publicados pela Open Geospatial Consortium (OGC) o qual é lider dos padrões geoespaciais e serviços baseados em locazalições.

1.      The Well-Known-Binary (WKB) format : Este é o formato binário pelo qual representa a instância do tipo de dados geography, é um dos formatos  preferidos serializados das aplicações que necessitam armazenar informações geoespacial em compactação.

 

2.      The Well-Known-Text (WKT) format: Este formato é compacto, ou melhor nos garante uma leitura fácil, isto porque é um formato amigável e o mais comum para se usar em consultas geoespaciais.

 

3.      The Geography Markup Language (GML) data format: Este formato representa o padrão (XML), o qual é a melhor alternativa para incluir informações geoespaciais em documentos XML. Este formato é útil em aplicações onde é necessário alterar informações geoespaciais por meios de XML Web Service.

Os padrões conforme foi ilustrado acima nos oferece vastas vantagens, o que precisa ser analisado é: Qual deles se comportaria de melhor forma em nossas aplicações. Os dados espaciais também suportam algumas funções, atualmente existem mais de 60 nos tipo de dados geometry  e geography.

STDifference
Retorna uma nova instância consistindo em pontos da instância base em que não contém pontos da instância parâmetro

-- Results: POLYGON ((10 10, 40 10, 40 26.666666666666668, 20 20, 26.666666666666668 40, 10 40, 10 10))

DECLARE @g geometry

        = 'POLYGON((10 10, 40 10, 40 40, 10 40, 10 10))'

DECLARE @h geometry

        = 'POLYGON((20 20, 50 30, 50 50, 30 50, 20 20))'

       

SELECT  @G.STDifference(@H).ToString();


Figura 1.0 (Function - STDifference)

STIntersects
Retorna verdadeiro se todos os valores geometric possuír mais de uma interseção, por outro lado este método irá retorna NULL se todos SRID da instância não possuír o valor adequado ao SRID da outra instância ou melhor, este método tem por objetivo conter apenas os pontos comum entre a instância base a instância parâmetro;

-- Results: POLYGON ((30 30, 40 30, 40 40, 30 40, 30 30))

DECLARE @g geometry

        = 'POLYGON((10 10, 40 10, 40 40, 10 40, 10 10))'

DECLARE @h geometry

        = 'POLYGON((30 30, 50 30, 50 50, 30 50, 30 30))'

 

SELECT @g.STIntersection(@h).ToString();


Figura 1.1 (Function - STIntersects)

STSymDifference
Retorna uma nova instância contendo apenas os pontos únicos da instância base e parâmetro  (i.e., excluindo os pontos que retornam STIntersection() )

-- Results: MULTIPOLYGON (((50 30, 50 50, 30 50, 40 40, 50 30)),

                         ((10 10, 40 10, 40 40, 10 40, 10 10)))
DECLARE @g geometry
        = 'POLYGON((10 10, 40 10, 40 40, 10 40, 10 10))'

DECLARE @h geometry

        = 'POLYGON((40 40, 50 30, 50 50, 30 50, 40 40))'

 

SELECT  @g.STSymDifference(@h).ToString();


Figura 1.2 (Function - STSysmDifference)

STUnion
Retorna uma nova instância contendo todo os pontos aninhados da instância base e parâmetro.

-- Results: MULTIPOLYGON (((50 30, 50 50, 30 50, 40 40, 50 30)),

                          ((40 10, 40 40, 10 40, 20 20, 40 10)))

DECLARE @g geometry

        = 'POLYGON((20 20, 40 10, 40 40, 10 40, 20 20))'

DECLARE @h geometry

        = 'POLYGON((40 40, 50 30, 50 50, 30 50, 40 40))'

 

SELECT @g.STUnion(@h).ToString(); 

 
Figura 1.3 (Function - STUnion)

Blended Types
Este método descreve não justamente os polígonos, no entanto é possível usar diferentes tipos específicos em cada coleção ou em cada tipo de definido.

-- Results: MULTILINESTRING ((40 40, 30 30), (25 25, 8 8))

DECLARE @g geometry = 'LINESTRING(8 8, 40 40)'

DECLARE @h geometry = 'POLYGON((25 25, 15 30, 30 30, 30 15, 25 25))'

 

SELECT @g.STDifference(@h).ToString();


Figura 1.4 (Function – Blended Types)


STArea, STLength
Retorna a soma de todas as áreas calculadas na superfície definida pelo usuário do tipo geometric
STArea() retorna o tipo float indicando a área quadrangular da instância
STLength() retorna o tipo float indicando o tamanho de unidade da instância (0 ou se a instância é um ponto ou se não possui tamanho)

-- Results: 400           |         121.28990204492
DECLARE
@g GEOMETRY = 'POLYGON((10 10, 30 50, 50 50, 10 10))'

SELECT  @g.STArea(), @g.STLength()


Figura 1.5 (Function – STArea, STLength)

STCentroid
Este é um dos métodos padrões OGC que retorna ‘Point’ indicando o centro da forma quandrangular, se a instância adotada não for Polygon ou MultiPolygon o valor NULL será retornado.

-- Results: POINT (20 30)

DECLARE @g GEOMETRY = 'POLYGON((10 10, 10 40, 40 40, 10 10))'

SELECT  @g.STCentroid().ToString()


Figura 1.6 (Function - STCentroid)

Utilizando dados espaciais no SQL Server 2008 (Parte 03)

Continuação...
STWithin, STContains
Dois métodos que seguem também o padrão OGC retornando 1 ou 0 e indica se todos ‘Points’ da instância existe totalmente ao lado de outra instância
STContains() testa se o parâmetro instância está do lado da instância base
STWithin() testa se a instância base está do lado da instância parâmetro, retorna verdadeiro se dado o valor geometric estiver juntamente á outro, de outra forma, retorna falso. Este método irá retorna NULL se todos SRID da instância não possuír o valor adequado ao SRID da outra instância;

-- Results: 1     0

--                0     1

DECLARE @g geometry = 'POLYGON ((10 10, 13 30, 30 30, 30 15,10 10))'

DECLARE @h geometry = 'LINESTRING (16 16, 16 24, 25 18)'

 

SELECT @g.STContains(@h), @g.STWithin(@h)

SELECT @h.STContains(@g), @h.STWithin(@g)

 


Figura 1.7 (Function - STContains)

 

STPointOnSurface
Este método irá retornar de certa forma um ponto aleatório o qual nos garante a localização dentro da instância base.

-- Results: POINT (23 25)
DECLARE @g geometry = 'POLYGON((10 10, 14 15, 50 12, 45 30,10 30, 10 10))'

SELECT @g.STPointOnSurface().ToString()


Figura 1.8 (Function - STPointOnSurface)

STGeometryType
Retorna o tipo Open Geospatial Consortium (OGC) o qual representa a instância geometry

-- Results: Polygon

DECLARE @g geometry;

SET @g = geometry::STGeomFromText('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))', 0);

SELECT @g.STGeometryType();

STGeomFromText
Retorna uma instância geometry da representação Open Geospatial Consortium (OGC) Well-Known Text(WKT) representando assim o argumento de elevações (Z) e medidas (M).

-- Results: LINESTRING (100 100, 20 180, 180 180)

DECLARE @g geometry;

SET @g = geometry::ST

GeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0);

SELECT @g.ToString();

STTouches
Retorna verdadeiro se dado o valor geometric faz parte de outro, de outra forma, retorna falso. Este método retorna null se todos SRID (Spatial Reference Identifier) da instância não possuír o valor adequado SRID da outra instância;

STDistance
Retorna a distância entre os valores do tipo específico Point geometric. Este método irá retorna null se SRID(Spatial Reference Identifier) da instância não possuír o valor adequado ao SRID da outra instância;


Figura 1.9 (Geography Methods)

Aos termos analisado algumas funções e formatos existentes nos dados espaciais, o que nos resta agora é apenas aplicar-los, os tipos específicos podem ser usados ambos em definições de tabela e tipos variáveis. Dependendo de sua manipulação dos dados espaciais sendo plano ou ellipso pode-se usar ambos os tipo de dados geometry e geography, iremos neste momento ao exemplo prático.

USE master

GO

 

IF EXISTS(SELECT Name FROM sys.databases WHERE name = N'SpatialDatabase')

      DROP DATABASE SpatialDatabase

 

CREATE DATABASE SpatialDatabase

 ON PRIMARY

  (NAME = SpatialDatabase_data,

   FILENAME = 'C:\DatabaseSpatial\SpatialDatabase.mdf'),

 FILEGROUP SpatialGroup1

  (NAME = SpatialGroup2,

   FILENAME = 'C:\DatabaseSpatial\SpatialDatabase.ndf')

 LOG ON

  (NAME = Spatial_log,

   FILENAME = 'C:\DatabaseSpatial\SpatialDatabase.ldf')

 GO

 

USE SpatialDatabase;

 

CREATE TABLE #GeometrySpatial

(

      LocationID   INT PRIMARY KEY CLUSTERED NOT NULL,

      LocationName NVARCHAR(30),

    Position      GEOGRAPHY

);

 

INSERT INTO #GeometrySpatial (LocationID,LocationName,Position)

      VALUES (1,'Nova York', geography::Parse('POLYGON((

 -75.17031 39.95601, -75.16786 39.95778, -75.17921 39.96874,

 -75.18441 39.96512, -75.17031 39.95601 ))'))

 

 

INSERT INTO #GeometrySpatial (LocationID,LocationName,Position)

      VALUES (2,'Chicago', geography::Parse('POLYGON((

 -75.17031 39.95601, -75.16786 39.95778, -75.18870 39.97789, -75.18521 39.99237,

 -75.18603 40.00677, -75.19922 40.01136, -75.21746 40.03142, -75.22534 40.02586,

 -75.21052 40.01430, -75.19192 40.00634, -75.19248 39.99570, -75.20526 39.98374,

 -75.19437 39.97704, -75.19087 39.96920, -75.17031 39.95601))'))

     

INSERT INTO #GeometrySpatial (LocationID,LocationName,Position)

      VALUES (3,'Miami', geography::Parse('POLYGON((

 -75.22280 40.02387, -75.21442 40.02810, -75.21746 40.03142,

 -75.22534 40.02586, -75.22280 40.02387))'))

 

-- Trazendo os valores de forma compreensivel.

SELECT

  LocationID,LocationName,Position.ToString() as WKT,

  Position.STLength() as longitude

FROM #GeometrySpatial

 

Figura 2.0 (Results – measures and longitude)
     

-- Visualizando o Spatial Results

SELECT * FROM #GeometrySpatial

 


Figura 2.1 (Spatial Results - Map)

 

OBS: Se por acaso quisermos obter a lista de todos SRIDs suportados pelo SQL Server, podemos executar a instrução:
 SELECT * FROM sys.spatial_reference_systems
, para mais informações relacionado aos SRIDs,
visite:
http://msdn.microsoft.com/en-us/library/bb964707.aspx


Figura 1.2 (Results - SRIDs)

 

Ótimo, agora que conhecemos o que são os dados espacias, quando devemos utilizar, quais são as diferença dentre os tipos de dados geometry e geography, quais são os formatos e tipos existentes suportados pelo SQL Server e o exemplo prático, o que resta neste momento é apenas implementar-los em nossa aplicação e assim termos a convicção de que possuímos uma aplicação pelo qual possui ótimas vantagens quando o assunto se relata em buscas (mundialmente).

 

[]´s

 

Lucas Souza

31 julio

Usando Dados Espaciais no SQL Server 2008 (Parte 01)

A Paz do Senhor Esteja Convosco,

Lembro-me de que há alguns dias atrás estive escrevendo alguns artigos relacionado á dados espaciais no SQL Server 2008, porém devido ao tempo apresentei apenas uma visão geral, nesta série de artigos espero ir bem além do que já vimos.

Ótimo, além do SQL Server nos fornecer diversas opções relacionado á Integração de Dados, Relátorio de dados, Replicação de dados, Políticas, Manutenção de Planos, temos também agora suporte á dados espaciais no SQL Server 2008, os dados espaciais são implementados por ‘CLR Types’ interno no banco de dados, os dados espaciais tem por objetivo de armazenar dados representando posições e estruturas geométrica no SQL Server. Tendo isto em mente podemos agora desenvolver aplicações que pode nos conceder a distância, localização e espaço em um certo ponto localizado em uma certa circunstância, podendo assim também vir até de aplicações pelo qual utiliza GPS (Global Positioning System).

Porque e quando devemos utilizar os Dados Espaciais?

Certa vez ao possuirmos aplicações pelo qual disponibiliza produtos mundialmente um dos grandes aspectos que pode influenciar ao utilizar os dados espaciais são:

01)  Aonde o produto será entregue?

02)  Aonde o produto se encontra neste momento?

03)  Por quais cidades já tem passado?

Quando precisamos trabalhar com os dados espaciais temos que ter em mente alguns requisitos, por exemplo:

01)   Os tipos de dados de espaciais podem ser usados para além de coordenadas, consistindo assim em mistura de pontos, linhas, um único-segmento ou multi-segmento.

02)  Habilidade de executar grandes massa de operações de dados geoespacial, por exemplo: aplicações que necessitam calcular a área de um ponto complexo á outro.

03)  Armazenar coordenadas espaciais diretamente dentro do banco de dados, ou melhor armazenar informações de uma localização á outra.

Relembro de que alguns dias atrás (ainda este ano) estive estudando geometria e o Plano  Geométrico pode descrito por duas dimensões criadas no espaço, dimensões estas que podem ser descritas usando as posições em uma ordem de números indicando a posição de cada uma, ou melhor ‘o verdadeiro X e Y’.

 

A figura acima representa um plano pelo qual possuí dois pontos identificando as coordenadas X (esquerdo e direito) e a coordenada Y (alto e baixo), neste caso com esses valores conforme mostra a imagem podemos identificar dois pontos no espaço dimensional.

Qual diferença entre Geometry e Geopraphy ?

Temos atualmente esses dois tipos de dados suportados no SQL Server 2008, porém eles possuem algumas diferenças entre si, vale lembrar que apesar de ambos fazerem parte de dados espaciais cada um tem por objetivo uma determinada forma.

·         Geometry: É um tipo de dados .NET common languague runtime (CLR),  tem por objetivo de armazenar dados baseados em pontos nas dimensões(X,Y) e opcionalmente nas coordenadas (Z) em um único modelo traçado, essas dimensões podem ser conhecidas através do ‘plano geométrico’, representando assim os dados em um sistema de coordenadas Euclidean(flat), por mais informações á respeito desse tipo de dados, visite: geometry Data Type Method Reference.
Geometry: Relaciona-se á um tipo de dados com mapeamento em um plano com duas dimensões (sistema de coordenadas x e y)

 

·         Geopraphy: Pode ser visto também como outro tipo de dados .NET common language runtime (CLR), os dados geográfico tem por objetivo armazenar linhas, pontos, círculos,  polígonos e uma coleção de cada um desses, usando assim um modelo oposto ao ‘round earth’ para o ‘flat earth’ utilizando as coordenadas X e Y, o tipo de dados geometry utiliza as combinações de latitude/longitude (GPS) representando um único ponto, por mais informações á respeito desse tipo de dados, visite: geometry Data Type Method Reference.
Geography: Relaciona-se á um tipo de dados que armazena informações em relação á superficie terrestre.

 

OBS: Vale lembrar que os dois tipos de dados armazenam: linhas, pontos, polígonos, círculos. A diferença  é que: o tipo de dados geometry utiliza o plano 2d e o tipo de dados geopraphy utiliza o plano 3d.

 

Os dados geometry e geography são abstráidos por tipos específicos, basicamente eles possuem os mesmo modo, a diferença entre eles é apenas se a criação especificada é direcionada para um plano ou espaço.

·         Polygon

·         MultiPolygon

·         LineString

·         MultiLineString

·         Point

·         MultiPoint

·         GeometryCollection

Cada tipo corresponde á uma coleção, podemos armazenar um único ponto utilizando Point, se por acaso for útil armazenar dois pontos podemos utilizar MultiPoint o qual nos provê uma coleção de agregação dos tipos específicos, o SQL Server possuí também uma hierarquia pelo qual pode ser visto pela imagem abaixo.

 

Polygon: Pode ser descrito como um modelo fechado, por exemplo: bola. O Polygon pode consistir em uma bola onde pode conter zero ou mais lados.
OBS: Polygon pelo qual foi construído nunca terá interseção.

 

MultiPolygon: Esse tipo representa uma coleção de polígonos válidos, neste caso se um polígono pelo qual estiver dentro da coleção estiver inválido a coleção estará completamente inválida.
OBS: MultiPolygon pelo qual foi construído nunca terá interseção.

LineString: LineString é um objeto de uma dimensão pelo qual consiste em dois ou mais pontos identificados que contêm segmentos em linhas. As linhas não possuem dimensões correta, no entanto pode ser simples, complexa e fechada.

 

MultiLineString: Este tipo representa a coleção dos objetos LineString, similar ao objeto MultiPoint, no entanto pode-se também fornecer expressões WKT sendo identificado por todos LineStrings na coleção. MultiLineString podem ser simples, interseção ou fechado.

Point: Representa uma única dimensão sendo referenciado e identificado pelo par. Pode-se utilizar o Point em uma posição para identificar uma localização na superfície.

MultiPoint: Representa a coleção de zero ou mais pontos, geralmente é utilizado para identificar a localização na superfície.

GeometryCollection: Os tipos conforme mostrados acima é especifico para cada um, o tipo GeometryCollection pode armazenar varios outros tipos de objeto em apenas um só, por exemplo: podemos armazenar tanto LineString como Point em um único GeometryCollection.

Continuaremos...

[]´s

Lucas Souza

25 julio

SQL Server 2008: Policy Management (Parte 04)

A Paz do Senhor Esteja Convosco,

O artigo anterior teve por objetivo de: Todos os procedimentos criados em nosso banco de dados se inicie com o prefixo usp_,  já neste ultimo artigo desta série o nosso objetivo neste momento é que: Todas as tabelas precisam está dentro do schema ‘Developers’ ou ‘DBAs’.

Neste momento iremos criar uma nova Condition, clique com o botão direito em Conditions em seguida New Condition

Em seguida preencha os campos conforme mostra á imagem abaixo, percebam que podemos agrupar mais de um campo(field), para isso selecione os dois campos e clique com o botão direito encima de qualquer um deles em seguida Group Classes.

Após termos feito a criação da nossa Condition iremos neste momento por último criar a Política, clique novamente com o botão direito em Policies em seguida New Policy

 

Após termos definido as propriedades conforme ilustra a imagem abaixo o que resta agora é só clicarmos OK.

O último passo que resta para o término da Política é: Habilitar, para isso clique com o botão direito encima da Política conforme foi criada em seguida Enable

Se por acaso executarmos alguma instrução referente á CREATE TABLE e não definirmos o schema Developers ou DBAs conforme adotamos como padrão de schemas em nossa aplicação, infelizmente aplicação não irá ser bem sucedida ou melhor, nenhuma tabela irá ser criada á não ser que esteja de acordo com as regras apresentadas.

 

Ótimo, podemos ter a convicção de que nossa aplicação ao ter recebido essas três regras se comportará de uma forma mais flexível fazendo com que assim tenhamos um ambiente mais padronizado e gerencíavel.


[]´s

Lucas Souza
http://www.souzalucas.spaces.live.com

18 julio

SQL Server 2008: Policy Management (Parte 03)

A Paz do Senhor Esteja Convosco,

Esses dias infelizmente estive bastante ocupado e não obtive tempo suficiente para dar continuidade á esta série de artigos, todavia peço desculpas aos caros leitores que estão diariamente acompanhando tanto o meu blog quanto aos demais sites de TI.

Nosso objetivo neste momento é: (Todos os procedimentos criados em nosso banco de dados se inicie com o prefixo usp_), certa vez ao adotarmos esta regra para nosso banco de dados temos em mente já uma boa convicção, conviccção esta que todos os procedimentos armazenados(stored procedure) irão se iniciar com o prefixo USP_ e que no decorrente da nossa aplicação se precisarmos executar algum deles bastaríamos digitar EXEC USP_NOMEPROC.

Primeiramente iremos criar nossa Condition, clique com o botão direito encima de Conditions em seguida New Condition.


Figura 1.0 (Object Explorer - Conditions) 

Após isto, precisamos neste momento  adotar algumas propriedades básicas, no entato faça conforme ilustra a tabela abaixo ou até mesmo a figura.

Name:

procUSP

Facet:

Stored Procedure

Field:

@Name

Operator:

LIKE

Value:

‘USP_%’

Tabela 1.0 (Propriedades - Condition)


Figura 1.1 (Object Explorer – New Condition)

Ao termos feito isto, iremos agora criar a Política, clique com o botão direito encima de Policies em seguida New Policy.


Figura 1.2 (Object Explorer – New Policy)

Defina as propriedades conforme ilustra a imagem abaixo, percebam que no menu drop-down ao lado de  Check Condition devemos atribuir o valor procUSP conforme é a Condition que criamos nos passos anteriores, em Evaluation Mode escolha On change: prevent, logo após clique em Description que está localizado no lado esquerdo, percebam que além de definirmos uma regra para nosso banco de dados podemos também adquerir uma categoria e assim atribuir esta categoria á uma descrição conforme pode ser definida juntamente na criação da Política.


Figura 1.3 (General – New Policy)



Figura 1.4 (Description – New Policy)

Após isto clique em OK, neste momento o último que precisamos fazer é: Habilitar, clique com o botão direito encima e em seguida clique em Enable



Figura 1.5 (Object Explorer – Policies)

Ótimo, nossa política está completamente pronta basta agora só testarmos, se por acaso algum usuário em nosso banco de dados tentar criar algum procedimento armazenado sem que seguir os padrões conforme a empresa adotou ou melhor, digitar algo referente á isso:

CREATE PROC DBO.SPInsert

AS

SELECT TOP 10 ProductID FROM Production.Product

Neste momento o usuário pelo qual executou essa instrução irá se aparecer rapidamente com uma mensagem de erro, mensagem esta informando que o procedimento armazenado não poderá ser criado ao menos que esteja de acordo com as regras da empresa, ou melhor:


Figura 1.6 (Messags – Error)

Isto indica que todos os procedimentos armazenados deverão se iniciar com o prefixo conforme foi adotado ou então aplicação irá sofrer um rollback, ou seja, a transação não será efetuada com sucesso até que sigamos o padrão conforme a política segue, neste caso que se inicie todos os procedimentos armazenados com o prefixo usp_.

Continuaremos

[]´s

Lucas Souza
http://www.souzalucas.spaces.live.com

30 junio

SQL Server 2008: Policy Management (Parte 02)

A Paz do Senhor Esteja Convosco,

No artigo anterior descrevi alguns fundamentos príncipais relacionado ao Policy Management(PM), sendo eles: arquitetura, suas limitações, seus componhentes e algumas informações básicas ao tomar quando se trabalhar com esse framework, todavia irei dar continuidade neste artigo explicando examente O que são Policies.

POLICIES

As Policies(Políticas) consiste em um comportamento existente definido pelo usuário, comportamento este que podem ser descritos como:

·         On Demand:
Geralmente todas as políticas são rodadas em ‘On Demand’, isto porque frequentemente o administrador utiliza á ferramenta gráfica ‘SQL Server Management Tools’ , sendo executada assim pelo Administrador.

 

·         On Schedule:
Basicamente quando possuímos Políticas com o comportamento ‘On Schedule’ temos á convicção que estará sendo executada sob um agendamento registrado pelo SQL Server Agent e retornando assim um log com o resultado.

 

·         On Change - Log Only:
Se por acaso ocorrer alguma violação relacionado a Política, imediatamente é gerado um log, este log estará sendo armazenado na tabela history dentro do banco de dados msdb de forma assíncrona utilizando o Event Notification, essas tabelas podem ser vistas diretamente via syspolicy_policy_execution_History ou syspolicy_policy_execution_history_detail ou até mesmo visualizando a tabela History utilizando ‘Policies context menu’.

 

·         On Change – Prevent:

Se ocorrer alguma mudança inesperada que não esteja de acordo com as regras definidas, imediatamente a transação sofrerá  um rollback pelas Triggers DDL.

OBS: Se a configuração do servidor estiver com a opção ‘triggers nested’ desabilitada, este comportamento não irá funcionar.
Figura 1.0 Policy Management – Conditions (continuação – artigo anterior)

Percebam que após a definição das informações adotadas em nossa Política podemos também adquerir algumas mais outras informações, sendo assim constítuida por: Categoria (Category), Descrição(Description), Exibição de Texto (Text to display), Endereço(Address)
Figura 1.1 Policy Management – Conditions(Description)

 

CRIANDO CENÁRIO 01 – POLICY MANAGEMENT (PM)

Ø  OBJ: Todas as tabelas criadas em nosso banco de dados se inicie com o prefixo tbl_.

Inicialmente iremos criar uma nova Condition, para isto clique com o botão direito em Conditions em seguida New Condition, defina as seguintes propriedades:

Name:

ConditionTable

Facet:

Multipart Name

AndOr:

N/A

Field:

@Name

Operator:

LIKE

Value:

‘tbl_%’

Tabela 1.0 (Propriedades - Condition)

Após termos definido as propriedades ‘default’ para a nossa Condition, iremos neste momento criar á Política(Policy), clique com o botão direito encima de Policies em seguida New Policy.

Name:

PolicyTable

Check condition:

ConditionTable

Against targets:

(V) Table

Evaluation Mode:

On change: prevent

Server restriction:

None(default)

Tabela 1.1 (Propriedades - Policies)


Figura 1.2 Policy Management – (General)

Após termos definido estas propriedades básicas, basta agora clicarmos em OK, por questão de segurança, verifique se a Política está habilitada corretamente de acordo como mostra a imagem abaixo, se sim(ok), se não(habilite).


Figura 1.3 Policy Management – (Object Explorer
)

Ótimo, temos a certeza agora que nossa Política está funcionando perfeitamente, se por acaso algum usuário que estiver conectado ao SQL Server Database Engine tentar criar alguma tabela em qualquer banco de dados  em que não esteja de acordo com as regras adotadas o usuário logo irá se dar com um erro parecido com esse:

Percebam que infelizmente não foi possível criar a tabela em banco de dados com o nome ‘TESTE1’, isto porque ao criamos nossa Política adotamos uma regra, regra esta que toda tabela se inicie com o prefixo ‘tbl_’, no entanto o usuário só irá conseguir efetuar a criação da tabela se estiver de acordo com as regras adotadas, porém se não for utilizado o prefixo ‘tbl_’ juntamente com a instrução CREATE TABLE, o usuário infelizmente não obterá sucesso.

[]´s

Lucas Souza

25 junio

SQL Server 2008: Policy Management (Parte 01)

A Paz do Senhor Esteja Convosco,

Há alguns dias atrás estive criando algun(s) artigos relacionado á políticas(policies) no SQL Server 2008, todavia estive estudando á fundo esse assunto e percebi que temos muita coisa ainda há se ver em relação á esse excelente framework o qual nos permite termos uma aplicação mais robusta e mais gerenciada de uma forma mais fácil.

O Gerenciador de políticas (Policy Management) no SQL Server permite agora que o DBA crie as políticas e assim distribua essas políticas criadas por múltiplos servidores, essas políticas podem ser rodadas por agendamento(schedule) ou por demanda (demand) e se por acaso o usuário violar uma dessas políticas criadas, rapidamente é criado um log de violação proativo, sendo assim ocorrendo assim um rollback na transação e evitando que o usuário efetue algo que não esteja de acordo com as regras criadas pelo DBA.

As políticas possuem uma arquitetura as quais são usadas para avaliar e configurar os aspectos  de segurança do SQL Server, esses componentes podem ser conhecimentos como: conditions, policies e facets e são utilizados juntamente para definir as regras criadas de política no SQL Server.


Figura 1.1, Arquitetura Policy Management (PM)

Após termos visto a arquitetura da Policy Management (PM) podemos também obter o conhecimento de onde está localizado esse framework, como podemos ver está localizado na raíz Management > Policy Management.

Figura 1.2, Localização Policy Management (PM)

Certamente ao termos visto uma ‘overview’ de como funciona o Gerenciador de políticas no SQL Server podemos agora planjear algumas regras ‘default’ para que nosso banco de dados se comporte de uma maneira mais legível, por exemplo:

·         Todas as tabelas criadas em nosso banco de dados se inicie com o prefixo tbl_.

·         Todos os procedimentos criados em nosso banco de dados se inicie com o prefixo usp_.

·         Todas as tabelas precisam está dentro do schema ‘Developers’ ou ‘DBAs’.

Através da Policy Management (PM), temos também por definição alguns outros aspectos os quais são gerenciados por entidades da própria instância em si do SQL Server, essas entidades podem ser descritas através de tabelas, schemas ou até mesmo banco de dados. Nesse caso podemos obter um exemplo de como gerenciar essas entidades, por exemplo: podemos obter um filtro para que todos os índices ao chegar á um volume de fragmentação acima 30% sejam recriados, podemos também obter outro filtro com o objetivo de que o banco de dados não cresçam acima de 1GB, entre outros.

FACETS

Os facets são um dos componentes da Policy Management (PM) que por sua vez tem seu objetivo de determinar como as políticas irão ser processadas após á uma operação feita pelo usuário, algumas considerações básicas em relação aos facets é:

·         Policy Management (PM) Possuí 74 Facets;

·         Não se pode criar novas Facets;

·         Não podem ser alteradas;

·         Não podem ser deletadas;

·         Obrigatório usar apenas as que já possuem.

Figura 1.3, Policy Management (PM) Facets Existentes

Application Role: Regra de criação e modificação de data e hora; Particulamente é um ‘schema’ padrão de regras mais utilizadas em empresas;

Backup Device: Tipo de dispositivo de backup;

Database: Número de conexões ativas para o banco de dados;

Cryptopgraphic Provider: Se as chaves assimétricas ou simétricas podem ser criadas ou importadas

Database Audit Specification: Objetivo de auditar o nome da auditoria já criada ;

Audit: Objetivo de auditar pasta de arquivos e também dados inseridos ou dados que não foram inseridos por motivos de falhas justas;

Database Security: Se o banco de dados está selecionado como confiável;

Resource Governor: Função de Classificação; Status abilitado;

Table: Espaço usado pelos dados; assinado ao filegroup; se possuí um índice cluster; tamanho do índice;

Stored Procedure: Contexto de execução; Informação relacionado ao ‘assembly’; se o procedimento armazenado é codificado.

Os facets conforme eu  citei acima geralmente são os mais utilizados hoje em dia nas aplicações comercias, no entanto existe uma definição completa para cada um deles á no books online (BOL) ou mesmo pelo site do msdn.

CONDITIONS

Particulamente é um grupo de uma ou mais expressão do facet definido. As conditions tem por objetivo de ir mais além de que os facets já permitem, por exemplo: se escolhermos o facet Database podemos definir na aba (Field) á variável, neste caso utilizamos @Collation, após isto podemos também definir os operadores de comparação, temos: =, !=, LIKE, IN, NOT LIKE, NOT IN e através da @Collation podemos também utilizar uma string desejada(Value), se por acaso quisermos definir uma estrutura mais complexa podemos utilizar o ‘Advanced Edit’.

Figura 1.4, Policy Management (PM) Conditions (Advanced Edit)

OBS: Na versão atual do SQL Server 2008 é preciso utilizar aspas juntamente com a string definida, neste caso utilizamos 'SQL_Latin1_General_Cp1_CI_AS_KI_WI%', em versões futuras do SQL Server 2008 não será necessário utilizar-las.

Figura 1.5, Policy Management (PM) Description

Aós termos definido Nome da Condition(PolicyDatabase), Facet(Database), Facet(@Collation) e outras  informações que foram necessárias para que nossa política se comporte conforme nós desejamos basta apenas clicarmos agora em OK e assim será criada a Condition, percebam que ela estará sendo criada na Raiz (Conditions) com o nome conforme citamos.

Conclusão

Neste artigo foi ilustrado a arquitetura da Policy Management(PM), quais são os seus três componentes, eles são: Policies(não apresentado neste artigo), Facets e Conditions, vimos também quantos e quais facets existem e algumas considerações básicas em relação á cada um deles(facet) e por último vimos também uma visão geral das Conditions á qual é um grupo de um ou mais facet definido.

Continuaremos...

[]´s
Lucas Souza

19 junio

Trabalhando com Database Snapshot (Parte 02)

Boa Tarde Pessoal,

No artigo anterior descrevi á respeito a estrutura interna do Database Snapshot a qual é uma feature que tem seu objetivo de ‘criar um espelhamento do banco de dados’, lembrando que o Database Snapshot está dísponivel em edições 2005 adiante, além disso uma das considerações principais é que só pode ser utiliza em versões Enterprise.  Ao termos entendido rapidamente como funciona á estrutura interna dessa feature é necessário também sabermos como gerenciar-la em nossa aplicação.

Para criar o Database Snapshot precisamos utilizar a instrução CREATE DATABASE em seguida utilizar a cláusula AS SNAPSHOT OF, conforme foi escrito no artigo interior uma das melhores práticas ao criarmos nosso Database Snapshot é definirmos o nome por um período, seja por horário ou por dias da semana.

-- Database Snapshot Definido por tempo(horas)
CREATE
DATABASE Adv_Snapshot0700 ON

( NAME = AdventureWorks2008_Data,

  FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\Adv_Snapshot0700 .ss' )

AS SNAPSHOT OF AdventureWorks2008;

GO

Após termos feito a criação do nosso Database Snapshot se precisarmos por acaso efetuar alguma consulta em uma tabela dentro do banco de dados basta apenas se posicionarmos e executar o que for necessário.

USE Adv_Snapshot0700

SELECT TOP 10 ProductID,

                    Name,

                    ProductNumber

                    FROM Production.Product

                    ORDER BY

                    Name
GO

Percebam que, me posicionei no banco de dados Snapshot ‘Adv_Snapshot0700’ conforme criei acima, se por acaso você alterar algum registro do banco de dados fonte ‘source’ o Database Snapshot não irá sofrer nenhuma alteração.

Depois de termos criado o Database SnapShot se precisarmos em breve deletar basta utilizarmos a cláusula DROP DATABASE, lembrando que todos os arquivos associados ao snapshot também irá ser deletado.

-- Database Snapshot |  Deletado
DROP
DATABASE Adv_Snapshot0700

E se por acaso precisarmos restaurar o Database Snapshot já criado no nosso SGBD basta também utilizarmos a cláusula abaixo:

RESTORE DATABASE DB_Snapshot0700 from

DATABASE_SNAPSHOT = 'DB_Snapshot0700'

GO

Em muitas situações é bastante útil implementarmos essa feature, um dos cenários mais pensados e utilizados  é aonde envolve um ambiente de teste á qual é utilizado apenas banco de dados e assim sofrem muitas atualizações simultâneas, todavia ao utilizar o Database Snapshot podemos obter agora uma maior confiabilidade em nossos dados, assegurando-se assim que os dados afetados pelo Database Snapshot não irá afetar o banco de dados fonte ’, sendo assim podemos obter agora um ambiente de teste mais confiável e efetuarmos o que for necessário em relação á operações de update,delete,insert.

 []’s
Lucas Souza

 
17 junio

Trabalhando com Database Snapshot (Parte 01)

Boa Noite Pessoal,

Ultimamente tenho percebido que muitos usuários á não conhecerem o SQL Server acham que é apenas um banco de dados ou algo similar á isso, o que eu tenho á dizer é que: o SQL Server as vezes pode ir mais além do que imaginamos, sendo assim podemos utilizar essa ferramenta tanto para criar/gerenciar nossos banco de dados como também para gerar relatórios, integrar diversas outras fontes de dados, Exportar dados interno do banco para arquivos excel entre outras diversas funções, se no caso fosse descrever do que o SQL Server é capaz eu passaria a noite falando as suas funcionalidades, sendo assim posso dizer que fui igual á esses usuários em relação á não ter uma visão de que o produto oferece e hoje sei que o SQL Server vai muito mais além do que um banco de dados e ainda por sí é uma excelente ferramenta á qual nos oferece muitas features das quais podem ser utilizada dia após dia em nossa aplicação.

Database Snapshot não é uma feature nova no SQL Server 2008, no entanto foi introduzida no SQL Server 2005 e está dísponivel apenas para versões Enterprise, essa feature tem seu objetivo de utilizar ‘copy-on-write’ á qual faz uma cópia do seu banco de dados e armazena na pasta ‘Database Snapshots’, todavia algumas considerações em relação á essa feature é preciso termos em mente, por exemplo:

·         Apenas leitura;

·         Visão estática do seu banco de dados;

·         Requer nome único;

·         Precisa está na mesma instância do banco.

 

 

Se por acaso depois de efetuarmos um Snapshot do nosso banco de dados original e depois executarmos alguma atualização por exemplo no banco de dados fonte, o banco de dados criado ‘Snapshot’ não irá sofrer á atualização feita pelo banco de dados fonte, todavia quando criamos um snapshot do banco de dados é criado continuamento o  ‘log sequence number’ (LSN) na fonte do banco de dados e assim o SQL Server roda snapshot em modo recovery desde de que a transação não seja comitada.

Esta figura representa que se nenhuma alteração for efetuada no banco de dados fonte a operação de leitura do banco de Dados Snapshot criado será igual á página original do banco de dados fontes pelo qual fizemos o Snapshot.

 

Esta figura ilustra que após á página ter sido alterada, a operação de leitura do banco de dados Snapshot ainda irá continuar acessando a página original, a qual foi armazenada no arquivo ‘sparse’, no entanto esta figura representa a operação de leitura do Snapshot acessando a pagina depois de ter sido atualizada no banco de dados fonte.

 

 

Esta figura ilustra o modelo de dois contrastes atualizados por tamanho pelo banco de dados Snapshot.

 

 

Uma das melhores considerações ao utilizar essa feature é nomear o Database Snapshot criado com um período de tempo definido por turno ou mesmo por hora, por exemplo:

Definido por tempo

 * BancoDeDados_Snapshot_0700;
 * BancoDeDados_Snapshot_1500;
 * BancoDeDados_Snapshot_2200.

Definido por turno

 * BancoDeDados_Snapshot_Manha;
 * BancoDeDados_Snapshot_Tarde;
 * BancoDeDados_Snapshot_Noite.

Ao definirmos um período de intervalo correto para cada um do nosso cenário se por acaso quisermos busccar por alguma informações bastaria pegar o banco de dados correto para o nosso uso e  se precisarmos buscar por alguma informação relacionada ao Database Snapshot podemos utilizar o cátalog view sys.databases, ou melhor:  USE DatabaseSnapshot; SELECT * FROM sys.databases.

 

[]'s

Lucas Souza

 

13 junio

Utilizando a cláusula TOP no SQL Server

Boa Noite Pessoal,

Tenho percebido que recentemente tenho recebido alguns emails de colegas pelos quais trabalham com C# e ASP.NET, infelizmente alguns deles estão se dando com simples problemas nos quais podem ser resolvidos utilizando funções simples, todavia sabemos que o SQL Server possuí inúmeras funções das quais podem ser bastantes úteis em nosso dia a dia.

Sabemos que a cláusula TOP é frequentemente mais utilizada juntamente com a instrução SELECT, todavia uma boa dica é: definir uma variável e atribuir um valor(int) á ela ou até mesmo uma porcentagem(%) pelo qual seria o valor que estariamos atribuindo a cláusula(TOP) na instrução SELECT.

Syntax :

[
     TOP (expression) [PERCENT]
     [ WITH TIES ]
]

-- TOP - Frequentemente mais utilizado (int) (Subquery)

SELECT TOP

(

    SELECT COUNT(ListPrice) / 5

    FROM Production.Product

 )

    ProductNumber,

    StandardCost,

    ProductID,

    ListPrice

FROM Production.Product

ORDER BY

      ProductNumber,

    StandardCost,

    ProductID,

      ListPrice

 

 
 

-- TOP - Frequentemente mais utilizado (Porcentagem)(Subquery)

SELECT TOP

(

    SELECT COUNT(ListPrice) / 7

    FROM Production.Product

 ) PERCENT

    Name,

    ModifiedDate,

    Color,

    ListPrice

FROM Production.Product

ORDER BY

      Name,

      ModifiedDate,

      Color,

      ListPrice

 

-- TOP - declaração variável (código estruturado - porcentagem)

DECLARE @Variavel1 FLOAT = 2;

SELECT TOP(@Variavel1) PERCENT ListPrice

    Name,

    ModifiedDate,

    Color

FROM Production.Product

ORDER BY

      ModifiedDate,

      Color

-- TOP - declaração variável (código estruturado - inteiro)

DECLARE @Variavel2 INT = 7

SELECT TOP (@Variavel2) ListPrice,

    ProductNumber,

    StandardCost,

    ProductID,

    ModifiedDate

FROM Production.Product

ORDER BY

      ProductNumber,

    StandardCost,

    ProductID,

      ModifiedDate

A microsoft recomenda que sempre ao utilizar a cláusula TOP é necessário utilizarmos os parêntesis, todavia por questão de compatibilidade de scripts do SQL Server 200 e 2005, sendo assim os parêntesis não são obrigatoriamente necessário ao especificarmos a cláusula TOP.
 * A cláusula TOP não pode ser usada juntamente com instruções UPDATE e DELETE em views(visões particionadas.

[]’s

Lucas Souza

10 junio

Acessando metadados através de Catalog Views e Dynamic Management Views no SQL Server

O SQL Server vem sempre nos permitindo e garatindo termos um acesso mais robusto e mais vantajoso, sendo assim sempre nos oferecendo inúmeros metadados para termos um desenvolvimento mais flexível e mais fácil, todavia estes metadados podem ser descritos através de: sistemas de tabelas, databases, views entre outros.

Dynamic Management views and functions geralmente é utilizado para retornar o estado de como o servidor está se comportando ao receber consultas pelas quais estão sendo executados por Users,DBA´s entre outros, sendo assim podemos utilizar-las(DMV´s) para buscarmos por: instância do servidor, diagnosticar problemas e a questão de tuning.

Muitos catálogos podem serem acessados através da cláusula ‘sys’, por exemplo se quisermos buscar por uma informação (x) de uma tabela podemos utilizar o comando: SYS.TABLES do qual nos traz ‘nome da tabela (name)’, ‘id objeto(object id)’ o qual é mais utilizado para quando não temos o nome exato de uma tabela, ‘id schema (schema_id) bastante útil também para buscarmos uma referência completa nos trazendo assim tanto o schema como a a tabela se fizermos por exemplo inner join.

Se por acaso em algum momento precisarmos de uma consulta que nos mostre algumas informações básicas como por exemplo: nome do schema + nome da tabela + tipo de tabela + nome de coluna, podemos utilizar uma consulta similar á essa, sendo assim você pode remover ou adicionar mais colunas conforme a sua necessidade.

SELECT

s.name AS schema_name,

t.name AS table_name,

t.type_desc AS table_type,

c.name AS column_name,

c.column_id,

ty.name AS data_type_name,

c.max_length,

c.precision,

c.scale,

c.is_nullable

FROM sys.schemas s

INNER JOIN sys.tables t

ON s.schema_id = t.schema_id

INNER JOIN sys.columns c

ON t.object_id = c.object_id

INNER JOIN sys.types ty

ON c.system_type_id = ty.system_type_id

AND c.user_type_id = ty.user_type_id

WHERE s.name = 'Person'

AND t.name = 'Address';

 

 

Certa vez pode ser útil termos um resultado conforme o que mostra na imagem acima, neste caso podemos identificar certas áreas importantes, mapea-las e aplicar o que for necessário e no momento correto.

 

O SQL Server provê aproximadamente 80 DMVs e DMFs  á qual tem seu objetivo de nos informar metadados relacionado ao acesso interno no servidor, ultimamente os desenvolvedores ao utilizar as DMV´s e DMF´s podem ter grandes benefícios, um deles seria ‘um caminho mais curto’ neste caso ao invés de utilizarmos uma consulta complexa como era em versões anteriores podemos agora simplificar e termos um código mais’ limpo’ .

 

O SQL Server possuí um escopo de DMV´s e DMF´s dentro do banco de dados no servidor, sendo assim iniciando-se pelo prefixo dm_*.

Sys.dm_cdc_* - Contêm informações sobre Change Data Capture (CDC) transações e log de sessões, Essa é uma nova feature do SQL Server 2008 o qual tem seu objetivo de capturar informações relacionadas ao código T-SQL;

Sys.dm_exec_* - Tem seu objetivo retornar informações relacionado ao código executado pelo usuário;

Sys.dm_fts_* - Tem seu objetivo retorna informações sobre a funcionalidade do Integrated Full-Text Search (iFTS), Full Text Search é um componente do SQL Server o qual possuí um grande potencial ao buscar por palavras, textos .doc, .pdf entre outros;

Sys.dm_os_* - Nos mostra detalhes de baixo nível de bloqueios, memória usada e agendada;

Sys.dm_trans_* - Provê informações sobre transações que estão sendo executada em tempo real e bloqueios;

Sys_dm_io_* -  Permite que você monitore a rede e o DISCO I/O;

Sysm_dm_db_* - Retorna informações sobre banco de dados e o level dos objetos no banco.

 

 

Neste caso por exemplo podemos elaborar uma consulta que nos permita vermos o valor de cpu utilizada, memória utilizada, total de leituras, total de escritas entre outros.

SELECT

login_name,

SUM(cpu_time) AS tot_cpu_time,

SUM(memory_usage) AS tot_memory_usage,

AVG(total_elapsed_time) AS avg_elapsed_time,

SUM(reads) AS tot_reads,

SUM(writes) AS tot_writes,

SUM(logical_reads) AS tot_logical_reads,

COUNT(session_id) as tot_sessions

FROM sys.dm_exec_sessions

WHERE session_id > 50

GROUP BY login_name;

 

 

Neste caso ao termos em mente quanto um usuário ou administrador está consumindo nas consultas diárias em nosso servidor, podemos adequirir certas permisões para evitarmos que nosso servidor sofra um gargalho inesperado, ao utilizarmos as DMV´s e DMF´s em nossa aplicação dia á dia podemos agora obter um código mais limpo e bem mais fácil de entendermos.

Observação: Os catalog views não contém informações á respeito de manutenção de planos, backup, replicação ou SQL Server Agent.

 

[]’s
Lucas Souza

08 junio

Encriptografando textos no SQL Server

Bom Dia Pessoal,

O SQL Server nos permite termos diversas formas de como encriptografar nossos dados, uma dessas formas seria através dos certificados, os certificados são um par de chaves assimétricas adicional sendo assim acrescentado na criação do certificado um pequeno trecho e uma data x para expiração, o SQL Server incluí também bem outras instruções no entanto essas são as mais utilizadas geralmente. O SQL Server 2008 possuí dois tipos de chaves,  a chave pública standard / chave privada methodology.  

USE master

 

IF OBJECT_ID ('DB_Banco') IS NULL

      DROP DATABASE DB_Banco

GO

 

CREATE DATABASE DB_Banco

 

USE DB_Banco

 

-- Criação da DMK

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@$$w0rd'

 

-- Criação do Certificado

CREATE CERTIFICATE Certificado

      ENCRYPTION BY PASSWORD = 'p@$$w0rd'

      WITH SUBJECT = N'Certificado DB-Banco',

      EXPIRY_DATE = '2010-07-30';

Observação:  Se por acaso não especificarmos a opção START_DATE a data atual será utilizada, sendo assim a data irá contar a expiração logo após a criação do certifiicado.

Após termos feito a criação do Certificado, é bastante útil efetuamos um backup por questão de segurança.

-- Backup Certificado  

BACKUP CERTIFICATE Certificado

TO FILE = 'C:\SQLBackup\Certificado.CER'

WITH PRIVATE KEY

(

      FILE = 'C:\SQLBackup\CertificadoKEY.PVK',

      ENCRYPTION BY PASSWORD = 'P@$$w0rd',

      DECRYPTION BY PASSWORD = 'p@$$w0rd'

);

Nos exemplos que irei amostrar abaixo irei ilustrar a respeito da função EncryptByCert pelo qual aceita os seguintes tipos de dados: char, varchar, binary, nchar, nvarchar, ou binary constante, nome coluna, ou variável de texto para encriptografar.

A Microsoft recomenda que devemos evitar utilizar á encriptografia assimétrica para encriptografar dados diretamente por questão de limitação de tamanho e questões de perfomance, sendo assim podemos utilizar a encriptografia assimétrica para encriptografar dados e encriptografia assimétrica para encriptografar as chaves simétricas. (Página 256)

Temos no SQL Server uma função conhecida como DecryptByCert o qual descriptografa os textos que geralmente estão encriptografados por outra função também conhecida como EncryptByCert. Irei amostrar abaixo alguns exemplos de como encriptografar textos através de certificados. 

-- Criação de um texto em uma variável para encriptografar.

DECLARE @TEXTO nvarchar(58) =

N' 0032-3419-0934-9306-9361';

SELECT 'Product Serial Number: ', @TEXTO;

 

-- Encriptografando o texto através do certificado.

DECLARE @Encrypt varbinary(128) =

EncryptByCert(Cert_ID('Certificado'), @TEXTO);

SELECT 'Product Serial Number: ',     @Encrypt;

     

-- Descriptografando o texto através do certificado.

DECLARE @Descrypt nvarchar(58) =

DecryptByCert(Cert_ID('Certificado'), @Encrypt);

SELECT 'Product Serial Number: ',     @TEXTO;

  

-- Dropando o certificado criado

DROP CERTIFICATE Certificado;

 

-- Dropando a chave criada

DROP MASTER KEY;

Podemos também utilizar as chaves assimétricas para encriptografar e descriptografar os dados, sendo assim antes de chegar aos exemplos gostaria de explicar o que seria a Chave Assimétrica.
As chaves assimétricas ou melhor Asymmetric Keys são compostas por 2 pares: chave pública á qual é acessível publicamente e a chave privada qual é guardada secretamente.  Geralmente quando iremos criptografar nossos dados precisamos ver qual o melhor tamanho para que satisfaça a nossa necessidade, sendo assim existe uma tabela pela qual podemos definir entre elas quais são as melhores para a nossa aplicação.

A sintaxe para a criação dessa chave é o seguinte:

-- Criação da chave assimétrica

CREATE ASYMMETRIC KEY ChaveAssimetrica

WITH ALGORITHM = RSA_512;

 

-- Declaração de uma variável com número de um cartão de crédito

DECLARE @CartaoCredito nvarchar(26) = N'9000 1234 5678 9012';

SELECT  @CartaoCredito

 

-- Encriptografando o cartão de crédito

DECLARE @EncryptCartaoCredito varbinary(64) =

EncryptByAsymKey(AsymKey_ID(N'ChaveAssimetrica'),@CartaoCredito);

SELECT  @EncryptCartaoCredito

 

-- Descriptografando o cartão de crédito

DECLARE @Descrypt nvarchar(26) =

DecryptByAsymKey(AsymKey_ID(N'ChaveAssimetrica'), @EncryptCartaoCredito);

SELECT @Descrypt;

 

-- Drop asymmetric key

DROP ASYMMETRIC KEY ChaveAssimetrica;

 

-- Drop DMK

DROP MASTER KEY;

O SQL Server nos permite diversas forma para termos uma aplicação mais robusta e mais confiável, sendo assim podemos escolher qual a melhor alternativa para nosso cenário e aplicar-lo, temos também outro tipo de segurança fantástico pelo qual ja escrevi aqui no meu blog, conhecido como (TDE) Transparent Data Encryption o qual é uma nova funcionalidade do SQL Server 2008 que nos permite encriptografar nosso arquivos de dados entre outros...

[]’s
Lucas Souza

07 junio

Utilizando Triggers no SQL Server (Overview) Parte 04 (Final)

Logon Triggers:

 

O SQL Server nos oferece também outro tipo de gatilho, no entanto ele não é muito conhecido, porém bastante útil o qual está dísponivel em versão posteriores do SQL Server 2005 SP2. Esse gatilho é responsável por disparar operações de LOGON depois da autênticação for efetuada.

 

IF OBJECT_ID ('dbo.DenyLogonSchedule ') IS NOT NULL

   DROP TABLE dbo.DenyLogonSchedule;

GO

 

CREATE TABLE dbo.DenyLogonSchedule

(

UserId sysname NOT NULL,

DayOfWeek int NOT NULL,

TimeStart time NOT NULL,

TimeEnd time NOT NULL,

PRIMARY KEY (UserId, DayOfWeek, TimeStart, TimeEnd)

);

 

INSERT INTO dbo.DenyLogonSchedule

(

UserId,

DayOfWeek,

TimeStart,

TimeEnd

)

VALUES

(

'PublicUser',

7,

'21:00:00',

'23:00:00'

);

GO

 

IF OBJECT_ID ('DenyLogons') IS NOT NULL

   DROP TRIGGER DenyLogons;

GO

 

CREATE TRIGGER DenyLogons

ON ALL SERVER

WITH EXECUTE AS 'sa'

FOR LOGON

AS

BEGIN

IF EXISTS

(

SELECT 1

FROM AdventureWorks.dbo.DenyLogonSchedule

WHERE UserId = ORIGINAL_LOGIN()

AND DayOfWeek = DATEPART(WeekDay, GETDATE())

AND CAST(GETDATE() AS TIME) BETWEEN TimeStart AND TimeEnd

)

BEGIN

ROLLBACK TRANSACTION;

END;

END;

GO

 

Percebam que ter um gatilho com esse objetivo pode ser muito útil, se precisamos por exemplo definir um horário padrão para um certo usuário que possa utilizar o banco de dados para executar uma tarefa x, podemos no entanto adotar esse tipo de gatilho e alterar o que for necessário.
Lembrando que essa funcionalidade de gatilhos LOGON foram introduzidos no SQL Server 2005 SP2, sendo assim o objetivo dessa funcionalidade é: capturar eventos de LOGIN, se quisermos algo relacionado á outra funcionalidade podemos escolher qual dos 2 acimas DDL ou DML dependendo da sua necessidade em seu negócio.

 

[]’s

Lucas Souza

 

06 junio

Utilizando Triggers no SQL Server (Overview) Parte 03

 

DDL Triggers:

Desde a versão do SQL Server 2005 os programadores T-SQL tem á habilidade de criar gatilhos DDL que por sua vez tem o objetivo de disparar quando os eventos DDL’s dos triggers ocorrem no banco de dados ou no servidor.

Os triggers DDL são úteis para evitar que ocorra mudanças inesperadas no banco de dados, mudanças essas que se referem a auditoria ou algo relacionado á isto.
Uma vez falado dos triggers DDL, podemos também utilizar o evento EVENTDATA o qual é responsável por retornar informações de tempo, conexão, nome do objeto, tipo do evento entre outros sendo assim disparados pelo triggers.

 

IF OBJECT_ID ('dbo.DDlActionLog') IS NOT NULL

   DROP TABLE dbo.DDlActionLog;

GO

 

CREATE TABLE dbo.DdlActionLog

(

EntryNum int IDENTITY(1, 1) NOT NULL PRIMARY KEY,

EventType nvarchar(200) NOT NULL,

PostTime datetime NOT NULL,

Spid int NOT NULL,

LoginName sysname NOT NULL,

UserName sysname NOT NULL,

ServerName sysname NOT NULL,

SchemaName sysname NOT NULL,

DatabaseName sysname NOT NULL,

ObjectName sysname NOT NULL,

ObjectType sysname NOT NULL,

CommandText nvarchar(max) NOT NULL

);

GO

 

IF OBJECT_ID ('AuditCreateTable ') IS NOT NULL

   DROP TRIGGER AuditCreateTable;
GO

 

CREATE TRIGGER AuditCreateTable

ON DATABASE

FOR CREATE_TABLE

AS

BEGIN

 

DECLARE @event_data xml;

SET @event_data = EVENTDATA();

 

INSERT INTO dbo.DdlActionLog

(

EventType,

PostTime,

Spid,

LoginName,

UserName,

ServerName,

SchemaName,

DatabaseName,

ObjectName,

ObjectType,

CommandText

)

SELECT

EventNode.value(N'EventType[1]', N'nvarchar(200)'),

EventNode.value(N'PostTime[1]', N'datetime'),

EventNode.value(N'SPID[1]', N'int'),

EventNode.value(N'LoginName[1]', N'sysname'),

EventNode.value(N'UserName[1]', N'sysname'),

EventNode.value(N'ServerName[1]', N'sysname'),

EventNode.value(N'SchemaName[1]', N'sysname'),

EventNode.value(N'DatabaseName[1]', N'sysname'),

EventNode.value(N'ObjectName[1]', N'sysname'),

EventNode.value(N'ObjectType[1]', N'sysname'),

EventNode.value(N'(TSQLCommand/CommandText)[1]', 'nvarchar(max)')

FROM @event_data.nodes('/EVENT_INSTANCE') EventTable(EventNode);

END;

GO

 

Após termos criado a tabela para coletar as operações iremos nesse momento criar uma tabela de exemplo:

 

CREATE TABLE dbo.TableTeste (i int);

GO

 

-- Percebam que vai nos trazer a tabela conforme criamos acima

SELECT * FROM DdlActionLog

 

[]'s
Lucas Souza
http//www.souzalucas.spaces.live.com
 

Lucas Souza

Ocupación
Intereses
* Inside Microsoft® SQL Server(TM) 2005: Query Tuning and Optimization * Inside Microsoft SQL Server 2005: T-SQL Querying * Inside Microsoft (r) SQL Server (tm) 2005: The Storage Engine. em fim.. tudo relacionado á Inside eu amo! :)
Agradeço a sua visita!
Espera...
El comentario que has escrito es demasiado largo. Acórtalo.
No has escrito nada. Vuelve a intentarlo.
No se puede agregar tu comentario en este momento. Vuelve a intentarlo más tarde.
Para agregar un comentario, necesitas permiso de tus padres. Pedir permiso
Tus padres han desactivado los comentarios.
No se puede eliminar tu comentario en este momento. Vuelve a intentarlo más tarde.
Has superado el número máximo de comentarios que se puede dejar en un día. Vuelve a intentarlo en 24 horas.
Se ha deshabilitado la capacidad de tu cuenta de dejar comentarios porque nuestros sistemas indican que podrías estar enviando correo no solicitado a otros usuarios. Si crees que tu cuenta se ha deshabilitado por error, ponte en contacto con el servicio de soporte técnico de Windows Live.
Para terminar de dejar tu comentario, realiza la siguiente comprobación de seguridad.
Los caracteres que escribas en la comprobación de seguridad deben coincidir con los de la imagen o el audio.