Simulado para o Exame 70-433 – MCTS: Microsoft SQL Server 2008 – Database Development – Parte 02


Questão 011
Você é o administrador de dados de uma empresa de planos de saúde. A empresa está elaborando um novo sistema de CRM e a identificação dos clientes obedece às seguintes regras:

  1. Os clientes devem ser identificados por um número gerado automaticamente (CodigoCliente)
  2. Haverá no máximo 5 milhões de clientes
  3. Os clientes possuem RG e esse é um atributo único e obrigatório
  4. Os clientes possuem CPF e esse é um campo único porém opcional

A tabela de clientes foi implementada conforme a figura abaixo:

Tendo por base as regras estipuladas e a tabela em questão, quais das alternativas devem ser implementadas de forma a manter a integridade lógica dos dados ? (Marque todas que se aplicam)

A.
A coluna CodigoCliente deve ser do tipo UniqueIdentifier

B.
A coluna CodigoCliente deve ser do tipo INT

C.
A coluna CodigoCliente deve ter a propriedade Is Identity marcada como verdadeira

D.
A coluna CodigoCliente deve ter um valor Default NewSequentialID()

E.
A coluna CodigoCliente deve compor a Primary Key

F.
A coluna CodigoCliente deve ter uma Unique Constraint

G.
A coluna RG deve compor a Primary Key

H.
A coluna RG deve ter uma Unique Constraint

I.
A coluna CPF deve compor a Primary Key

J.
A coluna CPF deve ter uma Unique Constraint

Questão 012
O implementador de banco de dados criou uma tabela de Clientes com a opção conforme a figura abaixo:

O script de criação da tabela está detalhado a seguir:

SET ANSI_NULL_DFLT_ON
GO

CREATE TABLE Clientes (
    IdCliente INT PRIMARY KEY, NomeCliente VARCHAR(50),
    Renda SMALLMONEY, CPF CHAR(11))
GO

A tabela possui uma CHECK Constraint e uma trigger AFTER. O código da CHECK Constraint é exibido abaixo:

ALTER TABLE Clientes ADD CONSTRAINT CKRenda CHECK (Renda > 0)

A CHECK Constraint verifica se a coluna Renda é maior que zero e a trigger faz um registro em uma tabela de auditoria informando o nome do operador que cadastrou o cliente. Um operador iniciante fez dois cadastros. No primeiro cadastro ele informou a renda igual a zero e no segundo a renda nula. Marque todas as alternativas corretas:

A.
Ocorrerá um erro nos dois cadastros, mas a trigger irá disparar em ambos

B.
Ocorrerá um erro nos dois cadastros e a trigger não irá disparar em nenhum deles

C.
O 1º cadastro será rejeitado e o 2º permitido e haverá disparo da trigger nos dois cadastros

D.
O 1º cadastro será permitido e o 2º rejeitado e haverá disparo da trigger nos dois cadastros

E.
O 1º cadastro irá falhar e a trigger não será disparada. O segundo cadastro será feito normalmente com disparo da trigger.

Questão 013
No banco de dados do principal sistema desenvolvido pela equipe a qual você faz parte, há uma tabela que foi criada conforme o código a seguir:

CREATE TABLE Equipamentos (
    IDEquipamento INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    NomeEquipamento VARCHAR(60) NOT NULL,
    IDCategoria INT NOT NULL)

A tabela encontra-se vazia e servirá para um novo módulo de contabilidade. Você possui a lista de equipamentos em outra tabela e gostaria de fazer a carga para a tabela Equipamentos através do comando abaixo:

INSERT INTO Equipamentos (IDEquipamento, NomeEquipamento, IDCategoria)
SELECT ID, Nome, IDCat FROM EquipamentosOLD

Ao rodar esse comando a seguinte mensagem de erro referente ao uso do Identity foi apresentada.

Msg 544, Level 16, State 1, Line 1
Cannot insert explicit value for identity column in table ‘Equipamentos’ when IDENTITY_INSERT is set to OFF.

Qual comando deveria ser executado antes do INSERT ?

A.
ALTER TABLE Equipamentos SET IDENTITY OFF

B.
DBCC CHECKIDENT(‘Equipamentos’,RESEED,0)

C.
SET IDENTITY_INSERT Equipamento ON

D.
EXEC sp_tableoption ‘Equipamentos’,‘Disable Identity’

Questão 014
Como responsável pela camada de persistência de um aplicativo de pedidos, você ficou responsável por definir uma implementação para um relacionamento de composição entre duas classes “Pedidos” e “Item”. O objetivo é que caso um determinado pedido seja excluído, seus itens também sejam automaticamente excluídos. O diagrama das tabelas é exposto abaixo:

Levando em consideração a necessidade exposta e a presença de aplicativos legados que não irão necessariamente utilizar a persistência definida por você, qual seria a melhor implementação ?

