Spis treści:

Kategoria:SQL Server


Zamiana wszystkich kolumn typu ntext na nvarchar(MAX)

Dlaczego trzeba zamieniać?

Jak już napisałem wcześniej, typy text i ntext nie powinny być używane. Cały wpis można przeczytać pod tym adresem: Porównanie ntext i nvarchar(max). Obiecałem też, że dodam skrypt, który zamienia wszystkie kolumny typu ntext na kolumny nvarchar(MAX) z zachowaniem zawartości kolumn. Mam nadzieję, że komuś się przyda. Nie będę go szczegółowo opisywał. Zagadnienia teoretyczne opisane są we wskazanym artykule.

Skrypt właściwy


DECLARE NTextColumns CURSOR FOR
SELECT T.[name], C.[name]
FROM sys.tablesJOIN sys.columnsON T.[object_id]=C.[object_id]
JOIN sys.types Tp ON C.user_type_id=Tp.user_type_id
WHERE Tp.[name]='ntext'

DECLARE @table nvarchar(128)
DECLARE @column nvarchar(128)
DECLARE @sql nvarchar(1024)

OPEN NTextColumns
FETCH NEXT FROM NTextColumns INTO @table, @column
WHILE @@FETCH_STATUS=0
BEGIN
SET @sql = 'ALTER TABLE '+@table+' ALTER COLUMN '+@column+' NVARCHAR(MAX)'
EXEC sp_executesql @sql
FETCH NEXT FROM NTextColumns INTO @table, @column
END
CLOSE NTextColumns
DEALLOCATE NTextColumns

Kategoria:SQL Server

, 2013-12-20

Brak komentarzy - bądź pierwszy

Dodaj komentarz
Wyślij
Ostatnie komentarze
To samo pytanie co wyżej. Mam za zadanie dodać kolumnę do istniejącej tabeli łącząc obie inne kolumny ze sobą, ale nie mam pojęcia jak za to się zabrać
działa :) tylko była literówka :)
Podziękował. Trochę późno, po 8 latach, ale dzięki za testy (rozumiem że dla SQL2012 robione). Tak się właśnie zastanawiałem ile złego czynię stosując czasem __(max).
Super robota, korzystając z innych internetowych kalkulatorow po prostu wątpiłem w ich prawdomówność, w końcu trafiłem tutaj i wynik w końcu jest wiarygodny. 40 km w 2 h 810 kcal, ciekawostka: na fitatu wyliczyło mi 5700 kcal 😊 najlepiej będzie chyba jak kupię zegarek sportowy.
Wielkie dzieki za solidne wyjasnienia tematu.