Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server създава дефинирани от потребителя типове таблици със схема, която не работи правилно

Вместо да търсите в sys.objects за тях трябва да търсите в sys.types или sys.table_types (което допълнително разкрива 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'

Когато създадете дефиниран от потребителя тип, той добавя ред към sys.sysscalartypes с предоставена от потребителя схема и име и ред към sys.sysschobjs с генерирано от системата име в sys схема. Генерираното от системата име се създава чрез свързване на TT_ + FriendlyName + _ + Шестнадесетична версия на идентификатора на обекта.

Двата обекта са свързани заедно чрез 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Каква е целта на системната таблица master..spt_values ​​и какво е значението на нейните стойности?

  2. Пуснете първичния ключ с помощта на скрипт в базата данни на SQL Server

  3. сравняване на стойности, разделени със запетая в sql

  4. Невалиден тип параметър (numpy.int64) при вмъкване на редове с executemany()

  5. ADO.Net SQLCommand.ExecuteReader() се забавя или увисва