Способ увеличения Guid не подходит для SQL Server, поскольку Guid - это структура с другим порядком байтов в группах байтов, пожалуйста, посмотрите:
http://sqlblog.com/blogs/alberto_ferrari/archive/2007/08/31/how-are-guids-sorted-by-sql-server.aspx
и обратите внимание на следующее:
Теперь, когда я запускаю модифицированный запрос Альберто, я получаю следующую последовательность:
3, 2, 1, 0, 5, 4, 7, 6, 9, 8, 15, 14, 13, 12, 11, 10
Это означает, что байт № 3 GUID является наименее значимым, а байт № 10 GUID - наиболее значимым [с точки зрения предложения SQL Server ORDER BY].
Вот простая функция для увеличения уникального идентификатора с учетом этого:
create function [dbo].[IncrementGuid](@guid uniqueidentifier)
returns uniqueidentifier
as
begin
declare @guid_binary binary(16), @b03 binary(4), @b45 binary(2), @b67 binary(2), @b89 binary(2), @bAF binary(6)
select @guid_binary = @guid
select @b03 = convert(binary(4), reverse(substring(@guid_binary,1,4)))
select @b45 = convert(binary(2), reverse(substring(@guid_binary,5,2)))
select @b67 = convert(binary(2), reverse(substring(@guid_binary,7,2)))
select @b89 = convert(binary(2), substring(@guid_binary,9,2))
select @bAF = convert(binary(6), substring(@guid_binary,11,6))
if (@b03 < 'FFFFFFFF')
begin
select @b03 = convert(binary(4), cast(@b03 as int) + 1)
end
else if (@b45 < 'FFFF')
begin
select @b45 = convert(binary(2), cast(@b45 as int) + 1)
end
else if (@b89 < 'FFFF')
begin
select @b89 = convert(binary(2), cast(@b89 as int) + 1)
end
else
begin
select @bAF = convert(binary(6), cast(@bAF as bigint) + 1)
end
return convert(binary(16), reverse(convert(char(4),@b03)) + reverse(convert(char(2),@b45)) + reverse(convert(char(2),@b67)) + convert(char(2),@b89) + convert(char(6),@bAF))
end
Обратите внимание, что байты 6 и 7 не увеличиваются, поскольку они содержат биты версии Guid.
Но, как отмечали другие, вы действительно не должны делать это. В вашем случае было бы лучше, если бы вы создали временную таблицу для этих Guids (с двумя столбцами: одно целое число в качестве индекса и второе с сгенерированными Guids).