A.
Utilizar uma Stored Procedure para efetuar a exclusão dos Itens e depois do Pedido

B.
Habilitar a exclusão em cascata na chave estrangeira na tabela de Itens

C.
Utilizar uma trigger Instead Of Delete na tabela de Pedidos para excluir os itens e depois o Pedido

D.
Não há necessidade de implementar esse controle, pois, por padrão ao excluir um Pedido seus itens serão automaticamente excluídos.

Questão 015
Como programador recém contratado, você está efetuando manutenção em uma aplicação de protocolo da instituição. Todo documento possui duas datas respectivamente a data do documento e a data do primeiro despacho:

A regra de negócio diz que não é possível que um documento possa ser despachado antes dele ter sido criado, ou seja, a data de despacho tem de ser superior à data de cadastro.

Ao implementar um CHECK Constraint para garantir essa regra, você percebeu que ela não pôde ser implementada, pois, havia vários registros onde a data de criação do documento era superior a data do primeiro despacho. Você necessita implementar essa regra, pois, se a mesma não for implementada, mais registros podem ter a data de cadastro superior à data do primeiro despacho. O que você deve fazer ?

A.
Implementar uma trigger AFTER INSERT para controlar os novos documentos

B.
Implementar uma trigger INSTEAD OF INSERT para controlar os novos documentos

C.
Deixar a cargo da aplicação a realização desse controle

D.
Implementar a CHECK CONSTRAINT com a cláusula WITH NOCHECK e em seguida habilitá-la

Questão 016
A empresa onde você trabalha está desenvolvimento uma aplicação para catalogar as fotos e os vídeos de eventos relacionados a empresa. As fotos têm um tamanho médio de 1MB enquanto os vídeos ficam em 20MB. A aplicação não deverá guardar os dados diretamente no banco de dados e é necessário ter as seguintes garantias:

  • Quando um backup da base for executado, as fotos e os vídeos devem fazer parte do backup
  • Quando um registro for excluído, automaticamente os arquivos associados devem ser excluídos
  • O esforço de desenvolvimento e administração deve ser o menor possível

Qual seria a melhor implementação no banco de dados ?

A.
Gravar os arquivos em uma coluna do tipo VARBINARY(20)

B.
Gravar os arquivos em uma coluna do tipo VARBINARY(MAX)

C.
Utilizar o tipo de dados FILESTREAM

D.
Gravar todos os arquivos em uma pasta e gravar no banco de dados apenas o caminho dos arquivos em uma coluna VARCHAR e utilizar a aplicação recuperar o arquivo

Questão 017
Qual das instruções abaixo instancia um tipo de dados geométrico definindo um ponto nas coordenadas 11, 14 ?

A.
DECLARE @g geometry;
SET @g = geometry::STPointFromText(‘POINT (11 14)’);

B.
DECLARE @g geometry ;
SET @g = geometry::STPointFromText(‘(11 14)’, 0);

C.
DECLARE @g geography;
SET @g = geometry::STPointFromText(‘POINT (11 14)’, 0);

D.
DECLARE @g geometry ;
SET @g = geometry::STPointFromText(‘POINT (11 14)’, 0);

Questão 018
Após efetuar um deploy para o ambiente de produção, os usuários se queixam de uma mensagem de erro “Cannot resolve collation conflict for equal to operation”. A equipe de produção mapeou a tela de erro que possibilitou encontrar a consulta que provocou o erro.

SELECT
     Atual.CentroCusto + ‘ – ‘ + Atual.NomeArea As Area,
     Atual.Valor As CustoAtual, YEAR(Atual.DataRef) As AnoCorrente,
YEAR(Antigo.DataRef) As AnoBase, Antigo.Valor As CustoAntigo
FROM Dados2010.dbo.Faturamento As Atual
LEFT OUTER JOIN Dados2009.dbo.Faturamento As Antigo ON Atual.CentroCusto = Old.CentroCusto

Qual é a provável causa do problema ?

A.
A coluna CentroCusto possui a collation diferente da coluna NomeArea

B.
A coluna DataRef é Unicode

C.
O LEFT OUTER JOIN deve ser substituído por INNER JOIN

D.
A collation da base Dados2009 deve ser diferente da collation da base Dados2010

E.
A collation das colunas CentroCusto deve estar diferente entre as bases de dados

Questão 019
Quais os dois comandos da lista abaixo são capazes de mostrar a collation de um banco de dados específico ?

A.
SELECT SERVERPROPERTY(‘Collation’)

B.
SELECT DATABASEPROPERTYEX(‘<Banco>’,‘Collation’ )

C.
EXEC sp_helpdb ‘<Banco>’

D.
SELECT Collation FROM sys.databases WHERE name = ‘<Banco>’

E.
SELECT * FROM ::fn_helpcollations()

