none
O que é uma VIEW_METADATA ? RRS feed

  • Pergunta

  • Eu li a biblioteca do MSDN mas não entendi muito bem, o que seria uma View com VIEW_METADATA  ?

    Grande abraço!

    • Movido Gustavo Maia Aguiar sexta-feira, 13 de janeiro de 2012 11:47 (De:SQL Server - Desenvolvimento Geral)
    sexta-feira, 13 de janeiro de 2012 11:19

Respostas

  • Bom Dia,

    A VIEW é um comando SELECT encapsulado, mas ela mantém seus metadados (no caso que tipos de dados serão retornados). Existem algumas aplicações e providers que conseguem enxergar a view normalmente, mas existem outras que não. Para essas que não conseguem enxergar a view, quando um comando SELECT <Colunas> FROM <View> é emitido, a aplicação recebe de volta o SELECT que compõe a VIEW e aí emite o SELECT. Para essas situações, é preciso dar o GRANT VIEW_METADATA e assim essas aplicações irão fazer SELECT apenas sobre a VIEW, sem reenviar o SELECT que compõe a VIEW.

    Se a aplicação possuir acesso às tabelas que fazem parte da VIEW, esse comportamento não é alterado em nada. Entretanto, se a aplicação não tiver acesso às tabelas, dará um erro de permissão senão tiver o VIEW_METADATA.

    Sim, confesso que é confuso sim...

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    • Marcado como Resposta Brunomds sexta-feira, 13 de janeiro de 2012 12:05
    sexta-feira, 13 de janeiro de 2012 11:47

Todas as Respostas

  • Bom Dia,

    A VIEW é um comando SELECT encapsulado, mas ela mantém seus metadados (no caso que tipos de dados serão retornados). Existem algumas aplicações e providers que conseguem enxergar a view normalmente, mas existem outras que não. Para essas que não conseguem enxergar a view, quando um comando SELECT <Colunas> FROM <View> é emitido, a aplicação recebe de volta o SELECT que compõe a VIEW e aí emite o SELECT. Para essas situações, é preciso dar o GRANT VIEW_METADATA e assim essas aplicações irão fazer SELECT apenas sobre a VIEW, sem reenviar o SELECT que compõe a VIEW.

    Se a aplicação possuir acesso às tabelas que fazem parte da VIEW, esse comportamento não é alterado em nada. Entretanto, se a aplicação não tiver acesso às tabelas, dará um erro de permissão senão tiver o VIEW_METADATA.

    Sim, confesso que é confuso sim...

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    • Marcado como Resposta Brunomds sexta-feira, 13 de janeiro de 2012 12:05
    sexta-feira, 13 de janeiro de 2012 11:47
  • É confuso sim...rs, mas a explicação perfeita.

    Gustavo, mais uma vez, OBRIGADO!

    Grande abraço!

    sexta-feira, 13 de janeiro de 2012 12:05