none
Problem bei der Erstellung eines SSIS-Packages RRS feed

  • Frage

  • Hallo und Guten Morgen,

    ich versuche gerade ein SSIS-Paket zu erstellen, welches eine XML einliest und in eine Text-Datei schreibt. Meine Quell-XML ist hierbei wie folgt:

    <?xml version="1.0" encoding="utf-16"?>
    <DataSet>
      <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
          <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
              <xs:element name="ROW">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="COLUMN" type="xs:short" minOccurs="0" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:choice>
          </xs:complexType>
        </xs:element>
      </xs:schema>
      <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
        <NewDataSet>
          <ROW diffgr:id="ROW1" msdata:rowOrder="0">
            <COLUMN>1</COLUMN>
          </ROW>
    	  <ROW diffgr:id="ROW2" msdata:rowOrder="1">
            <COLUMN>2</COLUMN>
          </ROW>
        </NewDataSet>
      </diffgr:diffgram>
    </DataSet>

    starte ich dieses SSIS-Paket nun kommt folgendes:

    der Flow läuft durch, es werden jedoch keine Daten gelesen oder ausgegeben.

    Was läuft hier falsch?

    Freitag, 14. Februar 2014 09:23

Alle Antworten

  • Achso. Wenn ich die Quelle XML umbaue und eine separate XSD verwende

    data.xml

    <?xml version="1.0" encoding="utf-8"?>
    	
    	<NewDataSet>
          <ROW >
            <COLUMN>1</COLUMN>
          </ROW>
    	  <ROW >
            <COLUMN>2</COLUMN>
          </ROW>
        </NewDataSet>
    

    schema.xsd

    <?xml version="1.0"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
      <xs:element name="NewDataSet">
        <xs:complexType>
          <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="ROW">
              <xs:complexType>
                <xs:sequence>
                  <xs:element minOccurs="0" name="COLUMN" type="xs:string" />
                  </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>

    kommt ein sauberes Ergebnis


    Freitag, 14. Februar 2014 09:31
  • Man kann auch XML mit Inline XSD verwenden, nur wenn ich mir die ursprüngliche Datei z.B. in Visual Studio ansehe, dann ist der Aufbau nicht korrekt, was dann in einem leeren Ergebnis endet.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 14. Februar 2014 09:49
  • Hallo Olaf,

    danke für den Hinweis, wie wäre denn der korrekte Aufbau?

    Freitag, 14. Februar 2014 10:31
  • Wie ich Deinem anderen Thread mit gleichem Thema/Frage Issue with creation of SSIS package - reading from XML entnehme, hast Du auch Visual Studio zur Verfügung, das "erzählt" Dir per IntelliSense, wie der Datenteil korrekt aufgebaut wird; die erneute Definition der Namesspaces ist z.B. nicht nötig, denn das erfolgt ja schon im Inline XSD:


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 14. Februar 2014 11:26
  • Hallo Olaf,

    sorry, ich blick es immer noch nicht, bin wahrscheinlich schon zum Teil im Wochenende. Wenn ich die xml wie folgt aufbaue:

    <?xml version="1.0" encoding="utf-16"?>
    <DataSet>
    	<xs:schema id="NewDataSet" xmlns=""
    			   xmlns:xs="http://www.w3.org/2001/XMLSchema"
    			   xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
    			   xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
    		<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    			<xs:complexType>
    				<xs:choice minOccurs="0" maxOccurs="unbounded">
    					<xs:element name="ROW">
    						<xs:complexType>
    							<xs:sequence>
    								<xs:element name="COLUMN" type="xs:string" minOccurs="0" />
    							</xs:sequence>
    						</xs:complexType>
    					</xs:element>
    				</xs:choice>
    			</xs:complexType>
    		</xs:element>
    	</xs:schema>
    	<diffgr:diffgram
    	  xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
    	  xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
    	<NewDataSet>
    		<ROW diffgr:id="ROW10" msdata:rowOrder="10">
    			<COLUMN>VALUE</COLUMN>
    		</ROW>
    	</NewDataSet>
    	</diffgr:diffgram>
    </DataSet>

    kommen 0 records.

    Wenn ich die diffgr-Deklaration auskommentiere

    <?xml version="1.0" encoding="utf-16"?>
    <DataSet>
    	<xs:schema id="NewDataSet" xmlns=""
    			   xmlns:xs="http://www.w3.org/2001/XMLSchema"
    			   xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
    			   xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
    		<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    			<xs:complexType>
    				<xs:choice minOccurs="0" maxOccurs="unbounded">
    					<xs:element name="ROW">
    						<xs:complexType>
    							<xs:sequence>
    								<xs:element name="COLUMN" type="xs:string" minOccurs="0" />
    							</xs:sequence>
    						</xs:complexType>
    					</xs:element>
    				</xs:choice>
    			</xs:complexType>
    		</xs:element>
    	</xs:schema>
    	<!--
    	<diffgr:diffgram
    	  xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
    	  xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
    	  -->
    	<NewDataSet>
    		<ROW diffgr:id="ROW10" msdata:rowOrder="10">
    			<COLUMN>VALUE</COLUMN>
    		</ROW>
    	</NewDataSet>
    	<!--
    	</diffgr:diffgram>
    	-->
    </DataSet>

    kommt dieser Fehler 

    Freitag, 14. Februar 2014 14:00
  • Wie schon gesagt, lass im Datenbereich die ganzen Namespaces weg, die sind doch bereits im Inline XSD Definiert.

    Eigentlich musst Du nur die 2 separaten Dateien aus Deinem zweiten Post zusammenführen:

    <?xml version="1.0" encoding="utf-16"?>
    <DataSet>
    	<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    		<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    			<xs:complexType>
    				<xs:choice minOccurs="0" maxOccurs="unbounded">
    					<xs:element name="ROW">
    						<xs:complexType>
    							<xs:sequence>
    								<xs:element name="COLUMN" type="xs:short" minOccurs="0" />
    							</xs:sequence>
    						</xs:complexType>
    					</xs:element>
    				</xs:choice>
    			</xs:complexType>
    		</xs:element>
    	</xs:schema>
    	<NewDataSet>
    		<ROW>
    			<COLUMN>1</COLUMN>
    		</ROW>
    		<ROW >
    			<COLUMN>2</COLUMN>
    		</ROW>
    	</NewDataSet>
    </DataSet>


    Olaf Helper

    [ Blog] [ Xing] [ MVP]


    Freitag, 14. Februar 2014 14:21
  • Guten Morgen,

    in der Tat, so klappt es. Aber: Die XML ist das Ergebnis einer Web Service-Abfrage, also irgendwie muss doch das SSIS-Paket damit klar kommen können. Und auch wenn ich obige XML verwende, kommt zwar kein Fehler, aber auch keine Datensätze...

    Montag, 17. Februar 2014 07:54