F.
SELECT Collation FROM INFORMATION_SCHEMA.DATABASES WHERE name = ‘<Banco>’

Questão 020
A relação abaixo lista alguns dos passos envolvidos na criação de uma tabela particionada.

1.
Criação do esquema de particionamento

2.
Criação da tabela

3.
Criação dos arquivos adicionais de dados

4.
Criação dos FILEGROUPs

5.
Criação da função de particionamento

Qual das sequências a seguir pode ser utilizada para criar uma tabela particionada ?

A.
1, 5, 4, 3, 2

B.
4, 3, 5, 1, 2

C.
3, 4, 5, 1, 2

D.
3, 4, 1, 5, 2

E.
5, 4, 2, 1, 3

Questão 021
Você é um implementador de banco de dados e está desenvolvendo um função de particionamento com o seguinte código:

CREATE PARTITION FUNCTION pf_Data (DATETIME2)
AS RANGE LEFT FOR VALUES (’20080101′,’20090101′,’20100101′);

Os valores 01/01/2008 e 01/01/2009 00:30 ficarão respectivamente em quais partições ?

A.
1 e 2

B.
2 e 3

C.
1 e 3

D.
Ambos ficarão na partição 2


Respostas

Questão 011
Você é o administrador de dados de uma empresa de planos de saúde. A empresa está elaborando um novo sistema de CRM e a identificação dos clientes obedece às seguintes regras:

  1. Os clientes devem ser identificados por um número gerado automaticamente (CodigoCliente)
  2. Haverá no máximo 5 milhões de clientes
  3. Os clientes possuem RG e esse é um atributo único e obrigatório
  4. Os clientes possuem CPF e esse é um campo único porém opcional

A tabela de clientes foi implementada conforme a figura abaixo:

Tendo por base as regras estipuladas e a tabela em questão, quais das alternativas devem ser implementadas de forma a manter a integridade lógica dos dados ? (Marque todas que se aplicam)

A.
A coluna CodigoCliente deve ser do tipo UniqueIdentifier

B.
A coluna CodigoCliente deve ser do tipo INT

C.
A coluna CodigoCliente deve ter a propriedade Is Identity marcada como verdadeira

D.
A coluna CodigoCliente deve ter um valor Default NewSequentialID()

E.
A coluna CodigoCliente deve compor a Primary Key

F.
A coluna CodigoCliente deve ter uma Unique Constraint

G.
A coluna RG deve compor a Primary Key

H.
A coluna RG deve ter uma Unique Constraint

I.
A coluna CPF deve compor a Primary Key

J.
A coluna CPF deve ter uma Unique Constraint

Respostas Corretas: B, C, E, H

Explicação: A regra 1 diz que os clientes devem ser identificados por um número gerado automaticamente e a regra 2 diz que haverá no máximo 5 milhões de clientes. Essa quantidade é suportável pelo tipo INT. Para que um número possa ser gerado automaticamente basta que essa coluna tenha a propriedade Is Identity marcada como verdadeira. A regra 3 diz que os clientes devem ser identificados pela atributo CodigoCliente e portanto ela deve ser compor a chave primária (Primary Key). Como o atributo RG é único e obrigatório é necessário obrigar que o mesmo não se repita para manter a integridade. Como a identificação dos clientes é feita com base no código (chave primária), o RG será uma chave alternativa e deve portanto ter um Unique Constraint associada.

Respostas Incorretas: A, D, F, G, I, J

A – A regra 1 estipula que um número deva identificar o cliente. Essa regra já descarta o tipo UniqueIdentifier, pois, esse representa um GUID (Global Unique Identifier) e não consiste em um número.

D – Um valor Default NewSequentialID () provê um UniqueIdentifier de forma sequencial, mas uma vez que o tipo de dados não é UniqueIdentifier, esse valor Default não pode ser utilizado.

F – A coluna CodigoCliente já é chave primária e não há necessidade de adicionar uma Unique Constraint a essa coluna.

G – A coluna RG poderia compor a chave primária, mas como a regra 1 diz que os clientes são identificados pelo código, a coluna CodigoCliente deve ser a chave primária e não o RG.

I – A coluna CPF não pode compor uma chave primária, uma vez que a chave primária não comporta valores nulos.

J – A coluna CPF é única, mas como as Unique Constraints no SQL Server só toleram uma única ocorrência de valor nulo, não é possível utilizá-la na coluna CPF.

Referências:
Unique Constraints – Aplicações, Alternativas e um lapso “justificável” do SQL Server
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!710.entry

Questão 012
O implementador de banco de dados criou uma tabela de Clientes com a opção conforme a figura abaixo:

O script de criação da tabela está detalhado a seguir:

SET ANSI_NULL_DFLT_ON
GO

CREATE TABLE Clientes (
    IdCliente INT PRIMARY KEY, NomeCliente VARCHAR(50),
    Renda SMALLMONEY, CPF CHAR(11))
