Wir haben kürzlich unsere Datenbank von unserem SQL Server 2005-Server auf unseren SQL Server 2008-Server verschoben. Alles lief gut, aber jetzt stellen wir fest, dass wir Kollationskonflikte bekommen. Der alte Server hatte eine andere Sortierung als der neue Server.Aktualisierung Sortierung aller Felder in der Datenbank im laufenden Betrieb
Nun sind unsere Tabellen, die vor dem Verschieben erstellt wurden, eine Kollatierung, und die danach erstellten Tabellen sind eine weitere Kollatierung.
Gibt es eine Möglichkeit, die Tabellen/Spalten mit der alten Kollatierung auf die neue Kollatierung zu aktualisieren?
Ich verstehe, die Einstellung der Standard-Datenbank/Server-Sortierung ändert keine vorhandenen Tabellen (link). Ich möchte wirklich nicht die Datenbank neu erstellen, wenn ich nicht muss.
Jede Hilfe wirklich geschätzt.
UPDATE
Vielen Dank für Ihre Hilfe Jungs, bekam es schließlich arbeiten.
Für die Zukunft, hier ist meine letzte Skript:
SELECT 'ALTER TABLE [' + SYSOBJECTS.Name + '] ALTER COLUMN [' + SYSCOLUMNS.Name + '] ' +
SYSTYPES.name +
CASE systypes.NAME
WHEN 'text' THEN ' '
ELSE
'(' + RTRIM(CASE SYSCOLUMNS.length
WHEN -1 THEN 'MAX'
ELSE CONVERT(CHAR,SYSCOLUMNS.length)
END) + ') '
END
+ ' ' + ' COLLATE Latin1_General_CI_AS ' + CASE ISNULLABLE WHEN 0 THEN 'NOT NULL' ELSE 'NULL' END
FROM SYSCOLUMNS , SYSOBJECTS , SYSTYPES
WHERE SYSCOLUMNS.ID = SYSOBJECTS.ID
AND SYSOBJECTS.TYPE = 'U'
AND SYSTYPES.Xtype = SYSCOLUMNS.xtype
AND SYSCOLUMNS.COLLATION IS NOT NULL
AND NOT (sysobjects.NAME LIKE 'sys%')
AND NOT (SYSTYPES.name LIKE 'sys%')
GO
Hier ist die site, die das Skript enthalten ich es basiert auf. Ich musste zwicken, damit es richtig funktioniert.
Russell, Sie sollten Ihre Lösung eine Antwort geben! –
Danke Philipp, es steht sowieso oben auf der Frage, und OMG Ponies haben mir geholfen, dorthin zu kommen. :) – Russell