2009-06-16 2 views

ответ

6

В SQL Server 2005 (и выше), вы можете сделать это

SELECT * FROM sys.Types WHERE is_user_defined = 1 

Если вы находитесь на SQL Server 2000, вы можете использовать SysTypes. Я думаю, что запрос выглядит следующим образом:

SELECT * FROM SysTypes WHERE xusertype > 256 
1

Вы можете использовать вид sys.types. Когда user_type_id и system_type_id отличаются, у вас есть тип пользователя.

Как отмечает AakashM, представление sys.types доступно только для SQL Server 2005 и выше.

EDIT: лучший способ определить, является ли тип определяемым пользователем типом, - это проверить флаг is_user_defined (см. Ответ Тима C).

1

Если вы все еще находитесь на SQL Server 2000 (как предполагает использование вами «sysobjects»), посмотрите в systypes. Если вы находитесь на SQL Server 2005 или более поздней версии, как говорит rwwilden вы должны использовать sys.types (и перейти к использованию sys.objects, а не sysobjects!)

0

Вы можете использовать виды INFORMATION_SCHEMA. INFORMATION_SCHEMA.ROUTINES имеет UDF и хранимые процедуры. INFORMATION_SCHEMA.TABLES имеет таблицы и представления.

0

Фактически system_type_id, отличное от user_type_id, не является хорошим показателем. Обратите внимание, что это:

SELECT * FROM sys.Types 
WHERE (system_type_id <> user_type_id) 
AND is_user_defined = 0. 

Возвращает следующие:

  • hierarchyid` в
  • геометрия
  • география
  • SYSNAME

Так что использование SELECT * FROM sys.types WHERE is_user_defined = 1 как было указано Тимом C и Рональд Вильденберг

1

Не существует стандартного запроса на получение всех определенных пользователем баз данных. Мы можем использовать

select * from sys.databases 

Но он показывает все базы данных, я использую студию управления сервером. Поэтому по умолчанию у меня есть следующие базы данных: 'Master','tempdb','msdb','model'

Поэтому я всегда использую этот следующий запрос для получения пользовательских баз данных.

select * from sys.databases where name not in('master','model','msdb','tempdb') 

Это работает для штрафа. Если у вас есть дополнительные базы данных по умолчанию, это будет следующее (ресурс, дистрибутив, служба отчетов, reportservicetemp). Просто используйте имена в этом запросе.

Смежные вопросы