2017-03-01 1 views
-2

나는 sp_helptext의 내 결과를 통해 검색 쿼리를 작성하지만,하고 때로는 sp_helptext 출력이 : 대신의SQL Server의 sp_helptext가 다른 결과를 반환하는 이유는 무엇입니까?

enter image description here

:

enter image description here

내 원하는 수익을 얻을 수 어쨌든 있나요 매번 sp_helptext 형식?

그리고 이미지 1의 원인은 무엇입니까?

+2

에 오신 것을 환영합니다 :

SELECT ISNULL(D.referenced_server_name,@@SERVERNAME) + '.' + ISNULL(D.referenced_database_name,DB_NAME()) + '.' + D.Referenced_Entity_Name AS [Referenced Tables] FROM sys.procedures P INNER JOIN sys.sql_expression_dependencies D ON P.object_id = D.referencing_id WHERE P.name = 'MySProc' ; 

가 연결된 문자열을 반환합니다 스택 오버플로. 외부 그림보다는 항상 인라인 일반 텍스트로 소스 코드, 오류 메시지 및 기타 텍스트 정보를 제공하십시오. 텍스트는 검색 가능하고 재사용 가능하며 일반적으로 읽기 쉽습니다. 또한 태그를 사용하여 기술을 식별하는 것을 잊지 마십시오 (이 사이트는 모든 프로그래밍 언어를 다룹니다). –

+1

당신은 서식을 말하고자 했습니까? – TheGameiswar

+0

나는 그 질문이 완전히 명확하지 않다는 데 동의한다. 유닉스 스타일의 라인 피드를 가지고 있습니까? 그렇다면 Management Studio를 구성하는 방법, 출력을 후 처리하는 방법 또는'sp_helptext '자체를 변경하는 방법을 묻는 중입니까? –

답변

1

sp_helptext에는 일부 의도적 인 단점이 있고 일부 "예상치 못한"동작이 있습니다.

나는 그것을 사용하는 대부분의 사람들이 실제로 시스템 프로 시저에 들어가는 것이 아니라 documentation을 읽지 않았기 때문에 따옴표로 묶어서 프로 시저 자체의 실제 정의를 살펴 보았습니다. 이것은 일반적으로 좀 관해서보다 일관된 결과를 얻을 수

SELECT definition 
FROM sys.all_sql_modules S 
WHERE OBJECT_NAME(S.object_id) = 'MySProc' 
; 

, 또한 내가 할 필요가있는 경우 즉시 변경을 수행 할 수 있습니다

내가 대신 시스템 테이블에 저장된 정의를 사용하는 경향이있다. sp_helptext를 사용하면 많은 사람들이 출력에 변수를 저장 한 다음 변수 값을 수정합니다. SELECTsys.all_sql_modules입니다. 변수 조작없이 반환 된 값에 직접 원하는 수정을 수행 할 수 있습니다.

(단,이 동일한 쿼리는 여기 sp_helptext에서 작동하며, 정의를 살펴보고 자신의 정의에 어떤 일이 일어나고 있는지 이해하기 위해 오신 것을 환영합니다. 실수로 실수하지 않도록하십시오. ALTER it ...)

"왜 이런 일이 일어 났습니까?"라는 질문에 정확히 답변하지 않는다는 것을 알고 있습니다. 다른 사람의 답변이 도움이되기를 바랍니다. 그 동안 시스템 테이블을 살펴보고 어쩌면 그들이 작동중인 솔루션을 제공하는지 확인해보십시오.

행운을 빈다.

먼저 편집 : 당신이 사용할 수있는 SQL의 버전에 따라 종속성을 찾을 찾고 있다면 :

[Referenced Tables] 
-------------------- 
ServerName\InstanceName.DBName.TableName 
+0

감사! DB1의 procs이 DB2의 테이블에 종속적인지 확인하려고합니다. sp_helptext를 사용할 때 (부분 문자열을 사용할 때) 결과가 이미지 2와 같은 경우에만 작동합니다. DB2에서 쿼리되는 실제 테이블 이름의 전체 목록이 필요합니다. – Jacquespax

+0

실제로 데이터베이스 간의 종속성을 찾으십니까? I.E. DB1의 SProc1은 DB2의 테이블을 쿼리합니까? – 3BK

+0

예, 각 proc의 실제 테이블 이름입니다. 내 쿼리가 작동합니다 ... sp_helptext가 멋지게 하하를 재생할 때만 (이미지 2처럼) – Jacquespax

관련 문제