인스턴스의 모든 데이터베이스에서 모든 동의어 목록을 보려고합니다. 대다수의 데이터베이스에는 동의어가 하나 뿐이지 만 각 인스턴스에는 수백 개의 데이터베이스가 있습니다. 이상적으로는이 같은보고 결과를 싶습니다전체 인스턴스의 모든 데이터베이스 및 해당 동의어 목록
열을 1 : 데이터베이스 이름
열 2 : 동의어 이름
열 3 :의 정확한 텍스트를 표시 할 기본 오브젝트 이름 (또는 다른 어떤 동의어)
이 쿼리는 원하는 작업보다 적은 작업을 수행하지만 단일 데이터베이스에서만 작동합니다.
select db_id(parsename(base_object_name, 3)) as dbid
, object_id(base_object_name) as objid
, base_object_name
from sys.synonyms;'
위의 쿼리를 변경하여 모든 데이터베이스에 대한 결과를 표시하려고 시도했지만 아래 쿼리로 끝났습니다. 실행을 실패하지는 않지만 결과를 산출하지는 못합니다. 올바른 열 이름을 가진 수백 개의 빈 테이블을 인쇄합니다. 인스턴스의 각 데이터베이스의 모든 동의어 중 하나 개 깨끗한 목록을 얻을 수있는 방법을 찾는 것 좀 도와 수 있다면
DECLARE @command varchar(1000)
SELECT @command = 'select db_id(parsename(base_object_name, 3)) as dbid
, object_id(base_object_name) as objid
, base_object_name
from sys.synonyms;'
EXEC sp_MSforeachdb @command
나는 매우 감사하게 될 것입니다.
매력처럼 작동합니다. 고맙습니다! – QWE