o servidor SQL tem servidores ligados com chamadas de recursos interessantes. Trata-se de ligar outras bases de dados ao servidor SQL e usar os seus dados como se fossem locais. Existem muitos sistemas de código aberto poderosos escritos em PHP e eles estão usando principalmente MySQL como banco de dados. Esta publicação no blog mostra como ligar a base de dados MySQL ao servidor SQL e como usar o servidor ligado nas consultas SQL.
o que é o servidor ligado?,
Linked server in MSSQL is some other database server connected to given one, making it possible to query and manipulate data in other databases. Por exemplo, podemos ligar algum banco de dados MySQL ao MSSQL e usá-lo quase como qualquer outro banco de dados no MSSQL.
A imagem é retirada da página de documentação mssql 2019
servidores ligados (motor de banco de dados)
embora a comunicação com servidores ligados passe por provedores OLE DB, também existe provedor OLE DB para ODBC e podemos usá-lo se a nossa base de dados externa não tem provedor OLE DB.
NB!, O servidor ligado está disponível para toda a instância do servidor SQL. Significa que todas as bases de dados do servidor SQL podem usar o servidor ligado para recuperar dados.
ligar MySQL ao servidor SQL
Adicionar servidor ligado e configurar a configuração da ligação nem sempre é fácil e simples.
para ter o MySQL ligado ao servidor SQL eu precisava criar ODBC DSN para o MySQL (eu o chamei de MySQLCrm). Antes de ir para os próximos passos, certifique-se de que a fonte de dados ODBC funciona.,
Siga estes passos para ligar o MySQL para o SQL Server:
- Executar o SQL Server Management Studio (SSMS)
- se Conectar ao seu servidor
- Expanda Objetos de Servidor de nó de árvore à esquerda
- clique com o botão Direito do mouse em Servidores Vinculados
- Seleccione o Novo Servidor Ligado…
Você deve ver o seguinte diálogo (ou pouco diferente, mas a idéia permanece a mesma).
NB! Preste atenção extra ao que inserir nesta janela. Com este conjunto de dados eu fiz o trabalho de link. Tentei valores diferentes e se alguma coisa estiver um milímetro errada, então a ligação falha., É um diálogo muito sensível.
cadeia de ligação à base de dados MySQL deve ser como mostrado aqui:
também preste atenção à Opção=3 – sem isto eu só tenho erros de volta ao ligar ao servidor ligado.
tente gravar carregando em OK e veja se consegue navegar no servidor ligado. Se você obter erros, então clique com o botão direito no servidor e selecione Propriedades. Mantendo a janela aberta, mude para a página de Opções do servidor. Configura as opções RPC e RPC para True.,
ainda não tenho a certeza do que estas opções estão a fazer, mas alguns daqueles que tinham problemas com o link para o MySQL fizeram com que funcionasse depois de definir o RPC-s como verdadeiro.
para fazer o questionamento realmente funcionar, precisamos de mais uma pequena mudança que afeta todo o fornecedor OLE DB e, portanto, todas as conexões que o usam. Nó de provedores abertos em servidores ligados, clique com o botão direito no MSDASQL (este é o Provedor OLE DB para Fontes de dados ODBC) e selecione Propriedades.
assinale a opção apenas antes do nível Zero e carregue em OK para gravar as alterações.,
pesquisar dados do servidor ligado
Pesquisar bases de dados ligadas é realmente fácil. Aqui está a tabela de clientes da base de dados crmlink em MySQL. Esta base de dados está ligada ao meu servidor SQL.
sintaxe para pesquisar servidor ligado é um pouco diferente do que normalmente escrevemos no servidor SQL. Precisamos de usar nomes de quatro partes: servidor.banco.esquema.tabela. Como não há esquemas no MySQL e o texto de conexão especifica o nome da base de dados, então podemos deixar estes fora como mostrado aqui.
select * from MYSQLCRM...customers
correr esta consulta do SSMS dá o seguinte resultado., São os mesmos dados que estão na mesa dos clientes do MySQL.
é claro que também podemos escrever consultas mais complexas. Tudo o que a ODBC consegue lidar está bem.
A mistura de dados do servidor local e ligado
tabelas do servidor ligado não estão totalmente isoladas das tabelas e vistas locais da base de dados. Também podemos misturar dados de servidor local e ligado.
para demonstrar consulta mista sobre tabelas locais e ligadas vamos escrever consulta simples para obter todos os clientes da tabela local e suas notações de crédito da tabela vinculada.
executar esta consulta dá-nos a seguinte saída.,como Mark Não está presente na Base de dados MySQL (suponha que ele é um novo cliente na loja eletrônica e o departamento de vendas ainda não o tem em seu sistema CRM), então ele não tem notação de crédito disponível. As notações de crédito do John e da Mary vêm do MySQL, no caso actual.
Using OPENQUERY () to execute query in linked server
The examples above make all data processing on SQL Server. Pode ser muito pouco otimista se houver um monte de dados nas tabelas do servidor conectado. Podemos querer – ou normalmente querer-processar alguns dados no servidor ligado antes do servidor SQL iniciar o processamento local., Para isso temos OPENQUERY().
Aqui está o exemplo de usar a função OPENQUERY () na consulta mista. Temos que especificar o nome do servidor vinculado e a consulta SQL para executar no servidor vinculado ao chamar OPENQUERY(). A consulta em vermelho é executada no servidor MySQL e os resultados são lidos para o servidor SQL para processamento posterior.
SELECT
c.FirstName,
c.LastName,
crm_c.credit_rating as CreditRating
FROM
Customers c
LEFT JOIN OPENQUERY(MYSQLCRM, '
SELECT
c.credit_rating
FROM
customers p
left join loyalty_points lp on
c.customer_id = lp.customer_id
WHERE
lp.points > 1000
') crm_c ON
c.ssn = crm_c.ssn
ORDER BY
crm_c.credit_rating,
c.LastName,
c.FirstName
OPENQUERY() é uma ótima maneira de otimizar e acelerar as consultas mistas, executando pesquisas mais complexas sobre dados de servidores ligados em servidor ligado.,
encerrar os servidores ligados a
é uma característica poderosa do servidor SQL, tornando fácil para nós usar dados de servidores externos. Existem duas maneiras de escrever consultas usando dados de servidores vinculados-consultas diretas que fazem todo o processamento no servidor SQL e OPENQUERY() que nos permite fazer algum processamento em servidor remoto. O servidor ligado é a integração e, portanto, o uso dele precisa de cuidados extras. Planejamento e medição de desempenho são atividades que devem ser quando planejam usar o servidor conectado.gostou deste post? Dê poder aos seus amigos, partilhando-o!,
- tweet
- compartilhe
- compartilhe
- compartilhe
- compartilhe
- compartilhe
- compartilhe
- compartilhe
Deixe uma resposta