jaki byłby najprostszy sposób na zmianę każdej kolumny nvarchar w bazie danych na varchar?Jak zmienić każdą kolumnę nvarchar na varchar?
Osobiście wolałbym nvarchar, ale łuk danych określa, że varchar musi być użyty.
jaki byłby najprostszy sposób na zmianę każdej kolumny nvarchar w bazie danych na varchar?Jak zmienić każdą kolumnę nvarchar na varchar?
Osobiście wolałbym nvarchar, ale łuk danych określa, że varchar musi być użyty.
Tutaj możesz zacząć:
Select 'Alter Table [' + TABLE_SCHEMA + '].[' + TABLE_NAME + '] Alter Column [' + COLUMN_NAME + '] VarChar(' + CAST(CHARACTER_MAXIMUM_LENGTH As VARCHAR) + ')'
From INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = 'NVARCHAR'
To wygeneruje wszystkie potrzebne ALTER dla Ciebie (wycinanie, wklejanie, uruchamianie).
Należy pamiętać, że nie uwzględnia to żadnych ograniczeń.
Zapytaj łuk danych, aby to zrobić?
lub
Generowanie skryptu wszystkich obiektów w systemie, a następnie zmienić na nvarchar, a następnie utworzyć nową bazę danych i zaimportować dane do niego ze starego.
lub
Napisz zmieniać skrypty zaktualizować istniejącą bazę danych.
(. To może być najlepszym rozwiązaniem, jeśli jest to baza produkcyjna, czy baza danych klienta)
wysyłającego "zapytaj dane arch to zrobić". –
Nie zapomnij najpierw sprawdzić, czy masz jakieś dane, które nie zostaną przekształcone w varchar. Zgadzam się, jeśli architekt danych tego chce, to do niego należy napisanie skryptów, aby to zrobić. – HLGEM
Aby obsłużyć max i wyklucza niggly sysdiagrams:
SELECT
'
ALTER TABLE [' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']
ALTER COLUMN [' + COLUMN_NAME + ']
VARCHAR(' +
(CASE WHEN CHARACTER_MAXIMUM_LENGTH = -1
THEN 'MAX'
ELSE CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR)
END)
+ ')
'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = 'NVARCHAR' AND TABLE_NAME <> 'SYSDIAGRAMS'
+1 doskonały. Mam to samo rozwiązanie ... ale z bardzo brzydkim i skomplikowanym zapytaniem ... – Jonathan
+1 Niesamowita technika :-) –
@ Jonathan Jak używać kodu w tej odpowiedzi, aby "wygenerować wszystkie potrzebne instrukcje zmian" w SSQL Management Studio, dzięki któremu mogę "wycinać, wklejać, uruchamiać"? –