![]() |
MS SQL2000 - Kollation ändern?
Hai,
ich wollte heute die Daten von meinem SQL-7 Server auf den SQL-2000 übertragen. Dazu habe ich eine Sicherung der Datenbank gemacht und diese dann im SQL-2000 wiederhergestellt. So weit so gut. Wenn ich nun aber einen Datensatz anlegen möchte in dem ein Feld vom Typ Text ist bekomme ich immer die Fehlermeldung das eine Codepageübersetzung von 1252 in 850 fehlgeschlagen ist. Nun gut. Also habe ich mit
SQL-Code:
die Standardsortierung für diese Datenbank geändert.
ALTER DATABASE db_name COLLATE Latin1_General_CI_AS
Leider behält der böse Server aber in den Tabelle immer noch die alte Codepage (SQL_Latin1_General_CP850_CI_AS). Jetzt könnte ich natürlich von Hand alle Text-Datenfelder ändern. Aber bei weit über 100 Tabelle ist das echt hart. Kennt jemand eine andere Lösung für mein Problem? |
Re: MS SQL2000 - Kollation ändern?
War Unsinn - siehe weiter unten...
|
Re: MS SQL2000 - Kollation ändern?
Hai Leuselator,
ich sehe eben mit grauen das auch die ganzen VCHAR davon betroffen sind. Es muss doch möglich sein eine Datenbank von SQL 7 auf 2000 zu bekommen :shock: Sonst stirbt der neue SQL ganz schnell wieder :cry: |
Re: MS SQL2000 - Kollation ändern?
Ich glaube ich habe es.
Ich habe jetzt die Datenbank nicht "Wiederhergestellt" sondern über die Importfunktion vom alten Server geholt. In diesem Fall scheint er wohl die Standardsortierung der vorhandenen Datenbank zu nehmen. Morgenfrüh muss ich das dann noch alles testen. Aber intressieren würde mich trotzdem wie es geht. |
Re: MS SQL2000 - Kollation ändern?
Das aber :-)
SQL-Code:
Das im Query-Analyser abschicken, dann Ergebnis (alles)markieren und in neue Query einfügen - abschicken - fertig
select 'alter table '+so.name+' alter column '+sc.name+' '+st.name+' ('+convert(varchar,sc.length)+') COLLATE Latin1_General_CI_AS ;'
from Sysobjects so inner join syscolumns sc on sc.id = so.id inner join systypes st on st.xtype = sc.xtype where so.type = 'U' and sc.collation = 'Alter_Collation_Typ' Ändert alles in der aktiven (Analyser) DB, was die alte Collation hat auf die neue Wär doch gelacht :-) |
Re: MS SQL2000 - Kollation ändern?
:thuimb:
Ich danke Dir! Das kommt doch sofort in den Ordner mit der Aufschrift : "Top-Wichtige-Befehle" |
Re: MS SQL2000 - Kollation ändern?
na wer so lieb bittet, bekommt von mir sogar 'ne Stored Procedure :-)
SQL-Code:
CREATE PROCEDURE dbo.SP_AlterAllCollations
( @OLDCOLLATE varchar(255) ,@NEWCOLLATE varchar(255) ) AS BEGIN declare @Befehl nvarchar(4000) ,@err int declare BefehlsCursor CURSOR FOR select 'alter table '+so.name+' alter column '+sc.name+' '+st.name+' ('+convert(varchar,sc.length)+') COLLATE '+@NEWCOLLATE AS Befehl from Sysobjects so inner join syscolumns sc on sc.id = so.id inner join systypes st on st.xtype = sc.xtype where so.type = 'U' and sc.collation = @OLDCOLLATE FETCH NEXT FROM BefehlsCursor INTO @Befehl set @err = 0 BEGIN TRANSACTION WHILE @@FETCH_STATUS = 0 BEGIN exec(@Befehl) set @err = @err+@@Error FETCH NEXT FROM BefehlsCursor INTO @Befehl set @err = @err+@@Error END if @err <> 0 BEGIN ROLLBACK TRANSACTION RAISERROR('Irgendwas ist schief gegangen',16,-1) RETURN 50000 END COMMIT TRANSACTION RETURN 0 END |
Re: MS SQL2000 - Kollation ändern?
Hallo Ihr,
interessiert habe ich Euren Ansatz verfolgt. Genau das suche ich gerade. Leider kommen bei verschiedenen Feldern Fehlermeldungen nach dem Schema:
SQL-Code:
Soweit ich verstanden habe handelt es sich dabei um verletzte Constraints. Leider habe ich keine Ahnung, wie sich das alles unter den Vorraussetzungen automatisieren läßt.
Server: Msg 5074, Level 16, State 8, Line 1
The object 'pk_dtproperties' is dependent on column 'property'. Server: Msg 4922, Level 16, State 1, Line 1 ALTER TABLE ALTER COLUMN property failed because one or more objects access this column. Weiß jemand Rat? Viele Grüße radi5 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz