Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
A faceta do padrão XSD permite a restrição do espaço lexical dos tipos simples. Quando uma restrição de padrão é imposta a um tipo para o qual existem mais do que uma possível representação lexical, alguns valores podem causar um comportamento inesperado após validação.
Este comportamento ocorre porque as representações lexicais destes valores não estão armazenadas na base de dados. Assim, os valores são convertidos para as suas representações canónicas quando serializados como saída. Se um documento contiver um valor cuja forma canónica não cumpre a restrição do padrão para o seu tipo, o documento é rejeitado se um utilizador tentar reinseri-lo.
Para evitar isto, o SQL Server rejeita qualquer documento XML que contenha valores que não possam ser reinseridos, devido à violação das restrições de padrões pelas suas formas canónicas. Por exemplo, o valor "33.000" não se valida contra um tipo derivado de xs:decimal com uma restrição de padrão "33\.0+". Embora "33.000" cumpra este padrão, a forma canónica, "33", não cumpre.
Por isso, deve ter cuidado ao aplicar facetas de padrão a tipos derivados dos seguintes tipos primitivos: booleano, decimal, float, double, dateTime, time, time, date, hexBinary e base64Binary. O SQL Server emite um aviso quando adiciona qualquer componente deste tipo a uma coleção de esquemas.
A serialização imprecisa dos valores de ponto flutuante tem um problema semelhante. Devido ao algoritmo de serialização em ponto flutuante usado pelo SQL Server, é possível que valores semelhantes partilhem a mesma forma canónica. Quando um valor de vírgula flutuante é serializado e depois reinserido, o seu valor pode mudar ligeiramente. Em casos raros, isto pode resultar num valor que viola qualquer uma das seguintes facetas do seu tipo na reinserção: enumeration, minInclusive, minExclusive, maxInclusive ou maxExclusive. Para evitar isto, o SQL Server rejeita quaisquer valores de tipos derivados de xs:float ou xs:double que não possam ser serializados e reinseridos.