GO

A tabela possui uma CHECK Constraint e uma trigger AFTER. O código da CHECK Constraint é exibido abaixo:

ALTER TABLE Clientes ADD CONSTRAINT CKRenda CHECK (Renda > 0)

A CHECK Constraint verifica se a coluna Renda é maior que zero e a trigger faz um registro em uma tabela de auditoria informando o nome do operador que cadastrou o cliente. Um operador iniciante fez dois cadastros. No primeiro cadastro ele informou a renda igual a zero e no segundo a renda nula. Marque todas as alternativas corretas:

A.
Ocorrerá um erro nos dois cadastros, mas a trigger irá disparar em ambos

B.
Ocorrerá um erro nos dois cadastros e a trigger não irá disparar em nenhum deles

C.
O 1º cadastro será rejeitado e o 2º permitido e haverá disparo da trigger nos dois cadastros

D.
O 1º cadastro será permitido e o 2º rejeitado e haverá disparo da trigger nos dois cadastros

E.
O 1º cadastro irá falhar e a trigger não será disparada. O segundo cadastro será feito normalmente com disparo da trigger.

Resposta Correta: E

Explicação: As triggers AFTER são disparados após o evento de origem ter sido executado. Se uma CONSTRAINT for violada (PK, FK, NOT NULL, Check, etc) o evento não será concluído e por isso uma trigger AFTER não será disparada. No caso do 1º cadastro a renda é igual a zero e portanto a Check Constraint é violada. Essa violação irá impedir que o registro seja inserido e a trigger não será disparada. No caso do 2º cadastro, a renda nula é permitida, pois, por padrão CHECK Constraint não rejeitam registros nulos (a menos que se coloque essa restrição na especificação da CHECK Constraint). O uso da opção SET ANSI_NULL_DFLT_ON garante que a coluna foi criada de forma a permitir valores nulos e portanto o 2º registro será considerado válido. Uma vez que o registro foi realizado sem violar constraints, a trigger será disparada para o 2º cadastro.

Respostas Incorretas: A, B, C, D

A – Uma trigger AFTER não é disparada se ocorrer um erro no cadastro

B – Não ocorrerá um erro no segundo cadastro visto que a opção SET ANSI_NULL_DFLT_ON criou a coluna Renda de forma a permitir registros nulos e a constraint não faz nenhuma restrição. Só haveria erro no segundo cadastro se a coluna não permitisse valores nulos.

C – O segundo cadastro não será rejeitado

D – Não haverá disparo de trigger no primeiro cadastro, pois, como a renda informada é igual a zero a CHECK Constraint é violada e o INSERT não ocorrerá.

Questão 013
No banco de dados do principal sistema desenvolvido pela equipe a qual você faz parte, há uma tabela que foi criada conforme o código a seguir:

CREATE TABLE Equipamentos (
    IDEquipamento INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    NomeEquipamento VARCHAR(60) NOT NULL,
    IDCategoria INT NOT NULL)

A tabela encontra-se vazia e servirá para um novo módulo de contabilidade. Você possui a lista de equipamentos em outra tabela e gostaria de fazer a carga para a tabela Equipamentos através do comando abaixo:

INSERT INTO Equipamentos (IDEquipamento, NomeEquipamento, IDCategoria)
SELECT ID, Nome, IDCat FROM EquipamentosOLD

Ao rodar esse comando a seguinte mensagem de erro referente ao uso do Identity foi apresentada.

Msg 544, Level 16, State 1, Line 1
Cannot insert explicit value for identity column in table ‘Equipamentos’ when IDENTITY_INSERT is set to OFF.

Qual comando deveria ser executado antes do INSERT ?

A.
ALTER TABLE Equipamentos SET IDENTITY OFF

B.
DBCC CHECKIDENT(‘Equipamentos’,RESEED,0)

C.
SET IDENTITY_INSERT Equipamento ON

D.
EXEC sp_tableoption ‘Equipamentos’,‘Disable Identity’

Resposta Correta: C

Explicação: Por padrão uma coluna Identity gera valores automaticamente. A instrução SET IDENTITY_INSERT permite que valores explícitos sejam inseridos em uma coluna mesmo que ela esteja marcada como Identity.

Respostas Incorretas: A, B, D

A – Esse comando não existe no SQL Server

B – O comando DBCC CHECKIDENT serve para verificar e atribuir um novo valor inicial para o Identity, mas não irá permitir que ele seja sobrescrito.

D – A opção Disable Identity não é um parâmetro válido para a stored procedure sp_tableoption

Questão 014
Como responsável pela camada de persistência de um aplicativo de pedidos, você ficou responsável por definir uma implementação para um relacionamento de composição entre duas classes “Pedidos” e “Item”. O objetivo é que caso um determinado pedido seja excluído, seus itens também sejam automaticamente excluídos. O diagrama das tabelas é exposto abaixo:

