MCDBA Brasil


  • Home
  • Sobre
  • Contato

Livros





Links Rápidos

SQL Server Builds (All Versions/Editions)


Download SQL Server 2017 (trial)


SQL Server 2017 Feature Pack


SQL Server 2016 Feature Pack


Cumulative Update SQL Server 2017 builds


Cumulative Update SQL Server 2016 builds


Cumulative Update SQL Server 2014 builds


Cumulative Update SQL Server 2012 builds


SQL Server 2005/2008 Samples Databases


Documentando o Servidor SQL Server


Analisando a Performance do Servidor-CheckList


Virtual PASS PT


Faça parte do maior virtual chapter do PASS com conteúdos técnicos em Português sobre SQL Server.

Todos os meses um evento Online para você! Acompanhe aqui os WebCasts já agendados

Sindicalize seu blog ou site ao VirtualPASSPT

SQL Server Blogs

SQL Server Query Processing Team


SQL Programmability & API Development Team


SQL Server Manageability Team


Latin America Support Team


Database + Disk + Performance


Microsoft SQL Server Support


SQL CLR Team


SQL Query Optimization Team


SQL 2005 Code Samples


SQL Server Express Team


SQL SMO Samples


SQL Storage Engine Team


SQL CAT Team


SQL Protocols Team


PSS SQL Server Engineers


Slava Oks on SQLOS


Ken Henderson’s blog


LUTI@Microsoft Blog


kimberly L. Trip’s blog


Fernando Garcia Blog

Dica da Semana

Utilizando Hints em Linked Server

por Nilton Pinheiro dezembro 6, 2004 Nenhum comentário

Na dica desta semana veremos como contarnar estas limitações da utilização de um linked server.


Para contornar este problema, você pode utilizar três soluções diferentes:
· Views
· Procedures
· A função OPENQUERY


No caso das views, ao invés de acessar diretamente a tabela no servidor remoto através do Linked Server, pode-se criar uma view da tabela no servidor remoto que contenha o hint NOLOCK e acessá-la através do Linked Server.


Exemplo:


No servidor Remoto crie a view


CREATE VIEW dbo.VTeste
AS
SELECT au_id, au_lname, au_fname
FROM dbo.authors WITH (nolock)



No servidor Local chame a view do servidor remoto


SELECT au_id, au_lname, au_fname FROM [MeuLinkedServer].pubs.dbo.Vteste


A segunda opção é criar uma stored procedure no servidor remoto fazendo uso do NOLOCK e do ROWLOCK quando necessário e executá-la a partir do servidor local. Além da procedure manter o plano de acesso à tabela pré-compilado, podemos colocar o NOLOCK no SELECT, melhorando o desempenho em tabelas onde a concorrência é grande.


Exemplo:


No Servidor Remoto crie a procedure


CREATE PROC SP_Teste
AS
SELECT A.au_id,  B.au_ord
FROM  [LinkedServer].pubs.dbo.authors   A
INNER JOIN [LinkedServer].pubs.dbo.titleauthor B (nolock)
ON A.au_id = B.au_id


No servidor Local chame a procedure do servidor remoto


EXEC [MeuLinkedServer].Pubs.dbo.SP_Teste



A terceira opção é a utilização do OPENQUERY. Esta função pode ser especificada na cláusula FROM da consulta a ser executada com a mesma funcionalidade do nome de uma tabela, recebendo como argumentos o nome do Linked Server a ser acessado e uma string com o comando a ser executado.



Vantagens:
– Função executa uma consulta em que o comando é enviado diretamente ao servidor de destino para ser processado (consultas pass-through);
– Permite o uso de query hints (NOLOCK, ROWLOCK, etc);
– A função OPENQUERY pode ser utilizada em comandos INSERT, UPDATE e DELETE;


Desvantagens:
– Não aceita variáveis como argumento;
– Possui o limite de 8000 caracteres para cada argumento.


Exemplo:


SELECT au_id, au_lname, au_fname
FROM OPENQUERY([MeuLinkedServer],’SELECT * FROM PUBS.DBO.AUTHORS (NOLOCK)’)



Considerações Importantes:


Procedimentos que devem ser seguidos na utilização do Linked Server:


