我需要從遠程數據庫中檢索一些數據,它是一種「更新管理器」,因此我的應用程序將連接到該遠程服務器以檢查是否有新更新。爲了執行遠程查詢,創建和刪除鏈接服務器時會出現哪些問題?
我使用網絡服務器來做「握手和驗證」工作,但後來我直接連接到遠程sql服務器來檢索數據。
網絡服務器將返回登錄信息(serverIP +端口,數據庫,用戶和密碼),當然用戶只是具有datareader(在表的子集上)權限的用戶。
我需要做的是執行一些遠程查詢來檢索所需的數據。這是我寫的(和它的作品):
CREATE PROCEDURE QueryRemoteServer
(@SERVER nvarchar(50),@FieldNames nvarchar(500), @DB nvarchar(50),
@Tablename nvarchar(100), @Login Nvarchar(50),@pwd Nvarchar(50))
AS
BEGIN
/* Creation of Linked Server including the If exists check */
if exists (Select name From sys.servers Where [Name][email protected])
exec sp_dropserver @SERVER, 'droplogins'
exec sp_addlinkedserver @SERVER
/* Creation of the login according to values returned from webserver */
exec sp_addlinkedsrvlogin @SERVER, 'FALSE', NULL, @Login, @pwd
/* exec the query (for simplicity I omitted the JOIN job) */
exec ('SELECT ' + @FieldNames +
' FROM ['+ @Server + '].' + @Db + '.dbo.' + @Tablename)
/* drop the created linked server */
exec sp_dropserver @SERVER, 'droplogins'
END
客戶將只需像這樣運行的東西:
exec QueryRemoteServer '127.0.0.1 , 4455','Field1, Field2',
'MyRemoteDB','MyRemoteTable','GuestUser','GuestPassword'
你能告訴我你的opionions對這種做法,告訴我這是你看到的主要缺點/好處?
我會看到的一個問題是,在他或她的正確思想中沒有dba會給用戶創建和刪除鏈接服務器的權利! – HLGEM 2010-09-07 19:33:07
在我的情況下,這是不是一個問題,因爲我總是dba。在一般情況下,你不僅僅是正確的。 – LaBracca 2010-09-08 12:16:42