Levando em consideração a necessidade exposta e a presença de aplicativos legados que não irão necessariamente utilizar a persistência definida por você, qual seria a melhor implementação ?

A.
Utilizar uma Stored Procedure para efetuar a exclusão dos Itens e depois do Pedido

B.
Habilitar a exclusão em cascata na chave estrangeira na tabela de Itens

C.
Utilizar uma trigger Instead Of Delete na tabela de Pedidos para excluir os itens e depois o Pedido

D.
Não há necessidade de implementar esse controle, pois, por padrão ao excluir um Pedido seus itens serão automaticamente excluídos.

Resposta Correta: B

Explicação: Por padrão, um exclusão em uma tabela que seja referenciada por outras tabelas não é possível se houver registros correspondentes. Isso significa que a exclusão de um pedido que possua itens não será possível, pois, ela deixaria referências incorretas nos itens do pedido excluído. A especificação ANSI especifica algumas ações que podem ser configuradas nessa situação. A ação padrão (No Action) é impedir a exclusão na presença de correspondentes. Existem ainda as opções Cascade, Set Default e Set Null. A opção Cascade faz a exclusão em cascata fazendo com que a exclusão de um pedido automaticamente exclua os itens correspondentes.

Respostas Incorretas: A, C, D

A – Uma stored procedure incorreria em mais codificação e não faria a exclusão automática caso alguma aplicação legada fizesse um DELETE diretamente contra a tabela sem utilizá-la.

C – Essa poderia ser uma implementação válida, mas triggers incorrem em menos desempenho e mais codificação que a mudança na chave estrangeira.

D – A exclusão em cascata não é a opção padrão.

Questão 015
Como programador recém contratado, você está efetuando manutenção em uma aplicação de protocolo da instituição. Todo documento possui duas datas respectivamente a data do documento e a data do primeiro despacho:

A regra de negócio diz que não é possível que um documento possa ser despachado antes dele ter sido criado, ou seja, a data de despacho tem de ser superior à data de cadastro.

Ao implementar um CHECK Constraint para garantir essa regra, você percebeu que ela não pôde ser implementada, pois, havia vários registros onde a data de criação do documento era superior a data do primeiro despacho. Você necessita implementar essa regra, pois, se a mesma não for implementada, mais registros podem ter a data de cadastro superior à data do primeiro despacho. O que você deve fazer ?

A.
Implementar uma trigger AFTER INSERT para controlar os novos documentos

B.
Implementar uma trigger INSTEAD OF INSERT para controlar os novos documentos

C.
Deixar a cargo da aplicação a realização desse controle

D.
Implementar a CHECK CONSTRAINT com a cláusula WITH NOCHECK e em seguida habilitá-la

Resposta Correta: D

Explicação: Toda vez que uma constraint é criada ela fará a checagem dos valores previamente cadastrados para verificar se eles obedecem a regra estipulada pela constraint. Caso algum registro não esteja em conformidade com as regras definidas pela constraint, a criação da mesma falha. No caso de CHECK Constraints e Foreign Keys é possível mudar esse comportamento criando-os com a cláusula NOCHECK. Isso faz com que elas sejam criadas mesmo que haja registros que violem suas regras. Ao habilitá-las apenas os novos registros são checados. Os registros anteriores à sua criação não são verificados.

Respostas Incorretas: A, B, C

A, B – O uso de triggers possibilita a criação das regras, mas são menos performáticos que uma constraint e portanto não são a melhor alternativa.

C – Implementar a regra na aplicação é uma alternativa, mas se por ventura mais aplicações gravarem registros nessa tabela, a regra terá de ser repetida em cada aplicação. Outro inconveniente é que gravações feitas diretamente na base de dados e (ou) cargas de dados não serão verificadas.

Questão 016
A empresa onde você trabalha está desenvolvimento uma aplicação para catalogar as fotos e os vídeos de eventos relacionados a empresa. As fotos têm um tamanho médio de 1MB enquanto os vídeos ficam em 20MB. A aplicação não deverá guardar os dados diretamente no banco de dados e é necessário ter as seguintes garantias:

  • Quando um backup da base for executado, as fotos e os vídeos devem fazer parte do backup
  • Quando um registro for excluído, automaticamente os arquivos associados devem ser excluídos
  • O esforço de desenvolvimento e administração deve ser o menor possível

Qual seria a melhor implementação no banco de dados ?

A.
Gravar os arquivos em uma coluna do tipo VARBINARY(20)

B.
Gravar os arquivos em uma coluna do tipo VARBINARY(MAX)

C.
Utilizar o tipo de dados FILESTREAM

D.
Gravar todos os arquivos em uma pasta e gravar no banco de dados apenas o caminho dos arquivos em uma coluna VARCHAR e utilizar a aplicação recuperar o arquivo

