SQL Magazine 58
Esse artigo faz parte da revista SQL Magazine 58. Clique aqui para ler todos os artigos desta edição

SQL Server

Consultas e transações distribuídas no SQL Server 2005

 

A complexidade dos sistemas de informação tem aumentado muito nos últimos anos. Hoje é comum empresas utilizarem dois ou mais servidores de banco de dados, inclusive de fornecedores diferentes, por exemplo, SQL Server, Oracle, PostgreSQL. Seguindo este raciocínio, podemos observar que um dos grandes desafios dos profissionais de tecnologia da informação é integrar informações distribuídas entre estes vários servidores. Um dos casos mais comuns é quando a empresa adquire um sistema de gestão empresarial (ERP) e necessita integrar as informações com o sistema legado. Neste artigo veremos na prática como trabalhar com dados distribuídos no SQL Server 2005.

Veremos como integrar um banco de dados do SQL Server com outros bancos também SQL Server presentes em outros servidores e também com bancos de dados Oracle 10g. Outro assunto bastante interessante que abordaremos no artigo é a execução de transações distribuídas entre dois ou mais servidores SQL Server 2005.

O recurso do SQL Server que permite a conexão com outros servidores SQL Server ou outra fonte de dados qualquer é chamado de linked server.

 

O que são e como funcionam os linked servers no SQL Server 2005

O primeiro passo que devemos seguir para a execução de queries remotas e transações distribuídas no SQL Server 2005 é criar um linked server. Através deste recurso podemos acessar informações em outros servidores SQL Server ou outra fonte de dados qualquer, por exemplo: MySQL, Microsoft Access, Microsoft Excel, arquivos texto, etc. Os linked servers utilizam um provedor OLE DB para acessar outro servidor SQL Server ou outra fonte de dados qualquer.

 

Criando um linked server

Existem duas maneiras diferentes de se criar um linked server no SQL Server 2005. A maneira mais simples é utilizando o SQL Server Management Studio (a ferramenta gráfica utilizada para administração dos servidores). A outra maneira é utilizando a linguagem Transact-SQL, executando stored procedures especiais para criação dos linked servers. Primeiramente vamos criar um linked server utilizando o Management Studio, em seguida veremos como fazer isso utilizando Transact-SQL.

No SQL Server Management Studio, expanda o nó Server Objects>Linked Servers e selecione “Linked Servers”, como pode ser visto na Figura 1. Inicialmente vamos criar um linked server para outro servidor SQL Server 2005, mais adiante veremos como criar um linked server para Oracle 10g.

 

imagem

Figura 1. Criando um linked server para outro servidor SQL Server 2005

 

Em seguida devemos informar suas configurações (observe a Figura 2). Você pode perceber que para criar um linked server com outro servidor SQL Server basta apenas selecionar a opção “SQL Server” em “Server type” e digitar o nome do servidor. Porém, para criar um linked server com outra fonte de dados são necessárias algumas configurações adicionais. Veja a lista destas configurações:

 

·         Provider: Especifica o nome do provedor OLE DB a ser utilizado na comunicação com o linked server;

·         Product Name: Nome do produto do linked Server (Ex. SQL Server, Oracle, DB2, Excel, ODBC, etc...). Serve apenas como informação sobre a fonte de dados remota;

·         Data Source: Origem de dados OLE DB a ser utilizada para inicializar o provedor OLE DB;

·         Provider String: String de conexão específica do provedor OLE DB que identifica a origem de dados remota;

·         Location: Localização do banco de dados para o provedor OLE DB;

·         Catalog: Nome do banco de dados que será conectado.

 

imagem

Figura 2. Configurando o linked server

 

Após termos informado os dados do provedor OLE DB (veja a Figura 2), veremos agora como configurar as opções de segurança do linked Server (veja a Figura 3). Utilizando o botão “Add” você pode mapear um usuário local no servidor remoto. As opções de autenticação remota são:

 

·         Not be made: Os usuários sem login no servidor remoto não têm permissão para acessar o linked server;

·         Be made without using a security context: Bloqueia o acesso a todos os usuários não mapeados explicitamente no linked server;

·         Be made using the login’s current security context: Os logins não mapeados explicitamente para o ...

Quer ler esse conteúdo completo? Tenha acesso completo