Порядок (nolock) и таблица искажает на SQL Server

Просто помните, что 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 миллиардов. Ошибочный фактор становится выше большее, Вы идете, конечно, но Вам не нужно точное запоминаемое значение (При необходимости в нем необходимо использовать предопределенную константу для него так или иначе). Приближенное значение достаточно хорошо для того, чтобы замечать, когда что-то могло бы быть опасно близко к переполнению.

16
задан Matt 28 July 2009 в 15:16
поделиться

2 ответа

Проверьте уровень совместимости вашей базы данных.

Для работы этого синтаксиса должно быть 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'.
9
ответ дан 30 November 2019 в 23:00
поделиться

Я не уверен, но, возможно, это вызвано уровнем совместимости ?

Поскольку SQL 2005 по умолчанию правильный синтаксис подсказки - WITH (NOLOCK) и, возможно, в этом причина.

4
ответ дан 30 November 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: