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