1) Utilizar o mesmo usuário e senha nos servidores envolvidos.
2) As permissões (GRANT) devem ser liberadas para ambos os servidores.
3) Ao utilizar o SQL Server 2000 Enterprise Manager ou o isql.exe/osql.exe para criar ou alterar uma stored procedure contendo queries com linked server, você pode receber o seguinte erro:


Error 7405: Heterogeneous queries require the ANSI_NULLS and ANSI_WARNINGS options to be set for the connection. This ensures consistent query semantics. Enable these options and then reissue your query.



Causa


Por padrão o SQL Server 2000 Enterprise Manager ou o isql.exe/osql.exe definem na sua conexão os parâmetros ANSI_NULLS e ANSI_WARNINGS como OFF gerando o erro especificamente em situações com stored procedures que contenham Linked Server. Porém, podemos perceber que no Query Analyzer este erro não ocorre pois no os parâmetros ANSI_NULLS e ANSI_WARNINGS por padrão são configurados como ON.


Solução


Para solucionar este problema deve-se definir antes da criação/alteração da Stored Procedure os parâmetros ANSI_NULLS e ANSI_WARNINGS como ON como mostrado abaixo:


Set ANSI_NULLS ON
Set ANSI_WARNINGS ON

Go
Create Proc sp_teste
As
SELECT au_id, au_lname, au_fname
FROM [LinkedServer].pubs.dbo.authors


4) Remover todos os parâmetros (NOLOCK) da cláusula FROM que se referem ao Linked Server.
5) Utilizar SET XACT_ABORT ON para possibilitar a execução de rollback automático em casos de erros em tempo de execução.


Para saber mais sobre Linked Server e OPENQUERY, consulte o BOL do SQL Server 2000.


 

Avaliação:
Compartilhe:
  • Anterior Microsoft libera SQL Express CTP e SQL Express Manager21 anos atrás
  • Próximo Ferramenta SQL Server Health and History21 anos atrás

Deixe uma resposta Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

MVP Reconnect Award

Categorias

  • Artigos (359)
  • Dica da Semana (95)
  • Documentação (54)
  • Downloads (113)
  • MSDE 2000 (3)
  • Sem categoria (1)
  • Tutoriais (9)

Posts recentes

  • #FechouBrasil #PartiuPortugal
  • Brigando com o erro “The cached MSI file is missing”
  • MCDBABRASIL está de volta
  • Documentando o Servidor SQL Server
  • Brigando com os Erros 17182, 17826 e 17120

SQL Server AlwaysOn Video Series

Video1: Introdução ao SQLServer2012 AlwaysOn


Video2: Introdução ao SQLServer2012 AlwaysOn Availability Group


Video3: Introdução ao SQLServer2012 AlwaysOn AVG-Demo


Video4: Introdução ao SQLServer2012 AlwaysOn Listener


Video5: Introdução ao SQLServer2012 AlwaysOn Readable Secondaries


Video6: Introdução ao SQLServer2012 AlwaysOn Readable Secondaries-Demo


Video7: Introdução ao SQLServer2012 AlwaysOn Failover Clustering


Serie SQL Server Failover Clustering End-to-End

Parte 1: Configuração da Rede e Ambiente


Parte 2: Configurando o Windows 2008 R2 Domain Controler e DNS


Parte 3: Preparando os nós para o Failover Cluster


Parte 4: Configurando um Failover Cluster de 2 nós


Parte 5: Configurando as LUNs no iSCSI Software Target (Parte 1)


Parte 6: Configurando as LUNs no iSCSI Software Target (Parte 2)


Parte 7: Apresentando as LUNs para os nós do Failover Cluster


Parte 8: Configurando os discos no Failover Cluster


Parte 9: Instalando a primeira instância virtual do SQL Server 2008


Parte 10: Instalando a segunda instância virtual do SQL Server 2008


Parte 11: Instalando e Configurando o MSDTC no Failover Cluster


Parte 12: Configurando Mount Points no Cluster e SQL Server 2008


Vídeo Extra: Removendo uma Instância do SQL Server 2008 R2 em Cluster


Alta Disponibilidade no SQL Server 2008 R2: Failover Clustering Overview


Alta Disponibilidade no SQL Server 2008 R2: Failover Clustering na Prática

Menu

  • Home
  • Sobre
  • Contato

Mais

  • RSS Feeds
2026 MCDBA Brasil.