Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как переименовать таблицу в 100 БД одним запросом  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
на сервере есть около 100 БД, с названиями TMPS701_1, TMPS701_2....TMPS704_1......... ну первые 4 буквы TMPS. в Этих 100 БД, есть одна и та же табличка наз-ся dbo.Watches, как можно переименовать эту таблицу на dbo.watshes1, во всех 100 БД одним запросом.
А то вручную это долго..
Версия
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)   Nov 24 2008 13:01:59   Copyright (c) 1988-2005 Microsoft Corporation  Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 
25 дек 09, 10:20    [8117102]     Ответить | Цитировать Сообщить модератору
 Re: Как переименовать таблицу в 100 БД одним запросом  [new]
aleks2
Guest
minya13_85,

sp_MSforeachdb
25 дек 09, 10:35    [8117195]     Ответить | Цитировать Сообщить модератору
 Re: Как переименовать таблицу в 100 БД одним запросом  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5196
minya13_85,

первый вариант :
exec sp_MSForeachdb 'use [?]; if db_name() like 'TMP%' exec sp_rename @objname = ''dbo.Watches'', @newname = ''dbo.watshes1'';' 


второй вариант:
сгенерировать скрипт для всех баз

select 'use ['+name+']; exec sp_rename @objname = ''dbo.Watches'', @newname = ''dbo.watshes1'';'
from master.sys.databases
where name like 'TMP%'

результат выполнить
25 дек 09, 10:35    [8117199]     Ответить | Цитировать Сообщить модератору
 Re: Как переименовать таблицу в 100 БД одним запросом  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5196
первый вариант, исправлен :
exec sp_MSForeachdb 'use [?]; if db_name() like ''TMP%'' exec sp_rename @objname = ''dbo.Watches'', @newname = ''dbo.watshes1'';' 
25 дек 09, 10:36    [8117206]     Ответить | Цитировать Сообщить модератору
 Re: Как переименовать таблицу в 100 БД одним запросом  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
aleks2
sp_MSforeachdb
и как она работает?
25 дек 09, 10:38    [8117225]     Ответить | Цитировать Сообщить модератору
 Re: Как переименовать таблицу в 100 БД одним запросом  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
minya13_85,

а вы ответы ВАМ выборочно читаете ?
25 дек 09, 10:43    [8117259]     Ответить | Цитировать Сообщить модератору
 Re: Как переименовать таблицу в 100 БД одним запросом  [new]
aleks2
Guest
например
exec sp_MSforeachdb 'USE [?]; if LEFT(db_name(),4)=''TMPS'' EXECUTE sp_rename N''dbo.Хрень'', N''Другая хрень'''
25 дек 09, 10:44    [8117262]     Ответить | Цитировать Сообщить модератору
 Re: Как переименовать таблицу в 100 БД одним запросом  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
komrad
первый вариант, исправлен :
exec sp_MSForeachdb 'use [?]; if db_name() like ''TMP%'' exec sp_rename @objname = ''dbo.Watches'', @newname = ''dbo.watshes1'';' 
Это сработало..Спасибо.
25 дек 09, 10:46    [8117280]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить