Ntext übertragen (SQL Server)

Hallo,

ich muss Daten von einer DB in eine andere übertragen. Das funktioniert prinzipiell auch super mit einem TSQL-Script, nur beim Datentyp text bzw. ntext hab ich ein Problem. Variablen dürfen anscheinend nicht den Typ text oder ntext haben, aber ich weiß nicht, wie ich diese langen Werte sonst rüber schaufeln kann.

Hier mein Bsp. - sowohl in der Quell-DB als auch in der Ziel-DB ist die betroffene Spalte vom Typ ntext:

_declare @id integer,
@text text,
@fetch1 integer

declare cur_tabak cursor for
select MOB_Mobilien.MobID,tabak.dbo.inventarliste.text
from MOB_Mobilien inner join ID_Nummern on ID_Nummern.MobID = MOB_Mobilien.MobID
inner join tabak.dbo.inventarliste on cast(tabak.dbo.inventarliste.[INV-NR] as nvarchar) = ID_Nummern.Nummer
where ID_Nummern.Institut = 34
order by MOB_Mobilien.MobID

open cur_tabak

fetch next from cur_tabak into @id,@text
set @fetch1 = @@fetch_status

while (@fetch1 -1)
begin
if (@fetch1 -2)
begin
update MOB_Mobilien
set Info = @text
where MobID = @id
end
fetch next from cur_tabak into @id,@text
set @fetch1 = @@fetch_status
end

close cur_tabak
deallocate cur_tabak_

Ich hab’s auch schon mit einem Update mit Subselect versucht, sodass ich die text-Variable gar nicht brauche, aber im Subselect wird anscheinend auch kein ntext akzeptiert.

Kann mir jemand von euch weiterhelfen? Ich find einfach keine Lösung, aber irgendwie muss es ja gehen…

Hallo,

wenn ich deinen Select richtig verstehe, versuchst Du einen Join über nicht-Schlüsselattribute. Deshalb können doppelte auftraten. Deine Prozedur nimmt einfach stur das letzte Element. Bei einem Update bekommst Du eine Fehlermeldung sobald Du versuchst mehr als ein Element zuzuordnen.

ntext lässt sich wirklich nicht als Variable deklarieren. Microsoft erwähnt dies extra in seiner Referenz - bietet aber keine Lösung an.

Was kannst Du machen:

Den großen Join auflösen und den Schlüssel der Tabelle mit den ntext-Werten merken (Cursor)
Dann ein einfaches Update. Das müsste klappen. Da Du dabei mur die Schlüsselwerte in Variable packen musst, sollte das ganze funktionieren.

Viele Grüße

Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]