Files
DBAdmin/inbox/SQL-Server/security/sec_guest_account_check_01.sql
2026-05-18 06:40:19 +00:00

41 lines
1.0 KiB
Transact-SQL

--guest users
USE master;
GO
if not exists (select name from sys.databases where name = 'SQLAdmin')
create database SQLAdmin
go
declare @name sysname
declare @cmd varchar(4000)
DECLARE databases_cursor CURSOR FOR
SELECT name FROM sys.databases where state in (0)
order by name
create table #guest_users (
database_name sysname, principal_name sysname, permission_name nvarchar(128), state_desc nvarchar(6)
)
OPEN databases_cursor;
FETCH NEXT FROM databases_cursor into @name;
WHILE @@FETCH_STATUS = 0
BEGIN
set @cmd = 'use ' + @name + ';
insert into #guest_users
SELECT ''' + @name + ''' as database_name, name, permission_name, state_desc
FROM sys.database_principals dpr
INNER JOIN sys.database_permissions dpe
ON dpr.principal_id = dpe.grantee_principal_id
WHERE name = ''guest'' AND permission_name = ''CONNECT''
'
exec (@cmd)
FETCH NEXT FROM databases_cursor into @name;
END
select * from #guest_users order by database_name asc
drop table #guest_users
CLOSE databases_cursor;
DEALLOCATE databases_cursor;
GO