跨服務器進行數據查詢中出現的問題

在最近的項目中由於出帳和計費的數據不在同一臺服務器上,需要用到跨庫查詢.

現把查詢語句給出

select * into tmptable from openquery([demo],''select * from demoinfo.dbo.出帳(''200812''')''),

 

 

這裏需要對遠程服務器進行註冊

 

註冊方式如下:

Exec sp_droplinkedsrvlogin DBVIP,Null
Exec sp_dropserver DBVIP

EXEC  sp_addlinkedserver
      @server='DBVIP',--被訪問的服務器別名 
      @srvproduct='',
      @provider='SQLOLEDB',
      @datasrc='Server2'   --要訪問的服務器


EXEC sp_addlinkedsrvlogin
     'DBVIP', --被訪問的服務器別名
     'false',
     NULL,
     'sa', --帳號
     'thankyoubobby' --密碼


Select   *   from DBVIP.pubs.dbo.orders   

 

如果你要訪問的遠程服務器不能使用機器名進行訪問的話,那麼需要使用ip地址替換Server2來實現.

 

參考資料:http://www.cnitblog.com/MartinYao/archive/2007/04/12/25647.aspx

 

在具體使用中

SELECT * FROM OPENQUERY(demo ,'select * from tbdemo' )

UPDATE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE id = 101')
SET name = 'hello';

INSERT OPENQUERY (demo, 'SELECT id FROM tbdemo')
VALUES ('hello');

DELETE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE name = ''hello''');

 

如果數據量比較小,那麼ok,沒有什麼事了.如果數據量比較大,查詢時間超長,報如下錯誤:

已以用戶 SQLDATA 的身份執行。 鏈接服務器 "demo" 的 OLE DB 訪問接口 "SQLNCLI" 報錯。由於達到了資源限制,提供程序終止了執行。 [SQLSTATE 42000] (錯誤 7399)  無法對鏈接服務器 "demo" 的 OLE DB 訪問接口 "SQLNCLI" 執行查詢"''select * from demoinfo.dbo.出帳(''200812''')"。 [SQLSTATE 42000] (錯誤 7320).  該步驟失敗。 

Server:Msg 7399, Level 16, State 1, Line 1 OLE DB provider 'SQLOLEDB' reported an error.Execution terminated by the provider because a resource limit was reached.[OLE/DB provider returned message:Timeout expired]

 

那麼首先在查詢中使用DBCC TRACEON (7300, 3604) 語句,然後執行查詢,則您可能會在錯誤信息中看到其他信息

 

我在使用了之後返回的錯誤信息是:

DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯繫。
鏈接服務器"demo"的 OLE DB 訪問接口 "SQLNCLI" 返回了消息 "查詢超時已過期"。
消息 7399,級別 16,狀態 1,第 1 行
鏈接服務器 "demo" 的 OLE DB 訪問接口 "SQLNCLI" 報錯。由於達到了資源限制,提供程序終止了執行。
消息 7320,級別 16,狀態 2,第 1 行
無法對鏈接服務器 "demo" 的 OLE DB 訪問接口 "SQLNCLI" 執行查詢''select * from demoinfo.dbo.出帳(''200812''')"。

 

則對超時時間進行修改.

 

使用以下代碼將遠程查詢超時值設置爲 0(無限等待):
sp_configure 'remote query timeout', 0
go
reconfigure with override
go

參考資料:http://support.microsoft.com/kb/314530

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章