Как использовать тип datetime2 в XML SCHEMA? - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь использовать типы SQL Server XML SCHEMA, такие как datetime2, в коллекциях и таблицах

CREATE XML SCHEMA COLLECTION [XmlValuesSchemaCollection_datetime2] AS 
'<?xml version="1.0"?>
<xsd:schema 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sql2008/SqlTypes.xsd"
    attributeFormDefault="unqualified" elementFormDefault="qualified">

    <xsd:element name="datetime2" type="xsd:datetime2"/>
</xsd:schema>';
GO

CREATE TABLE XmlValuesTable_datetime2 (
    [uid] [int] IDENTITY PRIMARY KEY,
    v XML(XmlValuesSchemaCollection_datetime2) NOT NULL
);
GO

INSERT INTO XmlValuesTable_datetime2 (v)  
VALUES (N'<datetime2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2014-06-18 06:39:05.190</datetime2>');
GO

, но у меня ошибка Reference to an undefined name 'datetime2' within namespace 'http://www.w3.org/2001/XMLSchema'. То же самое с type="xsd:datetime2" - ошибка

Reference to an undefined name 'datetime2' within namespace 'http://schemas.microsoft.com/sqlserver/2004/sqltypes/sql2008/SqlTypes.xsd'

Предполагается, что она будет работать каким-то образом, типы описаны в https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/bb677236(v=sql.105)?redirectedfrom=MSDN, но, к сожалению, я понятия не имею, что не так.

1 Ответ

0 голосов
/ 11 октября 2019

Эрланд Соммарског ответил на MSDN Решение

CREATE XML SCHEMA COLLECTION [XmlValuesSchemaCollection_datetime2] AS 
'<?xml version="1.0"?>
<xsd:schema    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes"      attributeFormDefault="unqualified" elementFormDefault="qualified">
   <xsd:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sql2008/sqltypes.xsd"/>

   <xsd:element name="datetime2" type="sqltypes:datetime2"/>
</xsd:schema>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...