0
我們在AS400中有一個DB2數據庫。增加了一個鏈接服務器,一切進展順利,但偶爾表格被鎖定,即使我們正在做一些選擇查詢。考慮SQL Server中的表提示,鏈接服務器查詢(例如select * from ...)是否支持表提示?鏈接服務器查詢上的表提示
我們在AS400中有一個DB2數據庫。增加了一個鏈接服務器,一切進展順利,但偶爾表格被鎖定,即使我們正在做一些選擇查詢。考慮SQL Server中的表提示,鏈接服務器查詢(例如select * from ...)是否支持表提示?鏈接服務器查詢上的表提示
令人懷疑,但我不確定。
您是使用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 DATA
或USE CURRENTLY COMMITTED
或WAIT 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
子句應該可用。