Pular para o conteúdo principal

Questão de Banco de Dados — SQL Server — FGV 2024

Banco de DadosSQL Server
Código
fg086705
Banca
FGV
Órgão
MF
Ano
2024
Nível
Superior
Cargo
Auditor Federal de Finanças e Controle - Área de Tecnologia da Informação (Operação e Infraestrutura) - manhã
Numa instalação SQL Server, o administrador do banco de dados precisa identificar as tabelas do banco de dados corporativo da empresa que sofreram alterações nas suas definições num dado intervalo de tempo.Assinale o comando que produz corretamente essas informações.
  1. Aselect name, type_desc, modify_datefrom model.informationwhere type = 'SYSTEM'and modify_datebetween '01/01/2024' and '31/01/24'
  2. Bselect name, type_desc, modify_datefrom sys.informationwhere modify_datebetween '01/01/2024' and '31/01/2024'
  3. Cselect name, type_desc, modify_datefrom view.tableswhere type = 'USER'and modify_datebetween '01/01/2024' and '31/01/24'
  4. Dselect name, type_desc, modify_datefrom sys.tableswhere type = 'U'and modify_datebetween '01/01/2024' and '31/01/24'
  5. Eselect name, type_desc, modify_datefrom DICTIONARYwhere type = 'SYSTEM'and modify_datebetween '01/01/2024' and '31/01/24'
Revelar gabarito e comentário

GabaritoD — select name, type_desc, modify_date from sys.tables where type = 'U' and modify_date between '01/01/2024' and '31/01/24'

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

SQL Server: consulta de alterações em tabelas

Gabarito: letra D. No SQL Server, as informações sobre tabelas de usuário (incluindo a data da última alteração na definição) estão na view de sistema sys.tables, e o tipo de tabela de usuário é identificado pelo código 'U'. A consulta correta deve selecionar as colunas name, type_desc e modify_date a partir de sys.tables, filtrando por type = 'U' e modify_date BETWEEN. As demais alternativas erram na view do sistema (como sys.information, model.information, view.tables ou DICTIONARY) ou no filtro de tipo (como 'USER' ou 'SYSTEM').

A questão testa o conhecimento das views de catálogo do SQL Server. A pegadinha está em substituir sys.tables por outras views inexistentes ou inadequadas.

Alternativa

Fonte (FROM)

Filtro de tipo

Formato da data

Correta?

A

model.information

'SYSTEM'

'01/01/24' (ano 2 dígitos)

B

sys.information

(sem filtro de tipo)

'01/01/2024' e '31/01/2024'

C

view.tables

'USER'

'01/01/24' (ano 2 dígitos)

D

sys.tables

'U'

'01/01/2024' e '31/01/24'

E

DICTIONARY

'SYSTEM'

'01/01/2024' e '31/01/24'

Alternativa A — ❌ Incorreta

Utiliza from model.information — não existe essa view no modelo de sistema do SQL Server. O esquema correto é sys, e a view é sys.tables.

Alternativa B — ❌ Incorreta

Utiliza from sys.information — a view information não existe em sys. A view correta é sys.tables.

Alternativa C — ❌ Incorreta

Utiliza from view.tables — não existe schema view com essa tabela. Além disso, filtra por type = 'USER', que não é o código usado no SQL Server (o correto é 'U').

Alternativa D — ✅ Correta ⟵ GABARITO

-> Acessa a view de sistema sys.tables, que contém uma linha para cada tabela de usuário no banco de dados. -> Filtra por type = 'U' (tabelas de usuário, excluindo tabelas do sistema). -> Usa modify_date BETWEEN com datas no formato correto (considerando a configuração regional do servidor, o padrão é 'YYYY-MM-DD' ou aceito no formato dia/mês/ano). -> Produz exatamente as colunas solicitadas: name (nome da tabela), type_desc (descrição do tipo, ex: 'USER_TABLE') e modify_date (data da última modificação da definição).

Alternativa E — ❌ Incorreta

Utiliza from DICTIONARY — não existe objeto chamado DICTIONARY no SQL Server. Seria uma confusão com o DICTIONARY de outros SGBDs (como o Oracle).

NÃO CAIA NESSA!

A banca troca a view de sistema correta (sys.tables) por outras que parecem plausíveis (sys.information, model.information, view.tables) ou por um termo genérico (DICTIONARY). Além disso, substitui o código de tipo 'U' por 'USER' ou 'SYSTEM'. Decore: para listar tabelas de usuário, é sempre sys.tables WHERE type = 'U'.

Gabarito: letra D — a única que combina a view sys.tables com o filtro type = 'U'.

Link permanente: /questoes/fg086705