none
Probleme mit Alter Schema RRS feed

  • Frage

  • Wenn ich über das Menü eine Tabelle im Schema dbo erstellt habe, muss ich sie manchmal hinterher ins richtige Schema verschieben.

    ALTER SCHEMA schema1 TRANSFER dbo.tblTabelle

    funktioniert nicht.

    ALTER SCHEMA schema2 TRANSFER dbo.tblTabelle

    funktioniert.

    ALTER SCHEMA schema1 TRANSFER schema2.tblTabelle

    dann wieder nicht.

    Irgendwas scheint mit Schema1 nicht zu stimmen.

    Beide Schemas gehören dbo und ich bin dbo.

    Hat jemand eine Idee? Es ist etwas lästig aus der Tabelle ein Skript zu machen, dieses dann auch schema1 auszuführen und die Tabelle dann in dbo bzw. schema2 zu löschen. Aber es funktioniert.

    Danke.

    M. Fiedler

    Montag, 8. Oktober 2012 11:58

Antworten

Alle Antworten

  • Hi,

    gibt es evtl. bereits die Tabelle tblTabelle in Schema1?

    Grüße

    Oliver

    Montag, 8. Oktober 2012 12:03
  • Nein. Es kommt auch keine Fehlermeldung. Es passiert einfach gar nichts, bzw. die Sanduhr läuft. Ich hab sie auch schon mal lange laufen lassen (>10 min) und nichts ist passiert.

    Ansonsten wird der Befehl ja sofort ausgeführt. Ist ja nix was lange dauert.

    Grüße

    M. Fiedler

    Montag, 8. Oktober 2012 12:25
  • Hallo M.

    kannst Du mal das Script für das Schema1 posten?


    Uwe Ricken

    MCITP Database Administrator 2005
    MCITP Database Administrator 2008
    MCITP Microsoft SQL Server 2008, Database Development

    db Berater GmbH
    http://www-db-berater.de

    Montag, 8. Oktober 2012 12:56
  • Naja, viel steht ja nicht drin in so einem Schema-Skript. Der Unterschied zum Schema2 ist, dass es eine Beschreibung gibt, aber das kann es doch wohl nicht sein, oder?

    USE [DB1]
    GO

    /****** Object:  Schema [js]    Script Date: 10/08/2012 15:12:29 ******/
    CREATE SCHEMA [js] AUTHORIZATION [dbo]
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Allgemeine Objekte zu JS' , @level0type=N'SCHEMA',@level0name=N'js'
    GO

     

    Montag, 8. Oktober 2012 13:16
  • Hi,

    Du hast dann in deinem eigentlichen Skript aber schon "js" anstelle von "schema1" geschrieben, oder?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Montag, 8. Oktober 2012 13:37
    Moderator
  • Ja, klar. Schema2 heisst in Wirklichkeit auch nicht Schema2 ;-)

    Ich hab jetzt einfach mal die Beschreibung gelöscht. Danach funktionierte das Verschieben.

    Hab dann die Beschreibung wieder eingefügt. Funktionierte immer noch.

    Keine Ahnung was da los war, aber ich musste in den letzten Wochen schon mehrfach den Umweg über das Create-Table-Skript nehmen und hatte einfach die Nase voll.

    Manchmal hilft ja schon fragen ;-)

    Danke fürs lesen!

    Gruß

    M. Fiedler

    Dienstag, 9. Oktober 2012 07:11
  • Ich habe das Problem jetzt doch identifizieren können.

    Auf dem Schema liegt eine Sperre, wenn Benutzer über eine Access-Anwendung auf Objekte (Tabellen, Views, Prozeduren,Funktionen) des Schemas zugreifen. Dann kann auch die Beschreibung nicht entfernt werden und es kommt eine entsprechende Fehlermeldung. Die Anwendung greift auch auf Objekte in dbo zu, aber dieses Schema wird wohl nicht gesperrt.

    Auf der gleichen DB, andere Schemas laufen andere Anwendungen, wodurch keine Sperre ausgelöst wird.

    Hat vielleicht jemand eine Idee an welcher Stelle ich ansetzen bzw. suchen muss, um die Sperre zu verhindern? Kann ja auch nicht die Lösung sein, dass ich die Benutzer abtelefonieren muss, wenn ich eine neue, noch nicht verknüpfte Tabelle ins Schema verschieben will.

    Danke

    M. Fiedler

    Mittwoch, 10. Oktober 2012 10:20
  • Hat vielleicht jemand eine Idee an welcher Stelle ich ansetzen bzw. suchen muss, um die Sperre zu verhindern? Kann ja auch nicht die Lösung sein, dass ich die Benutzer abtelefonieren muss, wenn ich eine neue, noch nicht verknüpfte Tabelle ins Schema verschieben will.

    Hallo,

    das kannst Du z. B. mittels SQL Profiler herausfinden. Ein Beispiel dazu findest Du hier:
    http://www.databasejournal.com/features/mssql/article.php/3887996/Determining-Object-Access-Using-SQL-Server-Profiler.htm


    Uwe Ricken

    MCITP Database Administrator 2005
    MCITP Database Administrator 2008
    MCITP Microsoft SQL Server 2008, Database Development

    db Berater GmbH
    http://www-db-berater.de

    Mittwoch, 10. Oktober 2012 10:24
  • Hallo FiedlerM,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert


    Robert Breitenhofer, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 1. November 2012 12:28
    Moderator