Я щойно опублікував це на подібне питання: На сервері sql 2005, як я можу змінити "схему" таблиці, не втрачаючи жодних даних?
Невелике поліпшення відмінного відповіді Саеіда в ...
Я додав exec для самостійного виконання цього коду, і я додав об'єднання вгорі, щоб я міг змінити схему обох таблиць ТА збережених процедур:
DECLARE cursore CURSOR FOR
select specific_schema as 'schema', specific_name AS 'name'
FROM INFORMATION_SCHEMA.routines
WHERE specific_schema <> 'dbo'
UNION ALL
SELECT TABLE_SCHEMA AS 'schema', TABLE_NAME AS 'name'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA <> 'dbo'
DECLARE @schema sysname,
@tab sysname,
@sql varchar(500)
OPEN cursore
FETCH NEXT FROM cursore INTO @schema, @tab
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'ALTER SCHEMA dbo TRANSFER [' + @schema + '].[' + @tab +']'
PRINT @sql
exec (@sql)
FETCH NEXT FROM cursore INTO @schema, @tab
END
CLOSE cursore
DEALLOCATE cursore
Мені теж довелося відновити dbdump, і я виявив, що схема не була dbo - я витратив години, намагаючись отримати студію управління Sql Server або передачу даних візуальної студії, щоб змінити схему призначення ... Я в кінцевому підсумку просто запустив це проти відновленої дамп на новому сервері, щоб отримати речі так, як я хотів.