2016-04-14 35 views
0

我們在AS400中有一個DB2數據庫。增加了一個鏈接服務器,一切進展順利,但偶爾表格被鎖定,即使我們正在做一些選擇查詢。考慮SQL Server中的表提示,鏈接服務器查詢(例如select * from ...)是否支持表提示?鏈接服務器查詢上的表提示

回答

0

令人懷疑,但我不確定。

您是使用openquery()還是4個部件名?

使用4點部分組成的名稱,像這樣的查詢:

select * from LNKSVRNAME.IBMINAME.MYSCHEMA.MYTABLE where somecolumn = '00335'; 

MYTABLE拉回所有行和不MS SQL Server上的WHERE過濾。

相反,使用OPENQUERY()像這樣:

select * from openquery(LNKSVRNAME, 'select * from MYSCHEMA.MYTABLE where somecolumn = ''00335'''); 

將查詢發送到的IBM i和僅從MYTABLE匹配的行被拉回至MS SQL服務器。

如果表格是專門鎖定的,那麼您可以做的不多。但是,如果您正在運行行鎖。你可能想看看下面的DB2 IBM i的條款

  • FOR READ ONLY
  • SKIP LOCKED DATAUSE CURRENTLY COMMITTEDWAIT FOR OUTCOME

因此,像這樣:

select * from openquery(LNKSVRNAME, 'select * from MYSCHEMA.MYTABLE where somecolumn = ''00335'' FOR READ ONLY USE CURRENTLY COMMITTED'); 

注意如果你實際上正在與AS/400,交談3210是你所有可用的。但是,如果您正在與運行相對較新版本的IBM i的相對較新的IBM POWER系統交流,那麼我所展示的concurrent-access-resolution子句應該可用。