You could create a cursor for this case. In cursot you could generate a executed string with control length of string. For example, if Length of string more than 2000 sym - you could execute this string and start to generate a new string.
For example, it could be as:
Decalre Cur Cursor for select One_Grant_Expression from ....
go
Open Cur
Declare @SQLText varchar(8000)
Declare @OneText varchar(1000)
fetch Cur into @OneTExt
while (@@sqlstatus = 0) do
begin
Set @SQLText = @SQLText + @OneText
if Length(@SQLText) > 2000
begin
exec (@SQLText)
Set @SQLText = ''
end
fetch Cur into @OneTExt
end
If Length(@SQLText) > 0 begin exec (@SQLText) end
Close Cur
go