Переименуйте все таблицы в базе данных

У меня есть база данных, где все таблицы снабжаются префиксом ряд тех же символов. Это было сделано, потому что когда-то они были в общей базе данных, настроенной для любимых проектов с сотнями других таблиц. Приложение и таким образом база данных, теперь готовы быть перемещенными из той фазы и готовые отсутствовать на своем собственном. Я хотел бы удалить префикс для каждой из таблиц. Существует ли более легкий способ сделать это вместо того, чтобы щелкнуть правой кнопкой и переименовать каждую таблицу индивидуально?

6
задан Jason 5 January 2010 в 19:06
поделиться

4 ответа

[

]Вы можете сделать что-нибудь вроде скрипта для всей базы данных и сделать замену строк в скрипте, запустить его в новой базе данных, а затем импортировать данные. Это, конечно, зависит от того, насколько хорошо вы можете подобрать заменимую строку. Возможно, вам также придется внести соответствующие изменения в свое приложение. Вы всегда можете попробовать что-нибудь подобное на тестовой базе данных, чтобы убедиться, что это сработает.[

] [

]Взгляните и на это тоже - []Массовое переименование таблиц и хранимых процедур[] [

] [

]Один метод имеет некоторую стоимость, а другой похож на мой вариант.[

].
2
ответ дан 8 December 2019 в 16:03
поделиться

Можно написать скрипт, чтобы посмотреть на мета-информацию и изменить ее, но разве это не испортит все ваши SP и Parameterized Queries?

.
4
ответ дан 8 December 2019 в 16:03
поделиться
[

]Сначала запишите хранимую процедуру, которая имеет параметр имени таблицы и использует парсинг строк и ALTER TABLE для удаления префикса из указанной таблицы.[

] [

]Затем используйте sp_MSforeachtable для вызова этой процедуры для каждой таблицы.[

] [

]Ссылка: []http://weblogs.sqlteam.com/joew/archive/2007/10/23/60383.aspx[][

]
0
ответ дан 8 December 2019 в 16:03
поделиться
[
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: [

] [
    ] [
  • ] Вы получите предупреждающее сообщение следующим образом: [] Предупреждение: Изменение любой части имени объекта может нарушить скрипты и хранимые процедуры.[][
  • ] [
  • ]Вам придется переименовывать таблицы в любых хранимых процедурах, функциях, представлениях и триггерах.[
  • ] [
]
9
ответ дан 8 December 2019 в 16:03
поделиться
Другие вопросы по тегам:

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