2017-07-18 88 views
-1

以下是我面臨的問題: -觸發定義爲NULL時使用鏈接的服務器

  1. 當我運行在服務器A folllowing,我得到的輸出,當我運行出現

    SELECT  tbl.Name, tr.name, c.Text 
        FROM  sys.sysobjects tr 
          Inner Join sys.sysobjects tbl On tr.parent_obj = tbl.id 
          Inner Join sys.syscomments c On tr.id = c.id 
        WHERE  tr.xtype = 'TR' And tbl.xtype = 'U' 
    
  2. 問題來自服務器B的相同查詢並將服務器A作爲鏈接服務器,我沒有輸出。

    SELECT tbl.Name, tr.name, c.Text 
        FROM LinkedServerA.Database.sys.sysobjects tr 
        Inner Join LinkedServerA.Database.sys.sysobjects tbl On tr.parent_obj = tbl.id 
        Inner Join LinkedServerA.Database.sys.syscomments c On tr.id = c.id 
        WHERE tr.xtype = 'TR' And tbl.xtype = 'U' 
    
  3. 即使我運行下面的我得到NULL:

    選擇文本從LinkedServerA.Database.sys.syscomments

任何有識之士將不勝感激!

+0

是您的鏈接服務器的設置是否正確?該聲明適用於查詢鏈接服務器。 –

回答

0

這意味着您的登錄信息使用其他登錄信息映射到鏈接服務器,因此您無權查看使用鏈接的服務器登錄名查看元數據。

您可以檢查您的登錄,以及你的數據庫用戶/鏈接服務器上使用此代碼的作用:

select * 
from openquery([YourLinkedServer], 'select system_user as linked_srvr_login, 
          name from YourDB.sys.user_token where principal_id > 0') 
+0

以下是查詢你要求運行 linked_srvr_login \t名 linkedserverlogin \t linkedserverlogin linkedserverlogin \t的db_datareader –

+0

,你看你是不是映射到鏈接服務器登錄名,但linkedserverlogin這僅僅是一個擁有db_datareader的結果。所以你沒有權限查看觸發器元數據 – sepupic

相關問題