У меня есть база данных, где все таблицы снабжаются префиксом ряд тех же символов. Это было сделано, потому что когда-то они были в общей базе данных, настроенной для любимых проектов с сотнями других таблиц. Приложение и таким образом база данных, теперь готовы быть перемещенными из той фазы и готовые отсутствовать на своем собственном. Я хотел бы удалить префикс для каждой из таблиц. Существует ли более легкий способ сделать это вместо того, чтобы щелкнуть правой кнопкой и переименовать каждую таблицу индивидуально?
]Вы можете сделать что-нибудь вроде скрипта для всей базы данных и сделать замену строк в скрипте, запустить его в новой базе данных, а затем импортировать данные. Это, конечно, зависит от того, насколько хорошо вы можете подобрать заменимую строку. Возможно, вам также придется внести соответствующие изменения в свое приложение. Вы всегда можете попробовать что-нибудь подобное на тестовой базе данных, чтобы убедиться, что это сработает.[
] []Взгляните и на это тоже - []Массовое переименование таблиц и хранимых процедур[] [
] []Один метод имеет некоторую стоимость, а другой похож на мой вариант.[
].Можно написать скрипт, чтобы посмотреть на мета-информацию и изменить ее, но разве это не испортит все ваши SP и Parameterized Queries?
.]Сначала запишите хранимую процедуру, которая имеет параметр имени таблицы и использует парсинг строк и ALTER TABLE для удаления префикса из указанной таблицы.[
] []Затем используйте sp_MSforeachtable для вызова этой процедуры для каждой таблицы.[
] []Ссылка: []http://weblogs.sqlteam.com/joew/archive/2007/10/23/60383.aspx[][
]select 'exec sp_rename @objname=' + name + ', @newname=' + replace(name ,'prefixedchars', '')
from sysObjects
where type = 'U'
]
[]Результат будет что-то вроде:[
] [exec sp_rename @objname=prefixedcharsTable1, @newname=Table1
exec sp_rename @objname=prefixedcharsTable2, @newname=Table2
exec sp_rename @objname=prefixedcharsTable3, @newname=Table3
etc... for each table in your db
]
[]Все, что вам нужно сделать, это скопировать эти операторы в новое окно запроса и запустить.[
] []Caveats: [
] [] Предупреждение: Изменение любой части имени объекта может нарушить скрипты и хранимые процедуры.[
][