2017-11-22 19 views
0

주어진 어셈블리에서 모든 func/procs를 정의하는 SQL 코드를 작성하는 절차를 작성하고 싶습니다. 절차 및 스칼라 함수는 간단합니다. iterating sys.assemblies/modules/objects/parameters create func/proc에 대한 코드를 준비 할 수 있습니다.외부 func/proc의 전체 정의를 검색하는 방법?

그러나 tv 함수에 의해 반환 된 테이블의 정의가 저장된 위치를 찾을 수 없습니다. 그와 같은 기능의 스크립팅이 가능하므로 - 테이블의 정의는 somwhere로 작성되어야합니다.

그런데 - 두 번째 질문 : C# 코드 기반의 func/proc에 대한 sql 정의를 만드는 데 사용할 수있는 도구가 있습니까? ?

답변

0

테이블, 테이블 반환 함수 (인라인, SQL 다중 문장 및 SQLCLR) 및 뷰와 마찬가지로 뷰는 sys.columns 시스템 카탈로그 뷰 (및 sys.all_columns)에서 유지 관리됩니다.

SELECT obj.[name], obj.[type_desc], col.[name] 
FROM sys.objects obj 
INNER JOIN sys.columns col 
     ON col.[object_id] = obj.[object_id] 
ORDER BY obj.[type_desc], obj.[name], col.[name]; 

완전한 데이터 유형 이름을 얻으려면 sys.types에 가입해야합니다.

  1. (국회 내에서 SQLCLR 방법의 경우) T-SQL 래퍼 객체는 당신이 쓴 스크립트에 의해 생성 된 경우 :

    그러나, 이후 당신이하고있는 사물을 스크립팅하는 아주 작은 지점이있다 그런 다음 CREATE 문이 이미 있고

  2. Visual Studio가 있거나없는 SSDT에서 T-SQL 래퍼 객체를 만든 경우 "생성"스크립트가 이미 생성되어있는 경우 (생성 된 것으로 선택한 경우) 각 빌드시) 및 증분 "게시"스크립트를 사용합니다.

두 경우 모두 이러한 개체는 이미 가지고있는 T-SQL 스크립트로 만들어졌습니다. 않는 한, 당신은 개체와 배포 스크립트를 가지고있는 데이터베이스를 어떤 이유로 든 사용할 수 없습니다.

C# 코드를 기반으로 func/proc의 T-SQL 정의를 만드는 데 사용할 수있는 도구가 있습니까?

데이터베이스 또는 DLL/어셈블리에서? 데이터베이스에서 모든 유형의 객체를 스크립팅하는 데 사용할 수있는 몇 가지 도구가 있습니다. .NET SMO 클래스를 사용하여 데이터베이스의 정의를 스크립트 아웃 할 수도 있습니다. DLL/어셈블리를 검사하려면 .NET Reflection 클래스를 사용하여 각 메서드를 반복하고 SqlFunction, SqlProcedure, SqlFacet 특성/데코레이터를 확인해야합니다.

+0

> 어떤 이유로 든 배포 스크립트를 사용할 수 없습니다. – DueGe

+0

Simple - thx :-) 두 번째 질문은 소스 코드 (C#) 또는 DLL을 말합니다. – DueGe