如何在 XML SCHEMA 中使用 datetime2 类型?
Posted
技术标签:
【中文标题】如何在 XML SCHEMA 中使用 datetime2 类型?【英文标题】:How to use datetime2 type in XML SCHEMA? 【发布时间】:2019-10-10 14:14:38 【问题描述】:我正在尝试在集合和表中使用 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 中描述的类型,但不幸的是我不知道出了什么问题。
【问题讨论】:
什么版本的 SQL Server?你见过this thread吗? SQL Server 2014 和 2017。我会阅读这些线程(以前从未见过,因为正在使用 Google 搜索,但不确定命名空间的使用方式和内容,在示例中它们主要是 microsoft.com)。 【参考方案1】:Erland Sommarskog 已回复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>';
【讨论】:
以上是关于如何在 XML SCHEMA 中使用 datetime2 类型?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 MSXML 针对 XML Schema.xsd 验证我自己的 Schema XSD 文件?
如何使用 System.Xml.Schema 从 xs:choice 解析 xs:annotation