首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

同一條SQL語句,兩次運行為何會有不同的結果解决方法

2013-10-24 
同一條SQL語句,兩次運行為何會有不同的結果有兩個實例MSSM1和MSSM2在不同的PC上,有一條SQL語句,訪問的表都

同一條SQL語句,兩次運行為何會有不同的結果
有兩個實例   MSSM1   和   MSSM2     在不同的PC上,

有一條SQL語句,訪問的表都在  MSSM2   上, 

------------------------------以下為該SQL語句在MSSM1上的執行情況----------------------------

該語句在 MSSM1 的環境下執行,因為兩個實例沒有互相註冊,所以在SQL語句中,所有的table前都加了連接字串:
from OPENDATASOURCE('sqloledb','data source=10.10.10.10;user id=sa;password=xxxxx').dbname.dbo.table1
a,

    OPENDATASOURCE('sqloledb','data source=10.10.10.10;user id=sa;password=xxxxx').dbname.dbo.table2 b,
……………………
最後得到的結果集有505條記錄

--------------------以下為該SQL語句在MSSM1上的執行情況------------------------
將該SQL語句COPY到MSSM2的環境下執行,因為要訪問的table都在本地,所以去掉了table前面的連接字串: 
from dbname.dbo.table1
a,dbname.dbo.table2 b,
……………………
得到的結果集有560條數據!

--------------------以下為多次驗證的執行情況------------------------
嘗試多次,兩次執行的結果還是不一致,十分鬱悶,這可是同一條SQL語句,只是因為去掉了table前面的連接字串,爲什麽運行結果不一致呢。
1、我都是在SA賬號下執行的,所以不會是權限方面的問題
2、SQL語句我是複製黏貼來執行的(僅僅只是去掉table前面的連接字串),且重複過多次,所以不會是SQL語句輸錯的問題
3、我請其他同事幫我驗證,他們得到的結果跟我一樣,所以也不應該是環境的問題

最後我直接將MSSM1上執行的SQL語句直接COPY到MSSM2的環境上,這次我沒有去掉table前的連接字串,與在MSSM1上執行的結果相同,是505條記錄。


請有遇到過這種情況的大俠講解一下原因,小弟不勝感激!


加了order by 的結果
个人认为不会,虽然你在远程执行,但是在本机还是可以抓到在本机运行的SQL语句,单独拎出来执行看看效果。
[解决办法]
怀疑数据不是静止的喔..

热点排行