Я только что отправил это на аналогичный вопрос: как в sql server 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 или передачу данных визуальной студии, чтобы изменить схему назначения ... В итоге я просто запустил это против восстановленного сделайте дамп на новом сервере, чтобы все было так, как я хотел.