Как я могу запросить все пользовательские типы данных из SQL-сервера, как это делается для объекта базы данных, который хранится в sysobjects.Запросить все пользовательские типы из Sql Server?
ответ
В SQL Server 2005 (и выше), вы можете сделать это
SELECT * FROM sys.Types WHERE is_user_defined = 1
Если вы находитесь на SQL Server 2000, вы можете использовать SysTypes. Я думаю, что запрос выглядит следующим образом:
SELECT * FROM SysTypes WHERE xusertype > 256
Вы можете использовать вид sys.types
. Когда user_type_id
и system_type_id
отличаются, у вас есть тип пользователя.
Как отмечает AakashM, представление sys.types
доступно только для SQL Server 2005 и выше.
EDIT: лучший способ определить, является ли тип определяемым пользователем типом, - это проверить флаг is_user_defined
(см. Ответ Тима C).
Если вы все еще находитесь на SQL Server 2000 (как предполагает использование вами «sysobjects
»), посмотрите в systypes
. Если вы находитесь на SQL Server 2005 или более поздней версии, как говорит rwwilden вы должны использовать sys.types
(и перейти к использованию sys.objects
, а не sysobjects
!)
Вы можете использовать виды INFORMATION_SCHEMA. INFORMATION_SCHEMA.ROUTINES имеет UDF и хранимые процедуры. INFORMATION_SCHEMA.TABLES имеет таблицы и представления.
Фактически 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 и Рональд Вильденберг
Не существует стандартного запроса на получение всех определенных пользователем баз данных. Мы можем использовать
select * from sys.databases
Но он показывает все базы данных, я использую студию управления сервером. Поэтому по умолчанию у меня есть следующие базы данных: 'Master','tempdb','msdb','model'
Поэтому я всегда использую этот следующий запрос для получения пользовательских баз данных.
select * from sys.databases where name not in('master','model','msdb','tempdb')
Это работает для штрафа. Если у вас есть дополнительные базы данных по умолчанию, это будет следующее (ресурс, дистрибутив, служба отчетов, reportservicetemp). Просто используйте имена в этом запросе.
- 1. Отбросить все определяемые пользователем типы из SQL Server
- 2. Как я перечисляю пользовательские типы в базе данных SQL Server?
- 3. Типы разрешений SQL Server
- 4. Насколько классны пользовательские типы данных в SQL Server?
- 5. Типы преобразования SQL Server
- 6. Невозможно запросить вид из Linked SQL Server
- 7. Пользовательские исключения Sql Server
- 8. Как запросить все типы документов из репозитория Alfresco, используя CMIS
- 9. Запросить даты в SQL Server
- 10. Запросить все файлы XML в каталоге с SQL Server
- 11. запросить все более ранние даты перед параметром sql server
- 12. Неизвестные типы ожидания SQL Server
- 13. Типы триггеров в SQL Server
- 14. Типы данных SQL Server 2008
- 15. Типы данных SQL Server 2008
- 16. Linq to Sql + пользовательские типы данных
- 17. Шифровать все пользовательские функции SQL Server с помощью C#
- 18. Пользовательские настройки в SQL Server
- 19. Как запросить SQL SERVER на текущую дату
- 20. Полностью прозрачные типы CLR в SQL Server
- 21. Пользовательские типы данных Сжатие
- 22. Пользовательские типы сообщений
- 23. Запросить все элементы за неделю в SQL
- 24. C пользовательские типы данных
- 25. Как запросить базу данных SQL Server?
- 26. Запросить несколько таблиц в SQL Server
- 27. Как запросить SQL Server с помощью PowerShell?
- 28. Пользовательские типы данных
- 29. Как запросить пользовательские поля Wordpress из массива?
- 30. Пользовательские типы в Elixir