Announcement

Collapse
No announcement yet.

Anhand der systables die Constraints herausfinden

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

  • Anhand der systables die Constraints herausfinden

    Guten Tag,

    ich suche nach einmermöglichkeit die einzelen Constraints wie Primary Key Foreignkey usw. über die sys Tabellen aus zu geben. Ich habe auch schon in der MSDN Libary gesucht aber nichts passendes gefunden. ich möchtes es gerne in der ahnlichen Form wie:

    Tabelle Spalte Constraint Datentyp
    contactinfo id PK int
    contactinfo fname - varchar
    contactinfo lname - varchar

    Ich hoffe es kann mir jemand helfen.
    Danke.

    grüße
    frw-online

  • #2
    mit den Katalog sichten kannst Du Dri was zusammenbasteln

    sys.tables
    sys.check_constraints
    sys.columns
    sys.computed_columns
    sys.default_constraints
    sys.foreign_key_columns
    sys.foreign_keys
    sys.identity_columns
    sys.index_columns
    sys.indexes

    Comment


    • #3
      also ich habe schon mal in die kataloge geschaut (auf der msdn libary seite) aber nichts konkretes gefunden. kannst du da evtl. ein stück code geben wie ich von den tabellen der datenbank und deneinzelen spalten die dazugehörigen variablentypen und ob es zb. PK oder so hat. also ich habe es soweit herausgefunden mit den tabellen aber nicht wirklich wie ich herausfinde ob eine spalte ein constraint hat.

      Danke
      frw-online

      Comment


      • #4
        Joine Sys.Tables mit Sys.Columns über Object_Id usw usf...

        Comment


        • #5
          das habe ich soweit auch schon herausbekommen. dennoch habe ich das problem das ich zu den spalten nicht herrausfinden kann welche zb ein Primary Key ist oder ein Foreign_key usw. sind. also mein code bisher sieht folgendermaßen aus...

          Code:
          select 
          Tabellenname = sys.tables.name,
          Spaltenname = sys.columns.name,
          varriablentyp = sys.types.name
          
          from sys.tables join sys.columns on sys.tables.object_id = sys.columns.object_id
          join sys.types on sys.columns.system_type_id = sys.types.system_type_id
          where 
          sys.types.name NOT IN ('id','tid','empid')
          kann mir dabei weitergeholfen werden?

          vielen dank

          grüße,
          frw-online

          Comment


          • #6
            Na dann probiere es mal mit sys.objects (siehe "type")

            bye,
            helmut

            Comment


            • #7
              Originally posted by frw-online View Post
              das habe ich soweit auch schon herausbekommen. dennoch habe ich das problem das ich zu den spalten nicht herrausfinden kann welche zb ein Primary Key ist oder ein Foreign_key usw. sind. also mein code bisher sieht folgendermaßen aus...

              Code:
              select 
              Tabellenname = sys.tables.name,
              Spaltenname = sys.columns.name,
              varriablentyp = sys.types.name
              
              from sys.tables join sys.columns on sys.tables.object_id = sys.columns.object_id
              join sys.types on sys.columns.system_type_id = sys.types.system_type_id
              where 
              sys.types.name NOT IN ('id','tid','empid')
              kann mir dabei weitergeholfen werden?

              vielen dank

              grüße,
              frw-online
              Das liegt daran das sys.Types die Datentypen (also INT, CHAR() usw. enthält

              Ob eine Spalte zu einem Primary Key oder zu einem Unigue Constraint/KEy gehört, musst du in sys.indexes und sys.index_columns nachschauen.
              Ob eine Spalte zu einem Foreign Key gehört, ist aus sys.Foreign_keys und sys.Foreign_Key_Columns zu erfahren.
              Ob auf einer Spalte ein Check- und/oder eine Default-Constraint liegt, steht in sys.Check_constrainsts bzw sys.default_constraints

              Comment

              Working...
              X