Usuário com melhor resposta
Como criar uma view que consulta tabelas em uma base de dados diferente?

Pergunta
-
Respostas
-
Deleted
- Marcado como Resposta Ana_Miguel terça-feira, 10 de dezembro de 2019 14:12
Todas as Respostas
-
Ana_Miguel,
Estas bases de dados estão no mesmo servidor, ou seriam servidores distintos? Se for no mesmo, veja se este exemplo te ajuda:
Create View V_ConsultarDados As Select P.CodigoProduto, P.DescricaoProduto, F.CodigoFornecedor, F.NomeFornecedor From ERP.dbo.Produtos P Inner Join ESTOQUE.dbo.Fornecedores f On P.CodigoFornecedor = F.CodigoFornecedor Where F.CodigoFornecedor In (1,3,5,7) Go
Importante destacar que o usuário que executará a View deverá ter acesso a ambos os bancos de dados, a forma de execução da View basicamente será um comando Select, veja abaixo:
Select * From V_ConsultarDados Order By CodigoFornecedor Go
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
-
-
-
Olá Pedro, estão no mesmo servidor, só são bases de dados diferentes. O meu problema é, eu tenho a base de dados A e a base de dados B e preciso
que a base B consulte registros que estão nas tabelas da base A.
Ana,
Ok, então é mais tranquilo ainda, veja o exemplo:
-- Acessando o Banco de Dados B -- Use BancoDeDadosB Go -- Criando a View -- Create View V_ConsultarDados As Select P.CodigoProduto, P.DescricaoProduto, F.CodigoFornecedor, F.NomeFornecedor From BancoDeDadosA.dbo.Produtos P Inner Join BancoDeDadosA.dbo.Fornecedores F On P.CodigoFornecedor = F.CodigoFornecedor Where F.CodigoFornecedor In (1,3,5,7) Go -- Consultando -- Select * From V_ConsultarDados
Agora se você estiver no banco de dados A, também poderá executar a View que foi criada no B, veja o exemplo:-- Consultando a View existente no BancoDeDadosB, conectada no BancoDeDadosA -- Select * From BancoDeDados.dbo.V_ConsultarDados Order By CodigoProduto Go
Espero ter ajudado.Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Sugerido como Resposta IgorFKModerator terça-feira, 10 de dezembro de 2019 12:47
-
-
Deleted
- Marcado como Resposta Ana_Miguel terça-feira, 10 de dezembro de 2019 14:12
-
-
Ana,
Além da ótima observação do José Diz, você em que pensar, que o objeto que deseja consultar deve sempre existir, se a View for criada na base B e deseja acessar dados da Base A as respectivas tabelas obrigatóriamente devem existir em A, sendo assim, o contrário será da mesma forma.
Uma View é uma representação de uma objeto criado lógicamente em um banco de dados que sempre vai fazer acesso a outros objetos que também devem coexistir.
Esta estrutura inicialmente conhecida como View não armazena dados, a não que ser que a mesma seja criada com o conceito de View Materializada, a qual terá um índice vinculado a ela, e para este caso as colunas relacionadas para este índice acabam exigindo que materialização do dado, ou seja, a view terá em sua estrutura dados amarrados fisicamente a ela, ocupando espaço em disco.
Em adicional, o índice criado a esta view também estará fisicamente ligado a tabela que possui a coluna ou conjunto de colunas relacionados ao índice.
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Editado Junior Galvão - MVPMVP terça-feira, 10 de dezembro de 2019 14:56
-