2012-07-27 19 views
1

目前我遇到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

有誰臉試過不兼容同樣的問題或知道解決方案?

非常感謝。

回答

3

檢查服務器的compatibility level。它很可能在80,這是SQL Server 2000的兼容性。在SQL Server 2000中,模只支持INT數據類型。在SQL 2005 and up中,允許其他數字數據類型,並且會發生隱式轉換,因爲在您的公式中,您有數字和整數數據類型。

我找到了一個script來修改服務器的所有數據庫的兼容性級別,同時過濾您不想更改的數據庫。

+0

感謝@Sumo的快速回復。
爲了可計算性的原因,我的合作伙伴使用了不同的計算機,但是照我所做的那樣工作,他沒有遇到像我這樣的問題。所以問題可能來自我的電腦或我的SQL Server 2005和2008 ..

順便說一句,對不起,我的英語不好^^ – charenth 2012-07-27 06:45:05