Resposta Correta: C

Explicação: O tipo de dados FILESTREAM permite a gravação de imagens, vídeos, arquivos, etc no SQL Server. Ao utilizar esse tipo de dados, os arquivos não ficam armazenados juntamente com os dados em arquivos MDF e NDF, mas sim no sistema de arquivos podendo ser acessados inclusive por outras aplicações (se devidamente configurado). Essa funcionalidade permite que se obtenha os benefícios do armazenamento em sistema de arquivos (desempenho, acesso, etc) sem abrir mão dos benefícios de banco de dados (backup, segurança integrada, etc).

Respostas Incorretas: A, B, D

A – Uma coluna do tipo VARBINARY(20) não tem o tamanho necessário para armazenar as fotos e os vídeos, pois, possui no máximo 20 bytes de tamanho.

B – A coluna do tipo VARBINARY(MAX) permite o armazenamento de dados binários em até 2GB e atende aos requisitos de tamanho. Entretanto, os dados serão armazenados diretamente no banco de dados juntamente com as demais tabelas, índices, etc e não atenderia a necessidade de não gravar os dados diretamente no banco de dados.

D – A gravação dos arquivos fora do banco de dados e apenas o caminho no banco de dados é uma solução performática, mas tem algumas desvantagens. O backup do banco de dados representará apenas os dados e não contemplará o backup dos arquivos e vice-versa. A exclusão de um registro não incorrerá automaticamente na exclusão dos arquivos referentes aquele registro. Embora seja possível contornar essas desvantagens através da aplicação, procedimentos, etc isso representa esforços adicionais na codificação da aplicação e nas tarefas administrativas.

Questão 017
Qual das instruções abaixo instancia um tipo de dados geométrico definindo um ponto nas coordenadas 11, 14 ?

A.
DECLARE @g geometry;
SET @g = geometry::STPointFromText(‘POINT (11 14)’);

B.
DECLARE @g geometry ;
SET @g = geometry::STPointFromText(‘(11 14)’, 0);

C.
DECLARE @g geography;
SET @g = geometry::STPointFromText(‘POINT (11 14)’, 0);

D.
DECLARE @g geometry ;
SET @g = geometry::STPointFromText(‘POINT (11 14)’, 0);

Resposta Correta: D

Explicação: O tipo de dados geometry possui o método STPointFromText que permite definir as coordenadas de um ponto específico (Point) ou vários pontos (Multipoint). Esse método recebe dois argumentos. O primeiro é a coleção das coordenadas geométricas e o segundo é o SRID (Spatial Reference ID).

Respostas Incorretas: A, B, C

A – O método STPointFromText obriga que o SRID seja informado. Como o SRID foi omitido um erro de sintaxe será gerado.

B – O método STPointFromText obriga que a coleção das coordenadas geométricas informe se será apenas um ponto (Point) ou vários pontos (Multi Point). Não é possível especificar somente as coordenadas.

C – A variável @g foi declarada como geográfica e não geométrica e o uso do método STPointFromText não funciona para tipos geográficos.

Questão 018
Após efetuar um deploy para o ambiente de produção, os usuários se queixam de uma mensagem de erro “Cannot resolve collation conflict for equal to operation”. A equipe de produção mapeou a tela de erro que possibilitou encontrar a consulta que provocou o erro.

SELECT
     Atual.CentroCusto + ‘ – ‘ + Atual.NomeArea As Area,
     Atual.Valor As CustoAtual, YEAR(Atual.DataRef) As AnoCorrente,
YEAR(Antigo.DataRef) As AnoBase, Antigo.Valor As CustoAntigo
FROM Dados2010.dbo.Faturamento As Atual
LEFT OUTER JOIN Dados2009.dbo.Faturamento As Antigo ON Atual.CentroCusto = Old.CentroCusto

Qual é a provável causa do problema ?

A.
A coluna CentroCusto possui a collation diferente da coluna NomeArea

B.
A coluna DataRef é Unicode

C.
O LEFT OUTER JOIN deve ser substituído por INNER JOIN

D.
A collation da base Dados2009 deve ser diferente da collation da base Dados2010

E.
A collation das colunas CentroCusto deve estar diferente entre as bases de dados

Resposta Correta: E

Explicação: A collation representa como os dados de um tipo textual (varchar, char, nvarchar, nchar, text e ntext) são comparados e ordenados. Como a mensagem de erro relata problemas com a collation, deve necessariamente haver comparações entre colunas textuais. A consulta mostra apenas duas combinações entre colunas (Atual.CentroCusto + ‘ – ‘ + Atual.NomeArea e Atu.CentroCusto = Old.CentroCusto). A parte final da mensagem tem o texto “for equal to operation” que informa que o erro ocorre em uma comparação de igualdade. Como a única comparação que envolve igualdade refere-se às colunas de centro de custo, possivelmente a collation dessas colunas não é a mesma.

