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_idsystem_type_id이 다른 경우 사용자 유형이 있습니다.

AakashM이 말한 것처럼 sys.types보기는 SQL Server 2005 이상에서만 사용할 수 있습니다.

편집 : 형식이 사용자 정의 형식인지 확인하는 더 좋은 방법은 is_user_defined 플래그를 확인하는 것입니다 (Tim C의 답변 참조).

1

여전히 SQL Server 2000에있는 경우 (sysobjects을 사용하는 것이므로) systypes을 확인하십시오. 2005 이상 SQL 서버에있는 경우 rwwilden 말한대로, 당신은 sys.types를 사용하는 (그리고 sysobjects보다는 sys.objects를 사용하여 이동!)한다 (위)

0

INFORMATION_SCHEMA보기를 사용할 수 있습니다. INFORMATION_SCHEMA.ROUTINES에는 UDF W 저장 프로 C가 있습니다. INFORMATION_SCHEMA.TABLES에는 테이블과 뷰가 있습니다.

0

실제로 user_type_id와 다른 system_type_id는 좋지 않습니다.

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

이 반환 :이 있습니다

  • 이 HIERARCHYID
  • 구조
  • 지리
  • 은 sysname

그래서 팀 C에 의해 지적되면서 SELECT * FROM sys.types WHERE is_user_defined = 1를 사용하고 Ronald Wildenberg

1

모든 사용자 정의 데이터베이스를 단독으로 가져 오는 표준 쿼리가 없습니다. 우리는

select * from sys.databases 

를 사용하지만, 나는 서버 관리 스튜디오를 사용하고있는 모든 데이터베이스를 보여줍니다. 그래서 기본적으로 나는 다음과 같은 데이터베이스 이름을 가지고 : 'Master','tempdb','msdb','model'

그래서 난 항상 사용자 정의 데이터베이스를 얻으려면이 다음 쿼리를 사용하십시오.

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

잘 작동합니다. 기본적으로 추가 데이터베이스가있는 경우 다음이됩니다 (resource, distribution, reportservice, reportservicetemp). 해당 쿼리의 이름 만 사용하면됩니다.

관련 문제