Fundamentos de dados distribuídos

Álvaro Gulliver (e-mail) é DBA SQL Server, com formação oficial Microsoft. Atualmente trabalha como Consultor em TI e Projetos de banco de dados para médias e grandes empresas. É responsável pelo banco de dados da Logos Veículos e Aemundo Inovações Tecnológicas.

Olá amigos, este é meu primeiro artigo de muitos que pretendo publicar. Vou começar a falar sobre um assunto que será dividido em quatro artigos, muito importante onde geralmente os cursos não aprofundam e sobra para os administradores de banco de dados a tarefa de aprender.

A escalabilidade é uma das características mais importantes do SQL Server, ou seja, de uma determinada configuração, é possível aumentar a escala para atender maior capacidade de dados a serem processados. Isto acontece porque é feito a ligação entre vários servidores, os dados são armazenados em vários locais. A idéia de distribuir começa neste principio de tornar o acesso aos dados o mais transparente possível.

Vamos conhecer os mecanismos oferecidos pelo SQL Server que permitam acessos entre servidores:

Instantâneo

Este comando é responsável pelo acesso. Retorna as informações necessárias de conexão. Funções embutidas como OPENROWSET e OPENDATASOURCE.

Permanente

Por meio de Linked Servers estabelece-se uma comunicação contínua entre Servidores.

Views Particionadas

Cria-se uma View, resultando na união de várias tabelas residentes em Servidores diferentes.

Replicação

Mecanismo que permite a transferência contínua de dados, provocando redundância intencional, porém controlada, com objetivo de melhorar a performance das consultas em clientes conectados a Servidores que recebem as cópias.


Vamos ver como funciona o primeiro deles, o Acesso Instantâneo:

Quando não houver necessidade de criar um vínculo permanente entre dois Servidores de Dados, que sejam SQL Server ou não, podem-se realizar acessos onde o próprio comando realiza a conexão e a libera, uma vez concluído o processamento.

Sintaxe:

OPENROWSET ( ‘nome_provedor’
  , { ‘fonte’ ; ‘id_usuario’ ; ‘senha’ ; | complemento_provedor’ }^
  , { [ base. ] [dono.] pbjeto | ‘consulta’ }
)

Vamos explicar cada item do código acima

Nome_provedor

Identifica um provedor de dados. Veja em seguida valores válidos para fornecedores mais famosos.

Fonte

Onde os dados a serem consultados residem. Deve ser um nome que faça sentido para o provedor

; id_usuario ; senha

Identifica usuário e senha, se necessários. Observe o ; utilizando como separador.

Complemento_provedor

Cadeia opcional, especifica de cada provedor, necessária para complementar a conexão. Utilizada para acessos a bases ODBC.

Base

Banco de dados em que reside objeto a ser consultado.

Dono

Dono do obejto. Ex.: dbo

Objeto

Nome do objeto a ser consultado.

Consulta

Em vez de especificar um objeto, pode-se passar um SELECT a ser executado no destino.


A tabela seguinte revela os nomes de provedores mais utilizados:

SQL Server

SQLOLEDB

Oracle

MSDAORA

ODBC

MSDASQL

Excel

Microsoft.Jet.OLEDB.4.0

Access

Microsoft.Jet.OLEDB.4.0

Arquivos Texto

MSIDXS

IBM DB2

DB2OLEDB


Exemplos práticos:

Consulte a tabela PRODUCTS em Northwind do servidor SQL Server instalado em seu servidor.

Select * from
 Openrowset (‘SQLOLEDB’, ‘local’ ; ‘sa’ ; ,‘select * from Northwind.dbo.Products’)

Note que a conexão realizada é do tipo non trusted, portanto o servidor de destino deve possuir o Modelo de Autenticação como SQL Server and Windows.

Espero que tenha sido útil! Abraços!

Referências:
www.msdn.com.br