Frage

Ich habe gerade herausgefunden, dass ich da auf einem anderen Server meine DB erstellt, die eine andere Sortierung hatten, dann auf einen neuen Server mit neuen Sortierungs immigrierte, jetzt halte ich auf Schwierigkeiten haben, und ich beschloß, alle die Werte ändern die alte Sortierung.

Also habe ich versucht, diese Abfrage auszuführen:

sp_configure "Allow Updates", 1
GO
RECONFIGURE WITH OVERRIDE
GO

UPDATE sys.columns SET collation_name = 
    'SQL_Latin1_General_CP1_CI_AS' WHERE collation_name = 'Hebrew_CI_AS'
GO

sp_configure "Allow Updates", 0
GO
RECONFIGURE
GO

Aber hier ist die Ausgabe der Abfrage:

Configuration option 'allow updates' changed from 0 to 1. 
    Run the RECONFIGURE statement to install.

Msg 259, Level 16, State 1, Line 2
Ad hoc updates to system catalogs are not allowed.

Configuration option 'allow updates' changed from 1 to 0. 
    Run the RECONFIGURE statement to install.

UPDATE
Nach den Antworten unten, ich suche nur für einen automatisierten Weg, um die Aktion auszuführen.

War es hilfreich?

Lösung 3

Diese Abfrage ist generiert ein Skript, das alle Hebrew_CI_AS sortierte Spalten Latin1_General_CI_AS Sortierungs tauschen werden:

DECLARE @Script varchar(MAX)
SET @Script = CAST((
SELECT 'ALTER TABLE [' + Tables.Name + '] ALTER COLUMN [' + 
  [Columns].Name + '] ' + Types.Name + '(' + 
  CAST([Columns].max_length AS varchar) + ') COLLATE Latin1_General_CI_AS ' + 
  CASE WHEN [Columns].is_nullable = 0 THEN 'NOT ' ELSE '' END + 'NULL '
FROM sys.tables Tables INNER JOIN sys.all_columns [Columns]
  ON [Tables].[object_id] = [Columns].[object_id]
  INNER JOIN sys.types Types ON [Columns].system_type_id = Types.system_type_id
WHERE [Columns].collation_name = 'Hebrew_CI_AS'
FOR XML PATH('')
) AS varchar(MAX))

PRINT @Script
EXEC(@Script)

Hinweis: Für Spalten, die indizierte / erzwungener, müssen Sie manuell bearbeiten müssen, aber das ist auch etwas, da bei der Ausführung der obigen Abfrage des Fehler-Ergebnisses (für eine Einschränkung etc.) enthält die Namenstabelle & Spalte, Sie müssen zugeben, es ist immer noch besser als do alles manuell.

Andere Tipps

Sie müssen ALTER TABLE-Befehle auszugeben, um die Sortierungen der spezifischen Spalten zu ändern.

z.

ALTER TABLE YourTable 
ALTER COLUMN ColA VARCHAR(10) COLLATE Latin1_General_CI_AS NOT NULL

Sehen Sie sich diese MSDN Referenz

Sie können alter table verwenden, um die Sortierung für jede Spalte zu ändern.

Die einzige Möglichkeit, eine Datenbank Sortierung zu ändern ist, um die Datenbank zu löschen und neu erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top