msdn31_capa.jpg

Clique aqui para ler todos os artigos desta edição

 

SQL Server 2005 - Suporte à XML, manipulação de exceções e Triggers DDL

 

SQL Server 2005 incluiu diversas melhorias importantes na linguagem Transact-SQL (T-SQL). Uma das características adicionadas é um novo tipo de trigger que é disparado quando instruções Data Definition Language (DDL) são executadas, como Create Table, Alter Table etc. Triggers desse tipo são úteis para acompanhar ou manter seguras a criação e a modificação de objetos do banco de dados ou de mudanças no servidor.

Outra característica envolve a manipulação de exceções, que teve um grande avanço com a inclusão dos blocos Try/Catch. Outro conjunto de novas características diz respeito ao novo tipo de dados XML, que representa um enorme passo à frente no gerenciamento de dados XML em aplicações corporativas que interagem com o SQL Server.

Agora os documentos ou os fragmentos XML podem ser armazenados em uma coluna XML vinculada a um schema e consultada utilizando a sintaxe XQuery. Neste artigo, responderemos a três perguntas interessantes que os leitores nos enviaram a respeito desses tópicos.

Quais são as vantagens ao se utilizar colunas XML tipadas e não tipadas?

Colunas XML não tipadas armazenam um documento ou um fragmento XML bem-formado, enquanto que colunas XML tipadas podem ser vinculadas a um XML schema. O XML não tipado é útil quando não temos certeza quanto ao schema que o XML seguirá.

Por exemplo, se formos consumir algum XML de uma outra aplicação, porém não conseguimos determinam qual o XML schema que os dados seguem, colunas XML não tipadas são mais adequadas.

Porém, as vezes não conseguimos evitar XML não tipado. A criação de uma coluna XML não tipada é extremamente simples, conforme o código a seguir:

 

CREATE TABLE Foo(FooID INT, someXml XML)

 

Uma outra conseqüência da não vinculação de um schema a uma coluna XML, é que o SQL Server 2005 armazena XML não tipado como uma string. Isso é melhor ou pior? Na verdade, ambos. Armazenar o XML como uma string proporciona maior flexibilidade comparado ao armazenamento do fragmento ou do documento XML.

Por outro lado, armazenar o XML como uma string, significa que os dados XML podem não ser nem eficientemente armazenados e pesquisados quando comparado a XML tipado. O SQL Server não conhece nem o conteúdo do XML e nem a sua estrutura hierárquica ou mesmo os seus nodes.

Entretanto, devemos ter em mente que mesmo sendo colunas XML não tipadas, poderão adotar qualquer formato desejado. Tanto as colunas XML não tipadas quanto as tipadas ainda aceitam somente XML bem-formado.

Colunas XML tipadas são ideais quando desejarmos armazenar um documento XML cujo schema for conhecido. Um schema pode definir os elementos, atributos, tipo de dados, campos requeridos e a estrutura hierárquica geral dos dados.

Sendo conhecida essa informação detalhada sobre os dados das colunas XML, os mesmos são armazenados internamente pelo SQL Server 2005 de forma mais eficiente. Se tentarmos armazenar dados XML que não combinam com o schema, o SQL Server não o permitirá

A criação de uma coluna XML tipada é simples, devemos adicionar o nome do schema entre parênteses, como no seguinte código:

 

CREATE TABLE Foo(FooID INT, someXml XML(

  CONTENT FooSchema))

 

O código indica que a coluna someXml deve aderir ao schema chamado FooSchema. Podemos especificar que o XML deve ser um documento ou que pode conter um fragmento incluindo a palavra-chave apropriada: Document ou Content, respectivamente. Se omitido, o padrão é Content.

Podemos adicionar uma coleção de schemas a um banco de dados utilizando o comando T-SQL, como segue:

 

CREATE XML SCHEMA COLLECTION [

  FooSchema] AS N 'coloque seu schema aqui'

 

Podemos utilizar também o SQL Server Management Studio (SSMS) para criar um template de schema. Para isso, acesse o menu View>Template Explorer, navegue até o nó XML Schema Collection e dê um duplo clique em Create XML Schema para abrir um template que representa a orientação inicial da sintaxe de criação do XML Schema Collection (Figura 1).

 

 

image002.jpg ...

Quer ler esse conteúdo completo? Tenha acesso completo