모든 데이터베이스의 스키마 이름과 함께 모든 저장 프로 시저의 목록을 검색하는 방법에 대해 조언 해 줄 수 있습니까? 귀하의 의견을 보내 주셔서 감사합니다! 단일 데이터베이스에 대한SQL Server 2008의 모든 데이터베이스에서 모든 저장 프로 시저 얻기
4
A
답변
10
CREATE TABLE #x(db SYSNAME, s SYSNAME, p SYSNAME);
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'INSERT #x SELECT ''' + name + ''',s.name, p.name
FROM ' + QUOTENAME(name) + '.sys.schemas AS s
INNER JOIN ' + QUOTENAME(name) + '.sys.procedures AS p
ON p.schema_id = s.schema_id;
' FROM sys.databases WHERE database_id > 4
EXEC sp_executesql @sql;
SELECT db,s,p FROM #x ORDER BY db,s,p;
DROP TABLE #x;
1
:
select s.name + '.' + p.name as sproc_name_with_schema
from sys.procedures as p inner join
sys.schemas as s on s.schema_id = p.schema_id
당신은 그것은 모든 데이터베이스에 필요한나요? 귀하의 질문에 약간 불분명합니다. 사용자 정의 프로 시저, 뷰, 함수, 테이블 값 함수를 검색하는 모든 데이터베이스
declare @Sprocs as Table (DBName VarChar(64), SprocName VarChar(128))
insert into @Sprocs
execute sp_MSforeachdb N'use ?; select ''?'', s.name + ''.'' + o.name from sys.all_objects as o inner join sys.schemas as s on s.schema_id = o.schema_id where o.type = ''P'''
select * from @Sprocs
2
는 다음을 도와 (위 Habo 기준) 수
declare @Sprocs as Table (DBName VarChar(64), SchemaName varchar (128),
StoredProcName VarChar(128),
type varchar(10), type_desc varchar(128),
create_date datetime, modify_date datetime, is_MS_Shipped int)
insert into @Sprocs
execute sp_MSforeachdb N'use ?; select ''?'',
s.name as SchemaName, o.name as StoredProcName,
type, type_desc, create_date, modify_date, is_MS_Shipped
from sys.all_objects as o inner join sys.schemas as s
on s.schema_id = o.schema_id
where o.type in (''P'', ''V'', ''PC'', ''FN'', ''TF'')
and is_ms_shipped = 0'
select * from @Sprocs
where DBName not in ('master', 'tempdb', 'model', 'msdb', 'dba')
order by DBName, SchemaName, type, StoredProcName
'U'를 추가하여 사용자 생성 표를 가져옵니다.
1
시간 테이블을 삽입하지 않고 첫 번째 대답에 대한 대안 :
declare @sql varchar(max) = '';
select
@sql += ' ' +
'union all ' +
'select ''' +
dat.name + ''' as bas, b.name as sch, a.name as pro ' +
'from ' +
'[' + dat.name + '].[sys].procedures as a ' +
'inner join [' + dat.name + '].[sys].schemas as b on a.schema_id = b.schema_id'
from sys.databases as dat;
set @sql = RIGHT(@sql, LEN(@sql) - 11);
exec(@sql);
print @sql;
관련 문제
- 1. SQL Server 2008의 저장 프로 시저
- 2. 모든 데이터베이스에서 프로 시저 실행
- 3. SQL Server : 저장 프로 시저 복사
- 4. SQL Server - 저장 프로 시저
- 5. SQL Server 2008의 저장 프로 시저 사용 내역
- 6. SQL Server 2008의 저장 프로 시저 테이블 매개 변수와
- 7. SQL Server 2008의 기본 매개 변수 값 저장 프로 시저
- 8. 여러 서버의 여러 데이터베이스에서 저장 프로 시저 실행 SQL Server
- 9. 생성 날짜별로 나열된 모든 저장 프로 시저?
- 10. 저장 SQL Server 저장 프로 시저
- 11. SQL Server - 내 저장 프로 시저 보호
- 12. SQL Server 2008의 검색
- 13. Sql Server 2008 재귀 저장 프로 시저
- 14. SQL Server 저장 프로 시저 DELETE
- 15. SQL Server 2008의 테이블 열에 대한 모든 참조 찾기
- 16. SQL Server 저장 프로 시저 폴더/그룹
- 17. SQL Server 재귀 저장 프로 시저
- 18. SQL Server 저장 프로 시저 삭제 명령문
- 19. SQL Server 저장 프로 시저 솔루션
- 20. SQL 저장 프로 시저
- 21. SQL Server 저장 프로 시저 - 구문 오류
- 22. CLR 저장 프로 시저 v 일반 SQL 저장 프로 시저
- 23. SQL Server 2008의 모든 HierarchyID 노드 업데이트
- 24. 저장 프로 시저에 대한 모든 DDL 및 스크립트를 SQL Server 2008의 TFS에 저장하는 방법은 무엇입니까?
- 25. SQL Server 트리거, 저장 프로 시저
- 26. 레코드를 업데이트하는 SQL Server 저장 프로 시저
- 27. Doctrine + SQL Server 저장 프로 시저
- 28. SQL Server - 저장 프로 시저 성능 문제
- 29. SQL Server 저장 프로 시저 오류
- 30. SQL Server 저장 프로 시저 구문
이 sp_msforeachdb을 권장하지 마십시오. 문서화되지 않았고 지원되지 않으며 유연하지 않으며 데이터베이스를 건너 뛸 수 있습니다. http://sqlblog.com/blogs/aaron_bertrand/archive/2010/12/29/a-more-reliable-and-more-flexible-sp-msforeachdb.aspx http://sqlblog.com/blogs/aaron_bertrand/archive /2010/02/08/bad-habits-to-kick-relying-on-undocumented-behavior.aspx http://www.mssqltips.com/sqlservertip/2201/making-a-more-reliable-and-flexible- spmsforeachdb / –