Hi,
You may use these two ways:
1) Build dynamic query:
SET NOCOUNT ON
DECLARE @db NVARCHAR (50), @sqlStr NVARCHAR(4000)
DECLARE @tbl_dbs TABLE (dbName NVARCHAR(50))
INSERT @tbl_dbs SELECT Name from master.sys.databases
WHILE EXISTS
(SELECT dbName FROM @tbl_dbs)
BEGIN
SELECT TOP 1 @db = dbName
, @sqlStr = 'INSERT ABC..YourTable (ObjectName, name,type,type_desc ) SELECT schema_name(schema_id)as ObjectName, name,type,type_desc
from ' + @db + '.sys.objects
where schema_name(schema_id) <> ''dbo''
and type in(''U'',''P'',''V'', ''FN'',''TF'',''IF'',''PK'',''UQ'')'
FROM @tbl_dbs
EXEC master.dbo.sp_executesql @sqlStr
DELETE FROM @tbl_dbs
WHERE dbName = @db
END
2) Use undocumented stored procedure (which is not actually recommended):
EXEC sp_MSforeachDB 'INSERT ABC..YourTable (ObjectName, name,type,type_desc )
SELECT schema_name(schema_id)as ObjectName, name,type,type_desc
from ?.sys.objects
where schema_name(schema_id) <> ''dbo''
and type in(''U'',''P'',''V'', ''FN'',''TF'',''IF'',''PK'',''UQ'')'