Announcement

Collapse
No announcement yet.

MS SQL Server - SET IDENTITY INSERT ON

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MS SQL Server - SET IDENTITY INSERT ON

    Hallo ins Forum,


    derzeit arbeite ich an einem .NET-Programm welches im Hintergrund per fixem Login (Default-Schema dbo, dazu db_owner-Berechtigung) auf mehrere SQL-Server zugreift (SQL-Server 2005 und 2008). Im Zuge der Datenreplikation werden u.a. Datensätze mit PrimaryKey bei noch nicht exisiterenden Tabellen eingefügt. Hierbei wird im Vorfeld
    Code:
    SET IDENTITY_INSERT dbo.<Beispieltabelle> ON
    gesetzt, der Datensatz eingefügt und anschließend
    Code:
    SET IDENTITY_INSERT dbo.<Beispieltabelle> OFF
    ausgeführt.

    Abhängig vom Tabellennamen funktioniert dies auf dem 2008er einwandfrei oder es kommt zum Fehler
    Code:
    ... Tabelle 'dbo.<Beispieltabelle>' nicht gefunden ... keine Berechtigung...
    obwohl der Aufruf - abgesehen vom abweichenden Tabellennamen - für alle Tabellen identisch ist.

    In den vom SQL Server Management Studio angezeigten Eigenschaften der Tabellen kann ich keine Unterschiede feststellen. Ich weiß lediglich dass die derzeit funktionierenden Tabellen aus einer ursprünglich vom 2005er Server kopierten und im 2008er angehängten Datenbankdatei stammen, die problematischen Tabellen auf beiden Servern jeweils per Code (unter dem eingangs genannen Login mit dbo-Schema) neu angelegt wurden.

    Hat jemand eine zündende Idee wo sich hier die Ursache versteckt?

    DANKE für Antworten
    Gerald

  • #2
    Wann kommt denn die Meldung, beim Identity Befehl oder beim Insert? Den Insertbefehl hast Du nicht gepostet.
    Schreibweise prüfen, evtl mit Klammern...
    Kommt der Fehler auch bei anderen Zugriffen auf die Tabelle?
    Dictionary prüfen, ob die Tabelle richtig aufgeführt wird.
    Und natürlich Rechte prüfen, ggF mit explizitem Grant Zugriffsrechte gezielt vergeben / korrigieren.
    Gruß, defo

    Comment


    • #3
      Der Fehler tritt beim Aufruf des
      Code:
      SET IDENTITY_INSERT dbo.<Tabellenname> ON
      auf.

      Nachfolgend wird
      Code:
      INSERT INTO <Tabellenname> ( <PrimKey_Spalte>) VALUES (<PrimKey_Wert>)
      aufgerufen, welches mit einem
      Code:
      SET IDENTITY_INSERT dbo.<Tabellenname> OFF
      endet.

      Andere Zugriffe (lesend, schreibend) auf die betroffene Tabelle funktionieren problemlos.
      Wie im Eingangsposting geschrieben tritt der Fehler
      Code:
      Cannot find the object "dbo.<Tabellenname>" because it does not exist or you do not have permissions.
      nur bei manchen Tabellen auf - die genannte Funktion wird für alle Tabellen verwendet. Der User im Hintergrund verfügt über db_owner-Rechte und verwendet das dbo-Schema.
      Das Schema ist auch über alle Tabellen gleich (dbo) und eine Abfrage
      Code:
      SELECT * FROM sysobjects where xtype='u'
      zeigt ebenfalls keine Unterschiede (uid = id des Schemas dbo).
      Zuletzt editiert von gerald_b; 08.08.2012, 15:03.

      Comment


      • #4
        Hallo,

        schau mal, ob bei den Tabellen mit Fehlermeldung Dein primKey auch den auto-merker hat.

        Vielleicht stört er sich auch dran, wenn schon Daten in der Tabelle drin sind ?

        Gruß
        Uschi

        Comment

        Working...
        X