복붙노트

[SQL] SQL 서버 - 여기서 "sys.functions"인가?

SQL

SQL 서버 - 여기서 "sys.functions"인가?

SQL Server 2005는 제가 자주 사용하는 시스템 카탈로그에 큰 sys.XXX 전망이 있습니다.

왜 저장 프로 시저에 대한 정보를 볼 수있는 "sys.procedures"보기가 있지만 저장 기능에 대해 동일한 참조 할 "sys.functions"보기가 없습니다 : 무엇 나를 비틀하면이 무엇입니까?

누구의 사용은 기능을 저장하지 않습니다? 나는 예를 들면,하기에 매우 편리하게 찾을 수 계산 된 열 등!

sys.functions이없는 특정의 이유가 있나요, 또는에서 sys 카탈로그 뷰에 넣어 충분히 중요하게 고려되지 않았다 뭔가입니까 ?? 그것은 2008 SQL 서버에서 사용할 수있는 건가?

건배, 즙을 짜고 난 찌꺼기

해결법

  1. ==============================

    1.나는 UDF에 매우 편리 발견하고 나는 모든 시간을 사용합니다.

    나는 UDF에 매우 편리 발견하고 나는 모든 시간을 사용합니다.

    나는 확실히 마이크로 소프트의 이론적 근거는 SQL Server의 동등한 sys.functions을 포함하지 않는 무엇 아니에요 (2005 또는 SQL Server 2008, 지금까지 내가 말할 수있는)하지만 자신의 롤 쉬운만큼이있다 :

    CREATE VIEW my_sys_functions_equivalent
    AS
    SELECT *
    FROM sys.objects
    WHERE type IN ('FN', 'IF', 'TF')  -- scalar, inline table-valued, table-valued
    
  2. ==============================

    2.목록 기능에 대한 또 다른 방법은 INFORMATION_SCHEMA 뷰를 사용하는 것입니다.

    목록 기능에 대한 또 다른 방법은 INFORMATION_SCHEMA 뷰를 사용하는 것입니다.

    SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION'
    

    Microsoft 웹 사이트에 따르면 "정보 스키마 뷰는 SQL 서버 메타 데이터의 내부 시스템 테이블에 독립적 인 뷰를 제공한다. 중요한 변화는 기본 시스템 테이블이 변경되었습니다 있지만, 정보 스키마 뷰는 제대로 작동하려면 응용 프로그램을 가능하게." 즉, SQL 업그레이드됩니다으로 기본 시스템 테이블이 변경 될 수 있지만, 전망은 여전히 ​​동일하게 유지해야한다.

  3. ==============================

    3.이 유효한 2008 R2에서 어떤 당 SSMS가 생성 때 스크립트 함수의 DROP를 :

    이 유효한 2008 R2에서 어떤 당 SSMS가 생성 때 스크립트 함수의 DROP를 :

    SELECT  *
    FROM    sys.objects
    WHERE   type IN (N'FN', N'IF', N'TF', N'FS', N'FT') ;
    
    /*
    From http://msdn.microsoft.com/en-us/library/ms177596.aspx:
     FN SQL_SCALAR_FUNCTION
     FS Assembly (CLR) scalar-function
     FT Assembly (CLR) table-valued function
     IF SQL_INLINE_TABLE_VALUED_FUNCTION
     TF SQL_TABLE_VALUED_FUNCTION
    */
    
  4. ==============================

    4.그것은 더 자세한 아주 약간이지만,이 정확히 같은 일을한다 :

    그것은 더 자세한 아주 약간이지만,이 정확히 같은 일을한다 :

    select * from sys.objects where (type='TF' or type='FN')
    

    최대한 멀리 볼 수있는,이 중 SQL Server 2008의 아니에요.

  5. ==============================

    5.기억하기 쉽게 다음이 새로운 것을 추가하지 않습니다,하지만 난 발견 :

    기억하기 쉽게 다음이 새로운 것을 추가하지 않습니다,하지만 난 발견 :

    select * from sys.objects where type_desc like '%fun%'
    
  6. ==============================

    6.이 시도 :

    이 시도 :

    SELECT * FROM sys.objects
    where type_desc = 'SQL_SCALAR_FUNCTION'
    
  7. ==============================

    7.덧붙여 말하자면, 당신은 = 'FS'유형을 포함하고 싶지 않아요?

    덧붙여 말하자면, 당신은 = 'FS'유형을 포함하고 싶지 않아요?

    name    type    type_desc
    getNewsletterStats  FS  CLR_SCALAR_FUNCTION
    

    그 무엇 외부 DLL에서 파생 내 UDF에 대한과는 sys.objects의 대응의 항목

  8. ==============================

    8., LukeH의 대답 @에 확장하려면 아니라이 sys.sql_modules 테이블에 가입 필요로 함수 정의를 반환 할 수 있습니다. 그래서 이것에 대한 질의는 다음과 같습니다

    , LukeH의 대답 @에 확장하려면 아니라이 sys.sql_modules 테이블에 가입 필요로 함수 정의를 반환 할 수 있습니다. 그래서 이것에 대한 질의는 다음과 같습니다

    SELECT O.name as 'Function name', M.definition as 'Definition', O.object_id
    FROM sys.objects as O INNER JOIN sys.sql_modules as M
        ON O.object_id = M.object_id
    WHERE type IN ('FN', 'IF', 'TF')  -- scalar, inline table-valued, table-valued
    

    여기서, 상기 디스플레이 기능 명, 각각의 정의 오브젝트 ID.

  9. ==============================

    9.소유자 및 반환 유형을 포함하여 스칼라 함수의 풀러에 대한 설명 :

    소유자 및 반환 유형을 포함하여 스칼라 함수의 풀러에 대한 설명 :

    SELECT f.name, s.name AS owner, t.name as dataType, p.max_length, p.precision, p.scale, m.definition
    FROM sys.objects f
    JOIN sys.schemas s on s.schema_id = f.schema_id
    JOIN sys.parameters p on p.object_id = f.object_id AND p.parameter_id = 0
    JOIN sys.types t ON t.system_type_id = p.system_type_id 
    JOIN sys.sql_modules as m ON m.object_id = f.object_id
    WHERE type='FN';
    
  10. ==============================

    10.SQL 2000의 특정 오브젝트 이름에 대한 약간의 조정 :

    SQL 2000의 특정 오브젝트 이름에 대한 약간의 조정 :

    SELECT *
    FROM sysobjects
    WHERE type IN ('FN', 'IF', 'TF')
    

    또는

    SELECT *
    FROM dbo.sysobjects
    WHERE type IN ('FN', 'IF', 'TF')
    
  11. from https://stackoverflow.com/questions/468672/sql-server-where-is-sys-functions by cc-by-sa and MIT license