I have an xml, for example:
<AP>
<value UserXML="<ADUsers><ADUser DisplayName = "User3 (rdserver\TEST\user3)" Username="TEST\user3" DomainID="43" UserSID="ad8b3d173afa97b49b98c57b182356b6d0066f8c" UserTypeCode="INTR" /></ADUsers>" SIDHash="ad8b3d173afa97b49b98c57b182356b6d0066f8c" Type="USER" DisplayName="User3 (rdserver\TEST\user3)" Username="TEST\user3" DomainID="43" UserSID="ad8b3d173afa97b49b98c57b182356b6d0066f8c" UserTypeCode="INTR" />
<value UserXML="<ADUsers><ADUser DisplayName = "User4 (rdserver\TEST\user4)" Username="TEST\user4" DomainID="43" UserSID="7a0600b592180dba051ec99f8b8b960515d3e05f" UserTypeCode="INTR" /></ADUsers>" SIDHash="7a0600b592180dba051ec99f8b8b960515d3e05f" Type="USER" DisplayName="User4 (rdserver\TEST\user4)" Username="TEST\user4" DomainID="43" UserSID="7a0600b592180dba051ec99f8b8b960515d3e05f" UserTypeCode="INTR" />
</AP>
I have an xml (ADUsers inside my main xml AP)
I want to insert the ADUsers xml into a column in my sql database:
here is my query:
...
DECLARE @InsertedAP AS TABLE (ID INT);
DECLARE @docHandle INT
EXEC sp_xml_preparedocument @docHandle OUTPUT, @AP_List
INSERT INTO
AssociationPoints
(APType,UserXML,SIDHash)
OUTPUT INSERTED.AssociationPointID INTO @InsertedAP
SELECT
AP.[Type],
CAST(AP.UserXML as XML),
AP.SIDHash
FROM
OPENXML(@docHandle, 'AP/value', 1)
WITH
([Type] CHAR(4), UserXML XML, SIDHash VARCHAR(50)) AP
IF @@ERROR <> 0
BEGIN
ROLLBACK
RETURN
END
...
but I get the error: Element-centric mapping must be used with OPENXML when one of the columns is of type XML.
why? how can I solve this issue? (The inner xml is sent encoded to the DB)
I attach script for example that can be run:
declare @AP_List XML
set @AP_List = '<AP><value UserXML="<ADUsers><ADUser DisplayName = "User3 (rdserver\TEST\user3)" Username="TEST\user3" DomainID="43" UserSID="ad8b3d173afa97b49b98c57b182356b6d0066f8c" UserTypeCode="INTR" /></ADUsers>" SIDHash="ad8b3d173afa97b49b98c57b182356b6d0066f8c" Type="USER" DisplayName="User3 (rdserver\TEST\user3)" Username="TEST\user3" DomainID="43" UserSID="ad8b3d173afa97b49b98c57b182356b6d0066f8c" UserTypeCode="INTR"></value><value UserXML="<ADUsers><ADUser DisplayName = "User4 (rdserver\TEST\user4)" Username="TEST\user4" DomainID="43" UserSID="7a0600b592180dba051ec99f8b8b960515d3e05f" UserTypeCode="INTR" /></ADUsers>" SIDHash="7a0600b592180dba051ec99f8b8b960515d3e05f" Type="USER" DisplayName="User4 (rdserver\TEST\user4)" Username="TEST\user4" DomainID="43" UserSID="7a0600b592180dba051ec99f8b8b960515d3e05f" UserTypeCode="INTR"></value></AP>'
DECLARE @docHandle INT
EXEC sp_xml_preparedocument @docHandle OUTPUT, @AP_List
SELECT
AP.[Type],
CAST(AP.UserXML as XML),
AP.SIDHash
FROM
OPENXML(@docHandle, 'AP/value', 1)
WITH
([Type] CHAR(4), UserXML XML, SIDHash VARCHAR(50)) AP