Set variable within a dynamic query and for each database obtain the user result with the role 'db_owner'
and represent them in '1'
if you find results and '0'
if you do not find.
BEGIN
DECLARE @baseDeDatos VARCHAR(50)
DECLARE @inicio INT
DECLARE @contador INT
DECLARE @3_13 INT
SET @inicio = (
SELECT
MIN(database_id)
FROM
sys.databases
WHERE name IS NOT NULL
and name not in ('master','tempdb','model','msdb','ReportServer','ReportServerTempDB'))
WHILE (@inicio <= (SELECT MAX(database_id) FROM sys.databases))
BEGIN
SELECT
@baseDeDatos = name
FROM
sys.databases
WHERE database_id = @inicio
PRINT @baseDeDatos
BEGIN
EXEC (N'
USE [' + @baseDeDatos + '];
IF (SELECT
COUNT(*)
FROM
sys.database_principals dbp
INNER JOIN
sys.database_role_members drm
ON dbp.principal_id = drm.member_principal_id
INNER JOIN
sys.database_principals dbpt
ON drm.role_principal_id = dbpt.principal_id
WHERE dbpt.name = ''db_owner'' and dbp.name <> ''dbo'') > 0
BEGIN
SET [' +@3_13 +'] = 1
END
ELSE
BEGIN
SET [' +@3_13 +'] = 0
END ');
END
SET @inicio = @inicio + 1;
END
END