Просто помните, что 2^ (10*x) приблизительно 10^ (3*x) - Вы, вероятно, уже привыкли к этому с килобайтами/кибибайты и т.д. Это:
2^10 = 1024 ~= one thousand
2^20 = 1024^2 = 1048576 ~= one million
2^30 = 1024^3 = 1073741824 ~= one billion
, Так как интервал использует 31 бит (+ ~1 бит для знака), просто удвойтесь 2^30 для получения приблизительно 2 миллиардов. Для неподписанного интервала с помощью 32 битов, дважды снова для 4 миллиардов. Ошибочный фактор становится выше большее, Вы идете, конечно, но Вам не нужно точное запоминаемое значение (При необходимости в нем необходимо использовать предопределенную константу для него так или иначе). Приближенное значение достаточно хорошо для того, чтобы замечать, когда что-то могло бы быть опасно близко к переполнению.
Проверьте уровень совместимости вашей базы данных.
Для работы этого синтаксиса должно быть 90
.
Только что проверено:
sp_dbcmptlevel 'test', 80
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
SELECT TOP 100 *
FROM master t (nolock)
LEFT OUTER JOIN master (nolock) t2 on t.id = t2.id
Сообщение 102, уровень 15, состояние 1, строка 3
Incorrect syntax near 't2'.
Я не уверен, но, возможно, это вызвано уровнем совместимости ?
Поскольку SQL 2005 по умолчанию правильный синтаксис подсказки - WITH (NOLOCK)
и, возможно, в этом причина.