Как изменить столбец с char (2) на varchar (5) на 1000 таблиц в 100 базах данных на 5 серверах? - PullRequest
0 голосов
/ 08 октября 2010

Мне нужно придумать скрипт для изменения столбца с char (2) на varchar (5) на 1000 таблиц в 100 базах данных на 5 серверах.Колонка, скорее всего, будет иметь название «Офис».Однако: столбец может иметь другое имя, необязательно содержащее «Office».Иногда столбец индексируется, иногда нет.Иногда столбец является первичным ключом, иногда нет.Иногда есть вычисляемые столбцы, иногда нет.Часто существует много видов, зависящих от приведенных выше таблиц.Какова будет лучшая методология?Я начал с Red Gate's Compare и Dependency Tracker и т. Д., Но есть много независимых таблиц, в которых столбец нужно изменить.

Ответы [ 2 ]

1 голос
/ 10 октября 2010

SQL Prompt 5 будет иметь функцию для определения зависимостей столбцов.В настоящее время он находится в раннем доступе, поэтому, если вы зарегистрируетесь, вы можете опробовать эту функцию и оставить отзыв.

Для более подробной информации: http://www.red -gate.com / доска объявлений / viewtopic.php? T = 11846

Чтобы зарегистрироваться: http://www.surveymk.com/s/DZLN2JW

Тем временем вы всегда можете использовать бесплатный инструмент поиска SQL для поиска ссылок на объект в вашей схеме SQL Server: http://www.red -gate.com / products / SQL_Search /

Надеюсь, это поможет!

1 голос
/ 09 октября 2010

Если вы предоставите больше информации, я смогу дать более конкретный ответ. Может быть, вы могли бы привести несколько примеров различных сценариев.

Общий ответ заключается в том, что вам нужно найти различные сценарии и решить, как вы будете делать это вручную. например Если это просто изменение столбца без зависимостей, то вы, ALTER TABLE, получите правильный результат. Если вам неудобно создавать SQL, вы можете использовать конструктор таблиц в Management Studio, и вместо сохранения изменений есть возможность сгенерировать SQL.

Как только вы получите образец SQL для каждого сценария, используйте таблицы INFORMATION_SCHEMA для динамического создания SQL-кода, чтобы найти каждый сценарий и построить правильный ALTER TABLE в качестве одного из столбцов. например

select 'ALTER TABLE [' + table_schema + '].[' + table_name + '] ALTER COLUMN [' + column_name + '] varchar(5);' FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME like '%office%'

Поскольку вы работаете с несколькими базами данных и серверами, вы можете использовать sys.databases или sp_msforeachdb для применения к каждой базе данных. Чтобы перейти на несколько серверов, вы можете использовать связанные серверы или, поскольку их всего 5, вы можете просто применить один и тот же процесс 5 раз.

надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...