Хотел добавить свой опыт с конвертированием. У меня было много text
полей в древнем коде Linq2SQL. Это должно было позволить перестроитьtext
столбцы в индексах ONLINE .
Сначала я знал о преимуществах в течение многих лет, но всегда предполагал, что преобразование будет означать несколько страшных длинных запросов, когда SQL Server придется перестраивать таблицу и копировать все, разрушая мои веб-сайты и повышая мою сердечность.
Я также был обеспокоен тем, что Linq2SQL может вызвать ошибки, если он выполняет какую-то проверку типа столбца.
Рад сообщить, что команды ALTER вернулись мгновенно - поэтому они определенно только меняют метаданные таблицы. Может случиться, что в автономном режиме будет выполнено возвращение данных <8000 символов в таблицу, но команда ALTER была мгновенной.
Я запустил следующее, чтобы найти все столбцы, нуждающиеся в преобразовании:
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
Это дало мне хороший список запросов, которые я только что выбрал и скопировал в новое окно. Как я уже сказал - бегать это было мгновенно.
Linq2SQL довольно древний - он использует конструктор, на который вы перетаскиваете таблицы. Ситуация может быть более сложной для EF Code в первую очередь, но я еще не решил эту проблему.