SQLServer owner bzw. schema einer Tabelle ändern

Heute war mal ein schöner Tag!!!!

Wir haben gerade eine Datenbank in einen neu installierten SQL-Server eingelesen.

Und versucht mit dem Kassen-Programm Oscar drauf zu zugreifen.
Das Problem war das Oscar immer meinte die Tabelle „ProcUnit“ sei nicht vorhanden.

Nach langen hin und her (Datenbank Konvertieren und wieder einlesen) haben wir dann heraus gefunden das

Kauf Generic Altezym (Zithromax) Rezeptfrei

, weil die Tabellen nicht das Schema „dbo“ hatten, sondern auf das Schema ein Benutzer war, Oscar nicht auf die Datenbank zugreifen konnte.

Als erste habe ich erst mal bei Google ein wenig geschaut ob man nicht was Sinnvolles findet um das Schema bzw. den Owner einer Tabelle zu ändern.

Gefunden habe ich auch was:
z.b.

und noch mehr Skripte, aber das alles wollte nicht so ganz funktionieren.

Die Fehlermeldung war immer:
Objekt ungültig oder konnte in der Datenbank nicht gefunden werden.

Also weiter suchen 😉
Dann habe ich was Schönes gefunden:

Das hat dann auch super funktioniert!!!

Nur ich tippe doch nicht ca. 900 Tabellennamen in ein SQL damit sich das Schema ändert 😛
Also habe ich hier mal was Schönes gebaut was dann auch super funktioniert hat 🙂

Jetzt kann das Kassensystem auch endlich die Datenbank finden!!!

Update Hier wird auch das Schema automatisch genommen

Google Tags:
sql server schema owner ändern
sql server schema ändern
sql server schema owner change
sql server schema change

3 Antworten auf „SQLServer owner bzw. schema einer Tabelle ändern“

  1. Danke für das Skrip. Hat meinen Tag gerettet.
    Hier noch eine kleine Erweiterung damit das alte Schema automatisch genommen wird.

    DECLARE @vendor_name nvarchar(100)
    DECLARE @SCHEMA nvarchar(100)

    DECLARE vend_cursor CURSOR
    FOR select TABLE_SCHEMA,TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA ‚dbo‘
    — and TABLE_TYPE = ‚BASE TABLE‘
    OPEN vend_cursor
    FETCH NEXT FROM vend_cursor into @SCHEMA,@vendor_name

    WHILE @@FETCH_STATUS = 0
    BEGIN
    exec(‚
    ALTER SCHEMA dbo TRANSFER [‚ + @SCHEMA + ‚].[‚ + @vendor_name + ‚]‘)

    FETCH NEXT FROM vend_cursor
    INTO @SCHEMA,@vendor_name
    END
    CLOSE vend_cursor
    DEALLOCATE vend_cursor

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.