Сопоставление обновления всех полей в базе данных на лету

80 символов являются смешным пределом в эти дни. Разделите свои строки кода, где это имеет смысл, не согласно любому пределу произвольного символа.

31
задан Community 23 May 2017 в 12:09
поделиться

3 ответа

Вы можете изменить параметры сортировки любых новых объектов, созданных в пользовательской базе данных, с помощью предложения COLLATE инструкции ALTER DATABASE . Этот оператор не изменяет сопоставление столбцов в любых существующих пользовательских таблицах. Их можно изменить с помощью предложения COLLATE в ALTER TABLE .

Ссылка: Установка и изменение параметров сортировки базы данных

Если столбцов слишком много, можно выполнить цикл SYS.COLUMNS, чтобы применить оператор ALTER TABLE.

6
ответ дан 27 November 2019 в 22:49
поделиться

Один из вариантов - использовать такую ​​программу, как Red Gate SQL Compare (я уверен, что есть и другие). С его помощью вы можете сгенерировать файлы сценариев для своей схемы с включенным сопоставлением (обязательно включите это в параметрах), затем выполните поиск / замену в файлах, обновляя его до нового сопоставления, а затем повторно сравните их с вашим фактическим база данных.

На этом этапе SQL Compare сможет применить эти изменения (или сохранить изменения в файле сценария, если хотите), и все ваши существующие столбцы будут исправлены.

Теоретически вы могли бы сделать все это пока все еще проходит пробный период, хотя я бы посоветовал это хороший инструмент, поскольку он упрощает многие задачи SQL!

2
ответ дан 27 November 2019 в 22:49
поделиться

На всякий случай, если кто-то смотрит на это, использует SQL Server 2008, мне пришлось внести пару изменений:

SELECT 'ALTER TABLE [' + sys.objects.name + '] ALTER COLUMN ['
+ sys.columns.name + '] ' + sys.types.name + 
    CASE sys.types.name
    WHEN 'text' THEN ' '
    ELSE
    '(' + RTRIM(CASE sys.columns.max_length
    WHEN -1 THEN 'MAX'
    ELSE CONVERT(CHAR,sys.columns.max_length)
    END) + ') ' 
    END

    + ' ' + ' COLLATE Latin1_General_BIN ' + CASE sys.columns.is_nullable WHEN 0 THEN 'NOT NULL' ELSE 'NULL' END
    FROM sys.columns , sys.objects , sys.types
    WHERE sys.columns.object_id = sys.objects.object_id
    AND sys.objects.TYPE = 'U'
    AND sys.types.system_type_id = sys.columns.system_type_id
    AND sys.columns.collation_name IS NOT NULL
    AND NOT ( sys.objects.NAME LIKE 'sys%' )
    AND NOT ( sys.types.name LIKE 'sys%' )
10
ответ дан 27 November 2019 в 22:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: