-- put all @DBNames in to a table ( or query from the schema tables)
declare @DBName varchar(max) = ''
-- Write a Cursor and assign the valuues to @DBName
Declare @dynamicSQL varchar(max) =
'select ''X1'' Company, convert(VARCHAR(8),DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) +1, -1),112) PeriodEnd,
SUM(balfwd + debits - credits) Balance, glcodes.Gl_Code + glcodes.[DESC] AccountName
from ' +
@DBName + '.dbo.glsmry
inner join ' +
@DBName + '.dbo.glcodes on glsmry.GL_CODE = glcodes.GL_CODE
where (glcodes.[type] = ''A1'')
and glsmry.PERIOD_ID like convert(VARCHAR(8),DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) +1, -1),112)
group by glcodes.GL_CODE, glcodes.[desc]'
Exec (@dynamicSQL)
Или попробуйте следующее (я не тестировал это - может потребоваться настройка, если это не так)
EXEC sp_MSForEachDb '
if ''[?]'' not in (''[master]'', ''[model]'',''[msdb]'',''[tempdb]'')
Begin
select ''X1'' Company, convert(VARCHAR(8),DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) +1, -1),112) PeriodEnd,
SUM(balfwd + debits - credits) Balance, glcodes.Gl_Code + glcodes.[DESC] AccountName
from [?].dbo.glsmry
inner join [?].dbo.glcodes on glsmry.GL_CODE = glcodes.GL_CODE
where (glcodes.[type] = ''A1'')
and glsmry.PERIOD_ID like convert(VARCHAR(8),DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) +1, -1),112)
group by glcodes.GL_CODE, glcodes.[desc]
End
'