So Ändern Sie Alle Sql-Spalten von Einem Datentyp in einen Anderen
Ich habe eine Datenbank (Sql Server 2005
) wo gibt es Dutzende von tables
, von denen jeder eine Anzahl von columns
(durchschnittlich 10-20) mit Datentyp festgelegt nvarchar(max)
. Das ist absolut das töten von Leistung (einige dieser Spalten sind für joins
und einige Tische haben 100K+ Zeilen). Ich möchte alle diese Spalten werden varchar(250)
. Was wäre der beste Weg, dies zu automatisieren? (Ich könnte Management Studio
oder ich erstellen Sie ein Dienstprogramm ausführen, das durch eine ASP.net
website, die Zugriff auf die db, je nachdem was einfacher ist).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein funktionierendes script, das verwendet
INFORMATION_SCHEMA.COLUMNS
finden Sie alle*varchar(max)
Spalten und wandelt Sie invarchar(255)
:Dies ist nur über das verwenden von Cursorn, die ich jemals dulden, aber es ist gut. Im wesentlichen, es findet alle
*varchar(max)
baut, diealter
- Anweisung aus und führt Sie mitsp_executesql
.Genießen!
Können Sie leicht finden, Sie, mit:
So, jetzt nehmen Sie einfach die Ergebnisse Ihrer Abfrage, und führen Sie es.
Rob
Ich denke, der beste Weg, um diese Aufgabe zu erfüllen ist, um ein Skript zu generieren, die für die aktuelle Datenbank, und ersetzen nvarchar(max) mit varchar(250) auf die text-Datei, und erstellen Sie die neue Datenbank.
danach verwenden Sie die Import - /export-Dienstprogramme zur übertragung der Daten in die neue Datenbank.