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.
Aselect name, type_desc, modify_datefrom model.informationwhere type = 'SYSTEM'and modify_datebetween '01/01/2024' and '31/01/24'
Bselect name, type_desc, modify_datefrom sys.informationwhere modify_datebetween '01/01/2024' and '31/01/2024'
Cselect name, type_desc, modify_datefrom view.tableswhere type = 'USER'and modify_datebetween '01/01/2024' and '31/01/24'
Dselect name, type_desc, modify_datefrom sys.tableswhere type = 'U'and modify_datebetween '01/01/2024' and '31/01/24'
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'.