2009-06-16 7 views

Antwort

6

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 
1

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).

1

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!)

0

Sie können die INFORMATION_SCHEMA Ansichten verwenden. INFORMATION_SCHEMA.ROUTINES hat UDFs und Stored Procs. INFORMATION_SCHEMA.TABLES enthält Tabellen und Ansichten.

0

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

1

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.