Respostas Incorretas: A, B, C, D

A – A concatenação de duas colunas com collation diferente pode produzir um erro de collation, mas nesse caso a mensagem de erro seria “Implicit conversion of varchar value to varchar cannot be performed because the collation of the value is unresolved due to a collation conflict.”

B – O fato de uma coluna ser Unicode não necessariamente provocará um erro de collation. Apenas se houver combinação de colunas textuais com diferentes collations é que esse ocorre.

C – A substituição de LEFT OUTER JOIN por INNER JOIN pode alterar o sentido da consulta e também não tem qualquer impacto na ocorrência e nem na solução do problema.

D – Uma diferença de collation entre bases de dados pode provocar um erro de collation. Normalmente as colunas das tabelas herdam a collation da base de dados e se a collation das bases estiver diferente é possível que as colunas também tenham collations diferentes. Entretanto, é possível criar colunas com uma collation diferente da utilizada na base de dados e isso possibilitaria que bases com collations diferentes tenham colunas com collations iguais. Apena a diferença de collation entre bases não é garantia da ocorrência do erro.

Questão 019
Quais os dois comandos da lista abaixo são capazes de mostrar a collation de um banco de dados específico ?

A.
SELECT SERVERPROPERTY(‘Collation’)

B.
SELECT DATABASEPROPERTYEX(‘<Banco>’,‘Collation’ )

C.
EXEC sp_helpdb ‘<Banco>’

D.
SELECT Collation FROM sys.databases WHERE name = ‘<Banco>’

E.
SELECT * FROM ::fn_helpcollations()

F.
SELECT Collation FROM INFORMATION_SCHEMA.DATABASES WHERE name = ‘<Banco>’

Respostas Corretas: B e C

Explicação: A função DATABASEPROPERTYEX possibilita a consulta a várias propriedades de um banco de dados como status, recovery model, etc. Essa função pode ser utilizada para consultar a collation de um banco de dados. A stored procedure sp_helpdb retorna várias informações de um determinado banco de dados como os arquivos utilizados, a data de criação, o tamanho, etc. Entre essas informações está presente a collation utilizada.

Respostas Incorretas: A, D, E, F

A – A função SERVERPROPERY retorna a collation do servidor e não de um banco de dados específico. Normalmente um banco de dados irá utilizar a mesma collation que o servidor, mas não obrigatoriamente uma vez que é possível criar bancos  de dados com a collation diferente do servidor.

D – A view sys.databases não possui uma coluna chamada “Collation” e não há como saber a collation de um determinado banco de dados apenas consultando essa view.

E – A função ::fn_helpcollations retorna todas as collations possíveis de serem usadas, mas não retorna a collation utilizada por um banco de dados específico.

F – O objeto INFORMATION_SCHEMA.DATABASES não existe.

Questão 020
A relação abaixo lista alguns dos passos envolvidos na criação de uma tabela particionada.

1.
Criação do esquema de particionamento

2.
Criação da tabela

3.
Criação dos arquivos adicionais de dados

4.
Criação dos FILEGROUPs

5.
Criação da função de particionamento

Qual das sequências a seguir pode ser utilizada para criar uma tabela particionada ?

A.
1, 5, 4, 3, 2

B.
4, 3, 5, 1, 2

C.
3, 4, 5, 1, 2

D.
3, 4, 1, 5, 2

E.
5, 4, 2, 1, 3

Resposta Correta: B

O primeiro passo para trabalhar com o particionamento de tabelas é a criação de uma função de particionamento (item 5). A função de particionamento determina a quantidade de partições e os ranges de valores para cada partição. O segundo passo é a criação de um esquema de particionamento (item 1). Esse esquema define onde fisicamente deverão ficar as partições. O esquema de particionamento referencia a função de particionamento para identificar quantas partições serão criadas e pode utilizar um ou mais FILEGROUPs para armazená-las. Normalmente a utilização de mais de um FILEGROUP para tabelas particionadas é uma boa prática em termos de desempenho. Se os arquivos de cada FILEGROUP residirem em discos separados é possível a leitura de dados de diferentes partições em paralelo. O passo seguinte é a criação da tabela (item 2) dentro do esquema de particionamento referenciando um das colunas da tabela para servir de critério de particionamento para que os dados sejam mapeados para as partições corretas.

O uso do particionamento não obriga a utilização de diferentes FILEGROUPs embora seja mais comum utilizá-lo dessa forma. Toda vez que um banco de dados é criado, o FILEGROUP PRIMARY fica disponível com um único arquivo de dados normalmente com a extensão MDF. Para a criação de FILEGROUPs adicionais é necessário sempre criar o FILEGROUP primeiro (item 4) para posteriormente adicionar arquivos a esse FILEGROUP (item 3). Não há ordem de precedência entre a criação de novos FILEGROUPs e a função de particionamento, mas é preciso que os FILEGROUPs estejam criados para que o esquema de particionamento possa utilizá-los. São corretas por tanto as sequências 4, 3, 5, 1, 2 e 5, 4, 3, 1, 2. Como apenas a primeira está presente, a resposta certa é B.

