sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server opretter brugerdefinerede tabeltyper med skema, der ikke fungerer korrekt

I stedet for at kigge i sys.objects for disse bør du kigge i sys.types eller sys.table_types (hvilket desuden afslører type_table_object_id ).

SELECT name,
       schema_id /*Will be the "test" schema id*/
FROM   sys.types
WHERE  is_table_type = 1
       AND name = 'MyUserTableType'

Når du opretter en brugerdefineret type, tilføjer den en række til sys.sysscalartypes med det brugerleverede skema og navn og en række til sys.sysschobjs med et systemgenereret navn i sys skema. Det systemgenererede navn oprettes ved at sammenkæde TT_ + FriendlyName + _ + Hex version af objekt-id.

De to entiteter er relateret sammen via sys.syssingleobjrefs

/*This query only works via the DAC*/
SELECT so.id AS object_id,
       st.id AS user_type_id,
       *
FROM   sys.sysschobjs so
       JOIN sys.syssingleobjrefs sor
         ON sor.indepid = so.id
       JOIN sys.sysscalartypes st
         ON st.id = sor.depid
WHERE  st.name = 'MyUserTableType' 



  1. Læs data fra SqlDataReader

  2. FEJL 1030 (HY000) på linje 25:Fik fejl 168 fra lagermotor

  3. Sådan henter du nøjagtige matchende poster i Spring JPA @Query

  4. MySQL:To n:1 relationer, men ikke begge på én gang