Como posso selecionar dados na mesma consulta de dois bancos de dados diferentes que estão em dois servidores diferentes no SQL Server?
sql
sql-server
Eric
fonte
fonte
Respostas:
O que você está procurando são servidores vinculados. Você pode acessá-los no SSMS no seguinte local na árvore do Pesquisador de Objetos:
Server Objects-->Linked Servers
ou você pode usar sp_addlinkedserver .
Você só precisa configurar um. Depois disso, você pode chamar uma tabela no outro servidor da seguinte maneira:
Observe que o proprietário nem sempre é
dbo
, portanto, substitua-o por qualquer esquema que você use.fonte
[OtherServerName].[OtherDB]..[OtherTable]
entanto, é melhor incluí-lo, se conhecido.Você pode fazer isso usando o servidor vinculado.
Normalmente, os servidores vinculados são configurados para permitir que o Mecanismo de Banco de Dados execute uma instrução Transact-SQL que inclua tabelas em outra instância do SQL Server ou em outro produto de banco de dados, como Oracle. Muitos tipos de fontes de dados OLE DB podem ser configurados como servidores vinculados, incluindo Microsoft Access e Excel.
Servidores vinculados oferecem as seguintes vantagens:
Leia mais sobre servidores vinculados .
Siga estas etapas para criar um servidor vinculado:
Objetos de servidor -> servidores vinculados -> novo servidor vinculado
Forneça o nome do servidor remoto.
Selecione Tipo de servidor remoto (SQL Server ou Outro).
Selecione Segurança -> Ser criado usando este contexto de segurança e forneça login e senha do servidor remoto.
Clique em OK e pronto!
Aqui está um tutorial simples para criar um servidor vinculado.
OU
Você pode adicionar um servidor vinculado usando a consulta.
Sintaxe:
Leia mais sobre sp_addlinkedserver .
Você precisa criar um servidor vinculado apenas uma vez . Após criar o servidor vinculado, podemos consultá-lo da seguinte forma:
fonte
Você também pode examinar o uso de servidores vinculados. Servidores vinculados também podem ser outros tipos de fontes de dados, como plataformas DB2. Este é um método para tentar acessar o DB2 a partir de uma chamada SQL Server TSQL ou Sproc ...
fonte
Could not find server '88.208.229.164' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.
Consultar dois bancos de dados diferentes é uma consulta distribuída. Aqui está uma lista de algumas técnicas, além dos prós e contras:
fonte
tente isto:
fonte
Todas essas são boas respostas, mas essa está faltando e tem seus próprios usos poderosos. Possivelmente, não se encaixa no que o OP queria, mas a pergunta era vaga e acho que outras pessoas podem encontrar o caminho até aqui. Basicamente, você pode usar 1 janela para executar simultaneamente uma consulta em vários servidores. Veja como:
Em SSMS abrir Servidores Registrados e criar um novo grupo de servidor sob grupos locais do servidor .
Nesse grupo, crie Novo Registro de Servidor para cada servidor que você deseja consultar. Se os nomes do banco de dados forem diferentes, defina um padrão para cada um nas propriedades.
Agora volte ao grupo que você criou na primeira etapa, clique com o botão direito do mouse e selecione Nova consulta. Uma nova janela de consulta será aberta e qualquer consulta que você executar será executada em cada servidor do grupo. Os resultados são apresentados em um único conjunto de dados com um nome de coluna extra, indicando de qual servidor o registro veio. Se você usar a barra de status, notará que o nome do servidor é substituído por vários .
fonte
Eu tive o mesmo problema para conectar um SQL_server 2008 a um SQL_server 2016 hospedado em um servidor remoto. Outras respostas não funcionaram para mim diretamente. Escrevo aqui minha solução aprimorada, pois acho que pode ser útil para outra pessoa.
Uma resposta estendida para conexões IP db remotas:
Etapa 1: vincular servidores
... onde
SRV_NAME
é um nome inventado. Nós o usaremos para nos referir ao servidor remoto a partir de nossas consultas.aaa.bbb.ccc.ddd
é o endereço IP do servidor remoto que hospeda seu banco de dados SQLserver.Etapa 2: execute suas consultas Por exemplo:
...e é isso!
Detalhes da sintaxe: sp_addlinkedserver e sp_addlinkedsrvlogin
fonte
Criou uma definição de servidor vinculado em um servidor para outro (você precisa do SA para fazer isso) e, em seguida, apenas faça referência a elas com nomes de quatro partes (consulte BOL).
fonte
Server 2008:
Quando estiver no SSMS conectado ao server1.DB1 e tente:
como outros observaram, se não funcionar, é porque o servidor não está vinculado.
Eu recebo o erro:
Para adicionar o servidor:
referência: Para adicionar servidor usando sp_addlinkedserver Link: [1]: Para adicionar servidor usando sp_addlinkedserver
Para ver o que está em seus sys.servers, basta consultá-lo:
fonte
fonte
Como @ Super9 falou sobre o OPENDATASOURCE usando a Autenticação do SQL Server com o provedor de dados SQLOLEDB . Estou apenas postando aqui um trecho de código para uma tabela no banco de dados atual do servidor em que o código está sendo executado e outra no outro servidor '192.166.41.123'
fonte
então deve ser assim -
fonte
Sei que essa é uma pergunta antiga, mas uso sinônimos. Supostamente, a consulta é executada no servidor de banco de dados A e procura uma tabela em um servidor de banco de dados B que não existe no servidor A. Adicione um sinônimo no banco de dados A que chama sua tabela do servidor B. Sua consulta não precisa ser inclua esquemas ou nomes diferentes de bancos de dados, basta chamar o nome da tabela normalmente e ele funcionará.
Não há necessidade de vincular servidores, pois os sinônimos, por assim dizer, são uma espécie de vinculação.
fonte
Objetos de servidor ---> servidor vinculado ---> novo servidor vinculado
No servidor vinculado, escreva o nome do servidor ou o endereço IP de outro servidor e escolha SQL Server In Security.
Agora conectado e use
fonte
Solução simplificada para adicionar servidores vinculados
Primeiro servidor
Segundo Login
Executar consultas vinculadas ao banco de dados local
fonte