# MS SQL-Server 2005 - XML in Datenbank speichern



## docere (19. Juni 2008)

Hi zusammen!

Ich hocke gerade an einem Testat, das ich heute abgeben muss. Leider bin ich nicht der hellste wenn es um Datenbanken geht... Nun sitze ich vor einem Problem und hege die Hoffnung, dass einer von euch Kennern mir weiterhelfen kann.
Nun mal zu den Details:

Aufgabe ist es, zwei gegeben xml Dateien in einer Datenbank (wir verwenden MS SQL-Server 2005) zu speichern. Die Tabellen mit den xml Dateien sollen Verweise auf die zugehörigen xsd erhalten.

Und so weit bin ich:

Zunächst habe ich das XML Schema in der Datenbank hinterlegt (laut Summary auch erfolgreich), hier kurz der Code:


```
USE testat
GO

IF EXISTS (SELECT * FROM sys.xml_schema_collections
      WHERE [name] = 'uni')
   DROP XML SCHEMA COLLECTION uni
GO

DECLARE @uniSchema XML
SET @uniSchema =
   (
      SELECT * FROM OPENROWSET
         (BULK 'D:\Studium\7. Semester\DBS 2\Aufgaben\Übungen\2._Testat_Dateien\Uni.xsd', SINGLE_CLOB)
            AS xmlData
   )
CREATE XML SCHEMA COLLECTION uni AS @uniSchema
GO
```

Nun habe ich eine Tabelle erzeugt mit dem Verweis auf das xml Schema:


```
USE testat
GO

IF OBJECT_ID ('Universitaet') IS NOT NULL
		DROP TABLE Universitaet;

CREATE TABLE Universitaet(
	Name varchar(30) primary key, Beschreibung xml (document uni)
)
```

Nun versuche ich die xml Datei in die Tabelle einzutragen:


```
USE testat
GO

INSERT INTO Universitaet values(
'Virtuelle Universität der Großen Denker',
	'<UniLeitung>
		<Rektor>Prof. Sokrates</Rektor>
		<Kanzler>Dr. Erhard</Kanzler>
	</UniLeitung>
	<Fakultäten>
		<Fakultät>
			<FakName>Theologie</FakName>
			<ProfessorIn PersNr="P2134">
				<Name>Augustinus</Name>
				<Rang>C3</Rang>
				<Raum>309</Raum>
				<Vorlesungen>
					<Vorlesung VorlNr="V5022">
						<Titel>Glaube und Wissen</Titel>
						<SWS>2</SWS>
					</Vorlesung>
				</Vorlesungen>
				<Assistenten>
<- ---------------------------------------------------------------------------------- ->
		</Student>
		<Student MatrNr="M29120">
			<Name>Theophrastos</Name>
			<Semester>2</Semester>
			<hört Vorlesungen="V5001 V5041 V5049" />
		</Student>
		<Student MatrNr="M29555">
			<Name>Feuerbach</Name>
			<Semester>2</Semester>
			<hört Vorlesungen="V5001 V5022" />
		</Student>
	</Studenten>
</Universität>'
)
```

Das Resultat: 


> Msg 8152, Level 16, State 14, Line 5
> Zeichenfolgen- oder Binärdaten würden abgeschnitten.
> Die Anweisung wurde beendet.



Und nun stehe ich leider ziemlich planlos da. Bei google und über die Boardsuche habe ich leider nichts gefunden, was mir weiterhelfen würde...
Ich bin für jeden Tipp von euch dankbar!

Danke schonmal & Grüße

Pat


----------



## docere (22. Juni 2008)

Danke für nichts. Tolles Forum...


----------



## mcpd (23. Dezember 2010)

Hallo,

das ist eine Fehlermeldung, die besagt das der Eintrag in die DB die Kapazität des Datentyps überschreitet.
D.h. Bsp. Du hast eine Spalte vom Typ "nvarchar(10)" Die 10 bedeutet, dass dieser Datentyp nur 10 Zeichen entgegen nehmen kann. Alles was über 10 hinausgeht wird einfach abgeschnitten. Man kann die Kapazität des Datentyps erhöhen, in dem man den Wert einfach erhöht. Möchte man den Maximalwert haben, schreibt man einfach "nvarchar(MAX)" Jetzt können 4000 Zeichen gespeichert werden.

Gruß
mcpd


----------

