none
Probleme avec GetSchema RRS feed

  • Discussion générale

  • Bonjour,

    J'utilise la fonction lDBSql.GetSchema("Primary_Keys")

    et il me retourne l'erreur suivante "La collection demandée (Primary_Keys) n'est pas définie."

    Je suis sur un serveur Sql server 2012 (avant je n'avais pas le probleme en sql server 2008).

    Je suis connecter en SqlClient.

    Est ce que qq chose à changé ?

    Cordialement

    Sébastien


    Cordialement Sébastien DataBase2Code

    • Type modifié Aurel Bera mercredi 9 janvier 2013 11:58 Discussion
    mercredi 2 janvier 2013 19:34

Toutes les réponses

  • voici un MetaDataCollections   de la connection du serveur, on ne vois pas les primary keys, comment faire ?

    CollectionName       | NumberOfRestrictions | NumberOfIdentifierParts |

    ------------------------------------------------------------------------

    MetaDataCollections  | 0                    | 0                    |

    DataSourceInformation | 0                    | 0                    |

    DataTypes            | 0                    | 0                    |

    Restrictions         | 0                    | 0                    |

    ReservedWords        | 0                    | 0                    |

    Users                | 1                    | 1                    |

    Databases            | 1                    | 1                    |

    Tables               | 4                    | 3                    |

    Columns              | 4                    | 4                    |

    AllColumns           | 4                    | 4                    |

    ColumnSetColumns     | 3                    | 3                    |

    StructuredTypeMembers | 4                    | 4                    |

    Views                | 3                    | 3                    |

    ViewColumns          | 4                    | 4                    |

    ProcedureParameters  | 4                    | 1                    |

    Procedures           | 4                    | 3                    |

    ForeignKeys          | 4                    | 3                    |

    IndexColumns         | 5                    | 4                    |

    Indexes              | 4                    | 3                    |

    UserDefinedTypes     | 2                    | 1                    |


    Cordialement Sébastien DataBase2Code

    mercredi 2 janvier 2013 19:52
  • Bonjour,

    Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 8 janvier 2013 15:13
  • Bonjour,

    Nous changeons le type de votre question à « Discussion générale ». Si vous avez plus de temps pour réexaminer la question et fournir plus d'informations, n'hésitez pas à modifier le type du thread à « Question ». Si le problème est résolu, s’il vous plaît partagez la solution avec nous afin que la réponse puisse être trouvée et utilisée par d'autres membres de la communauté ayant des questions similaires.

    Merci !

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mercredi 9 janvier 2013 11:59
  • Bonjour,

    Le schema a belle est bien changer, au fur et a mesure de mes investiagation je suis tomber sur de nombreux probleme.

    - La methode de filtre entre les vue et les table on changer (Filtre sur 'TABLE BASE' et non sur 'TABLE'

    - Les schema de clef primaire ,n'existe plus

    - Les schema des clef etrangere , on changer de format (colonne manquante)

    je suis passer par des requette sql directe qui permete de m'affranchire des versions sql server 2012.

    si je suis en version 2005 a 2008 j'utilise les getschema, si 2012 j'utilise des requette sql qui retourne les meme valeur que les getschema d'origine.

    Cordialement,

    Sébastien


    Cordialement Sébastien DataBase2Code


    • Modifié Aserf lundi 14 janvier 2013 14:51
    lundi 14 janvier 2013 14:49
  • Voici les 2 fonctions que j'ai créé pour recupere les schema identique a GetSchema

        Private Function GetSchemaPrimaryKeysSqlServer2012(ByVal pTableName As String) As String
    
            Dim lRetour As String = ""
    
    
    
            lRetour += "SELECT" & vbCrLf
            lRetour += "KCU.TABLE_NAME AS TABLE_NAME," & vbCrLf
            lRetour += "KCU.CONSTRAINT_NAME AS PK_NAME," & vbCrLf
            lRetour += "KCU.COLUMN_NAME AS COLUMN_NAME,ORDINAL_POSITION as ORDINAL" & vbCrLf
            lRetour += "FROM" & vbCrLf
            lRetour += "INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC" & vbCrLf
            lRetour += "JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU" & vbCrLf
            lRetour += "ON KCU.CONSTRAINT_SCHEMA = TC.CONSTRAINT_SCHEMA" & vbCrLf
            lRetour += "AND KCU.CONSTRAINT_NAME = TC.CONSTRAINT_NAME" & vbCrLf
            lRetour += "AND KCU.TABLE_SCHEMA = TC.TABLE_SCHEMA" & vbCrLf
            lRetour += "AND KCU.TABLE_NAME = TC.TABLE_NAME" & vbCrLf
            lRetour += "WHERE" & vbCrLf
            lRetour += "TC.CONSTRAINT_TYPE = 'PRIMARY KEY'" & vbCrLf
            If String.IsNullOrWhiteSpace(pTableName) = False Then
                lRetour += " AND KCU.TABLE_NAME = '" & pTableName & "'"
            End If
            lRetour += "ORDER BY" & vbCrLf
           lRetour += "KCU.TABLE_SCHEMA, KCU.TABLE_NAME, KCU.CONSTRAINT_NAME" & vbCrLf
    
            Return lRetour
    
        End Function
    
        Public Function GetSchemaForeignKeysSqlServer2012(ByVal pTableName As String) As String
    
            Dim lRetour As String = ""
    
            lRetour += "SELECT " & vbCrLf
            lRetour += "    f.name AS FK_NAME" & vbCrLf
            lRetour += "   ,OBJECT_NAME(f.parent_object_id) AS FK_TABLE_NAME" & vbCrLf
            lRetour += "   ,COL_NAME(fc.parent_object_id, fc.parent_column_id) AS FK_COLUMN_NAME" & vbCrLf
            lRetour += "   ,OBJECT_NAME (f.referenced_object_id) AS PK_TABLE_NAME" & vbCrLf
            lRetour += "   ,COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS PK_COLUMN_NAME" & vbCrLf
            lRetour += "   ,parent_column_id as ORDINAL" & vbCrLf
            lRetour += "" & vbCrLf
            lRetour += "FROM sys.foreign_keys AS f" & vbCrLf
            lRetour += "INNER JOIN sys.foreign_key_columns AS fc " & vbCrLf
            lRetour += "   ON f.object_id = fc.constraint_object_id " & vbCrLf
    
            If String.IsNullOrWhiteSpace(pTableName) = False Then
    
                lRetour += "WHERE f.parent_object_id = OBJECT_ID('" & pTableName & "')" & vbCrLf
    
            End If
    
            Return lRetour
    
        End Function


    Cordialement Sébastien DataBase2Code


    • Modifié Aserf lundi 14 janvier 2013 14:54
    lundi 14 janvier 2013 14:53