powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Скрипт для изменения типа поля
7 сообщений из 7, страница 1 из 1
Скрипт для изменения типа поля
    #32057078
Fedalal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток.

Есть задача изменить во всех таблицах столбцы с типом varchar на nvarchar.
Причем делать это надо с помощью хранимой процедуры.

Может есть у кого пример такого скрипта?
...
Рейтинг: 0 / 0
Скрипт для изменения типа поля
    #32060302
Kilroy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать так:

Взять таблицу syscolumns и тупо проапдейдить 2 столбца
xtype и xusertype, записав в них значение 231(nvarchar)
вместо 137(varchar). ID таблиц можно взять в sysobjects
...
Рейтинг: 0 / 0
Скрипт для изменения типа поля
    #32060311
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот так делать не надо.....
...
Рейтинг: 0 / 0
Скрипт для изменения типа поля
    #32060313
Alexander_Chepack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Взять таблицу syscolumns и тупо проапдейдить  2  столбца 


Думаю, базе данных после этого полный кирдык наступит (это я вышеприведенном совете).

По-моему надо просканировать все таблицу syscolumns и для каждой упомянутой там колонки динамически создать команду "alter table alter column .." и выполнить эту команду через exec ().
...
Рейтинг: 0 / 0
Скрипт для изменения типа поля
    #32060316
Kilroy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С базой ничего не случится, а вот данные конечно надо
выгрузить, а потом загрузить.
...
Рейтинг: 0 / 0
Скрипт для изменения типа поля
    #32060337
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Kilroy...
согласен что база останется живой...
но...
1 ) поля varchar(10) и nvarchar(10) имеют разный размер...( 10 и 20 байт соответсвенно) так что выгрузка - загрузка не поможет..
2) вариант от Alexander_Chepack - правильный (не забывате только про атрибут принадлежности к системным - пользовательским таблицам)....
выбираем все пользовательские таблицы из sysobjects
вообщем вот запрос для всех пользовательских таблиц ...
Код: plaintext
1.
2.
3.
4.
SELECT     sysobjects.name AS tbl_name, sysobjects.id, syscolumns.name AS col_name, syscolumns.length
FROM         sysobjects INNER JOIN
                      syscolumns ON sysobjects.id = syscolumns.id INNER JOIN
                      systypes ON syscolumns.xtype = systypes.xtype
WHERE     (sysobjects.xtype = 'U') AND (systypes.name = N'varchar')
...
Рейтинг: 0 / 0
Скрипт для изменения типа поля
    #32060341
vap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Сделать копию БД
2. Выбрать все нужные столбцы в курсор
select * from syscolumns where type=XX
3. В цикле по курсору строить динамический запрос и его выполнять.
ALTER TABLE XXX ALTER COLUMN ...

хотя это не все, надо еще процедуры и их параметры подкорректировать
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Скрипт для изменения типа поля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]