Нельзя использовать модуль только в окне запроса, которое подключено к серверу

В настоящее время у меня проблема с SQL Server.

Я просто делаю такой запрос:

declare @var2 int
set @var2 = ((7500.50 * 100) % 100)

select @var2

Если я выполняю на локальном компьютере (окно запроса, подключенное к локальному), оно возвращает 50.

Но если я запускаю этот запрос в окне запроса, подключенном к моему офисному серверу, это приводит к:

Сообщение 8117, уровень 16, состояние 1, строка 2
Числовой тип данных операнда недопустим для оператора по модулю.
Сообщение 206, уровень 16, состояние 2, строка 2
Конфликт типа операнда: int несовместим с void тип

Я пробовал как в SQL Server 2005, так и в 2008.

Кто-нибудь сталкивался с такой же проблемой или знает решение?

Большое спасибо всем.


person charenth    schedule 27.07.2012    source источник


Ответы (1)


Проверьте уровень совместимости. сервера. Вероятно, это значение равно 80, что соответствует совместимости с SQL Server 2000. В SQL Server 2000 по модулю поддерживались только типы данных INT. В SQL 2005 и более поздних версий разрешены другие числовые типы данных и неявные преобразования произойдет, так как в вашей формуле у вас есть как числовые, так и целые типы данных.

Я нашел скрипт для изменения уровня совместимости на всех базах данных сервера с фильтрацией баз данных, которые вы не хотите менять.

person Sumo    schedule 27.07.2012
comment
Спасибо @Sumo за ваш быстрый ответ.‹br /›В целях совместимости мой партнер использовал другой компьютер, но делал то же, что и я, и у него не было таких проблем, как у меня. Так что проблема может быть связана с моим компьютером или моими SQL Server 2005 и 2008..‹br›‹br/›Кстати, извините за мой плохой английский ^^ - person charenth; 27.07.2012