Respostas Incorretas: A, C, D, E

A – O esquema de particionamento não pode ser criado sem que exista uma função de particionamento para utilizá-lo.

C, D – Não é possível criar arquivos adicionais de dados sem que exista um FILEGROUP para associá-los. Os arquivos podem ser criados e adicionados ao FILEGROUP PRIMARY, mas não haveria como efetuar a troca de FILEGROUP posteriormente.

E – O esquema de particionamento deve ser informado antes da criação da tabela para que ela seja criada aproveitando-se o esquema e possa ser particionada.

Questão 021
Você é um implementador de banco de dados e está desenvolvendo um função de particionamento com o seguinte código:

CREATE PARTITION FUNCTION pf_Data (DATETIME2)
AS RANGE LEFT FOR VALUES (’20080101′,’20090101′,’20100101′);

Os valores 01/01/2008 e 01/01/2009 00:30 ficarão respectivamente em quais partições ?

A.
1 e 2

B.
2 e 3

C.
1 e 3

D.
Ambos ficarão na partição 2

Resposta Correta: C

Explicação: A função de particionamento utiliza valores para determinar os intervalos das partições. Quando o parâmetro LEFT é utilizado, significa que o valor será incluído na partição à esquerda da mesma forma que quando o parâmetro RIGHT é utilizada, significa que o valor será incluído na partição à direita. A tabela abaixo mostra como se comportam ambas implementações:

Partição
LEFT
RIGHT

1
<= 01/01/2008
< 01/01/2008

2
> 01/01/2008 e <= 01/01/2009
>= 01/01/2008 e < 01/01/2009

3
> 01/01/2009 e <= 01/01/2010
>= 01/01/2009 e < 01/01/2010

4
01/01/2010
01/01/2010

Na utilização do RANGEs com o uso do LEFT, o valor 01/01/2008 ficará na partição 1 e o valor 01/01/2009 00:30 ficará na partição 3. Como 01/01/2009 00:30 é um valor superior a 01/01/2009, ele não pode ficar na partição 2.

Respostas Incorretas: A, B, D

A – O uso da parâmetro LEFT incluirá o valor 01/01/2008 na partição 1 e colocará na partição 2 todos os valores maiores que 01/01/2008 e menores ou iguais a 01/01/2009. Como 01/01/2009 00:30 é superior a 01/01/2009, esse valor ficará na partição 3. Embora 01/01/2009 e 01/01/2009 00:30 sejam valores que representam o mesmo dia, o tipo de dados DATETIME2 fará diferenciação por conta das frações de segundo.

B – Analisando a tabela com as partições possíveis nas implementações LEFT e RIGHT, se fosse utilizado o parâmetro RIGHT, essa alternativa estaria correta, porém o parâmetro utilizado foi o LEFT.

D – Nenhuma das implementações possibilitará que esses valores fiquem na mesma partição.

Sobre Julio Vaz

I'm a results-driven IT professional on consulting for integration projects with extensive experience in the engineering, administration and support. Direct experience with customer relationships, complex problem troubleshooting, implementation, optimization, technology advisor and training deliveries. Always interested in professional growth as well as high-quality service delivery. Specialties: Office 365. Windows Intune. Windows Azure. Microsoft Windows Server and Active Directory Microsoft Exchange Server 2000/2003/2007/2010, 2013 Windows Virtualization: Hyper-V Windows server 2008, 2008 R2, 2012, 2012 R2. Microsoft Isa Server 2000, Isa Server 2004, Isa Server 2006. Microsoft Forefront TMG 2010. Microsoft Project Server 2007/2010, 2013 Microsoft SharePoint 2007/2010, 2013 Documentation of the computing environment and services. Elaboration of technical procedures. Elaboration of proposals and projects. Management and training of support staff. Implementation and maintenance of security and backup policies. Implementation, administration and migration from Microsoft . Windows NT, Windows 2000 Server, Windows Server 2003 R2, Windows Server 2008 R2, Windows Server 2012 R2 Implementation and migration from Microsoft Office Communications Server 2007 Implementation and migration from Microsoft Lync Server 2010, 2013. Implementation and migration from Microsoft Exchange Server 2000, 2003 and 2007, 2010, 2013. Implementation and migration from Microsoft Isa Server 2000, 2004 and 2006, Forefront TMG Implementation Microsoft System Center 2012 R2 - SCCM, SCOM, DPM. Migration of servers and domains
Esse post foi publicado em Microsoft SQL Server 2008. Bookmark o link permanente.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s