declare @endday varchar(2) declare @strYear varchar(4) declare @strMonth varchar(2) declare @strDay varchar(2) DECLARE @sday varchar(50) DECLARE @eday varchar(50) DECLARE @cmd varchar(300) DECLARE @cmd2 varchar(300) DECLARE @name nvarchar(255) set @strYear = YEAR(getdate()) set @strMonth = datename(m,getdate()) set @strDay = datename(d,getdate()) set @endday = convert(int,@strDay)+1 IF LEN(@strMonth) = 1 SET @strMonth = N'0' + @strMonth IF LEN(@strDay) = 1 SET @strDay = N'0' + @strDay /* ------------------------------------------------- */ SET @sday = 'Daliy_LOG_'+@strYear + @strMonth + @strDay SET @eday = 'Daliy_LOG_'+@strYear + @strMonth + @endday /* ------------------------------------------------- */ DECLARE detach_db CURSOR READ_ONLY FOR SELECT name FROM sys.databases WHERE name >= @sday AND name <= @eday ORDER BY name OPEN detach_db FETCH NEXT FROM detach_db INTO @name WHILE @@fetch_status=0 BEGIN SET @cmd= ' Use ['+@name+'] CREATE USER [testuser] FOR LOGIN [testuser] EXEC sp_addrolemember '+''''+'db_datareader'+''''+','+''''+'testuser'+''' ' EXECUTE (@cmd) FETCH NEXT FROM detach_db INTO @name END CLOSE detach_db DEALLOCATE detach_db