Dönüştürme deneyimimi eklemek istedim. text
Eski Linq2SQL kodunda birçok alanım vardı . Bu, text
dizinlerde bulunan sütunların ONLINE olarak yeniden oluşturulmasına izin vermekti .
İlk yıl için faydaları hakkında biliyorum, ama her zaman dönüştürme SQL Server tablo yeniden inşa etmek ve her şeyi kopyalamak, web siteleri aşağı getirmek ve kalbimi yükseltmek zorunda bazı korkunç uzun sorguları anlamına geleceğini varsaydı.
Ben de Linq2SQL sütun türünün bir tür doğrulama yapıyor olsaydı hatalara neden olabilir endişeliydi.
Yine de ALTER komutlarının ANINDA döndüğünü bildirmekten mutluluk duyuyoruz - bu yüzden kesinlikle sadece tablo meta verilerini değiştiriyorlar. <8000 karakter verisini tekrar tablo haline getirmek için bazı çevrimdışı çalışmalar olabilir, ancak ALTER komutu anında gerçekleşti.
Dönüşüm gerektiren tüm sütunları bulmak için aşağıdakileri çalıştırdım:
SELECT concat('ALTER TABLE dbo.[', table_name, '] ALTER COLUMN [', column_name, '] VARCHAR(MAX)'), table_name, column_name
FROM information_schema.columns where data_type = 'TEXT' order by table_name, column_name
SELECT concat('ALTER TABLE dbo.[', table_name, '] ALTER COLUMN [', column_name, '] NVARCHAR(MAX)'), table_name, column_name
FROM information_schema.columns where data_type = 'NTEXT' order by table_name, column_name
Bu, yeni seçtiğim ve yeni bir pencereye kopyaladığım güzel bir sorgu listesi verdi. Dediğim gibi - bunu çalıştırmak anında oldu.
Linq2SQL oldukça eskidir - tabloları sürüklediğiniz bir tasarımcı kullanır. Durum önce EF Kodu için daha karmaşık olabilir, ancak henüz bu konuyu ele almadım.