Kanoniczna formularzy i ograniczenia wzorca
Aspekt deseń XSD umożliwia ograniczenie miejsca leksykalne typów prostych.Kiedy ograniczeń deseń jest typu, dla którego jest więcej niż jeden możliwe przedstawienie leksykalne, niektóre wartości może spowodować nieoczekiwane zachowanie podczas sprawdzania poprawności.
To zachowanie występuje, ponieważ leksykalne reprezentacje tych wartości nie są przechowywane w bazie danych.Dlatego wartości są konwertowane na ich kanoniczny oświadczenia po zaszeregowani wyjściowego.Jeśli dokument zawiera wartość, w formie kanonicznej, których nie spełnia ograniczeń wzorzec dla swojego typu, dokument został odrzucony, jeśli użytkownik próbuje ponownie wstawić.
Aby temu zapobiec, SQL Server odrzuca każdy dokument XML zawiera wartości, które nie otrzymuje ponownie, z powodu przekroczenia ograniczeń deseń przez ich kanoniczny formularzy.Na przykład wartość "33.000" nie sprawdzania poprawności typu pochodzące z xs:decimal z ograniczeniem deseń z "33\.0+".Chociaż "33.000" jest zgodny z tego wzorca, w formie kanonicznej "33", nie.
Dlatego należy zachować ostrożność podczas stosowania faset wzorzec do typy pochodzące z następujących typów pierwotnych: boolean, decimal, float, double, dateTime, time, date, hexBinary, and base64Binary.SQL Server issues a warning when you add any such components to a schema collection.
Niedokładny serializacji wartości zmiennoprzecinkowych ma podobny problem.Z powodu algorytm szeregowania zmiennoprzecinkowych, używany przez SQL Server, jest możliwe wartości podobne do udostępniania tego samego formularza kanonicznej.Wartość zmiennoprzecinkowa jest seryjny, a następnie ponownie wstawić, jego wartość może zmienić nieco.W rzadkich przypadkach może to spowodować wartość narusza żadnego z następujących faset po jego typu: Wyliczanie, minInclusive, minExclusive, maxInclusive, lub maxExclusive.Aby temu zapobiec, SQL Server odrzuca wszelkie wartości typy pochodzące z xs:float lub xs:double , nie może być serializowany i ponownie wstawić.
Zobacz także