Ich habe eine Datenbank, bei der beim anlegen der falsche Datenbankuser aktiv war und deshalb habe ich nun das Problem, dass die Tabellen und die Views der Datenbank allesamt nicht mit dbo.tabellenname bzw. dbo.viewname sondern mit xyz.tabellenname erstellt wurden. Die Tabellen konnte ich nun mithilfe des Befehls: EXEC sp_MSforeachtable @command1="print '?' ALTER SCHEMA dbo TRANSFER ?" umbenennen. Jetzt habe ich aber noch das Problem, dass ich die Views umbenennen muß. Wie lautet hier der richtige Befehl unter SQL Server 2005?
B. Transferring ownership of a view to the schema owner
The following example transfers ownership the view ProductionView06 to the owner of the schema that contains it. The view is located inside schema Production.
ALTER AUTHORIZATION ON OBJECT::Production.ProductionView06 TO SCHEMA OWNER; GO
Ich habe es jetzt anderweitig gelöst. Folgendes Skript gibt die Befehlszeilen für die jeweiligen Views aus:
SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + p.Name FROM sys.Views p INNER JOIN sys.Schemas s on p.schema_id = s.schema_id WHERE s.Name = 'viewbesitzer'
Wenn man dann die einzelnen Befehlszeilen kopiert und ausführt, funktioniert es. Hat jemand eine Idee, wie man das ganze automatisieren kann? Ich hatte jetzt nur 5 Views, das ging ohne Probleme mit copy and paste, aber bei mehreren Views wird das etwas mühsam....