Wie kann ich alle benutzerdefinierten Datentypen von SQL Server abfragen, so wie ich dies für Datenbankobjekte mache, die in sysobjects gespeichert sind.Abfrage aller benutzerdefinierten Typen von Sql Server?
Antwort
In SQL Server 2005 (und höher) Sie können dies tun
SELECT * FROM sys.Types WHERE is_user_defined = 1
Wenn Sie SQL Server 2000 verwenden, können Sie SysTypes verwenden. Ich denke, die Abfrage lautet wie folgt:
SELECT * FROM SysTypes WHERE xusertype > 256
Sie können dafür die Ansicht sys.types
verwenden. Wenn user_type_id
und system_type_id
unterschiedlich sind, haben Sie einen Benutzertyp.
Wie AakashM sagt, ist die sys.types
Ansicht nur von SQL Server 2005 und höher verfügbar.
BEARBEITEN: Ein besserer Weg, um zu bestimmen, ob ein Typ ein benutzerdefinierter Typ ist, ist die Markierung is_user_defined
(siehe die Antwort von Tim C).
Wenn Sie immer noch auf SQL Server 2000 (wie Ihre Verwendung von 'sysobjects
' schlägt), schauen Sie in systypes
. Wenn Sie auf SQL Server 2005 oder höher sind, als rwwilden sagt sollten Sie sys.types
verwenden (und bewegen sys.objects
zu verwenden, anstatt sysobjects
!)
Sie können die INFORMATION_SCHEMA Ansichten verwenden. INFORMATION_SCHEMA.ROUTINES hat UDFs und Stored Procs. INFORMATION_SCHEMA.TABLES enthält Tabellen und Ansichten.
Eigentlich system_type_id unterscheidet sich von user_type_id ist kein guter Hinweis. Beachten Sie, dass dies:
SELECT * FROM sys.Types
WHERE (system_type_id <> user_type_id)
AND is_user_defined = 0.
diese Rückkehr:
- hierarchyid
- Geometrie
- Geographie
- Sysname
So SELECT * FROM sys.types WHERE is_user_defined = 1
verwenden wie von Tim C aufgezeigt und Ronald Wildenberg
Es gibt keine Standardabfrage, um alle benutzerdefinierten Datenbanken allein zu erhalten. Wir können verwenden
select * from sys.databases
Aber es zeigt alle Datenbanken, ich benutze Server Management Studio. So habe ich standardmäßig die folgenden Datenbanken benannt: 'Master','tempdb','msdb','model'
So verwende ich immer diese folgende Abfrage, um die benutzerdefinierten Datenbanken zu erhalten.
select * from sys.databases where name not in('master','model','msdb','tempdb')
Es funktioniert für gut. Wenn Sie standardmäßig über zusätzliche Datenbanken verfügen, wird Folgendes angezeigt (Ressource, Verteilung, Berichtsservice, Berichtsservicetemp). Verwenden Sie einfach die Namen in dieser Abfrage.
- 1. Liste aller liquibase sql Typen
- 2. Auswahl aller Maximalwerte SQL-Abfrage
- 3. Abfrage zum Abrufen aller Fremdschlüsseleinschränkungen in SQL Server 2000
- 4. SQL Server - Abfrage von Geometriedaten
- 5. Alter benutzerdefinierten Typ in SQL Server
- 6. SQL Server-Abfrage
- 7. SQL Server-Abfrage-Problem
- 8. Gesamt SQL Server-Abfrage
- 9. Unterstützt EF 6 SQL Server 2014-Typen?
- 10. Zuordnen von benutzerdefinierten Typen im Entitätsframework
- 11. OCaml Sortierliste von benutzerdefinierten Typen
- 12. Simplify SQL Server Abfrage
- 13. SQL Server-Abfrage einfügen
- 14. Dynamische Abfrage SQL Server
- 15. SQL Liste aller benutzerdefinierten Funktionen in einer Datenbank
- 16. Microsoft SQL Server einfügen von Select-Abfrage
- 17. XML-Abfrage innerhalb von SQL Server
- 18. Abfrage Konvertierung von SQL Server nach SQLite
- 19. Auflisten aller Datenbanken, aller Tabellen und aller Spalten in einer SQL Server-Instanz
- 20. Aufzeichnen aller SQL Server-Einfügungen und -Updates
- 21. TypeScript/JavaScript - Import aller Typen
- 22. SQL-Abfrage zum Auflisten aller Ansichten in einer SQL Server 2005-Datenbank
- 23. SQL Server 2005 Anfänger Abfrage
- 24. SQL Server-Abfrage und Duplikate
- 25. psycopg2 Abfrage Parameter Typen
- 26. SQL Server - TSQL-Abfrage-Anweisung
- 27. Speichern von Einstellungen von benutzerdefinierten Typen
- 28. SQL Server 2005, Xml-Typen und ODBC?
- 29. SQL-Server: Spaltenweise Gesamt-SQL-Abfrage
- 30. SQL Server-Abfrage plötzlich langsam