none
SQL2008 建置linkDB後,truncate table問題請教 RRS feed

  • 問題

  • 有DB(A)建置linkDB to DB(B)
    建置完成後
    select COUNT (*) from  "DB(B)\instancename".dbname.sche_name.tstab
    delete from "DB(B)\instancename".dbname.sche_name.tstab
    以上動作皆可完成

    truncate table "DB(B)\instancename".dbname.sche_name.tablename
    出現錯誤訊息(找不到物件 "tstab",原因是物件不存在,或您沒有權限)

    後來將權限開到sysadmin,也是一樣,不知問題出在哪 ???

    2011年9月16日 上午 03:48

所有回覆

  • 請改用 EXECUTE 陳述式,以便將命令傳送到連結伺服器進行執行:

     

    EXEC ( 'truncate table "DB(B)\instancename".dbname.sche_name.tablename' )
    AT LinkerServerName
    

    參考資料:EXECUTE (Transact-SQL)

     



    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」
    2011年9月16日 上午 04:22
    版主
  • 有DB(A)建置linkDB to DB(B)
    建置完成後
    select COUNT (*) from  "DB(B)\instancename".dbname.sche_name.tstab
    delete from "DB(B)\instancename".dbname.sche_name.tstab
    以上動作皆可完成

    truncate table "DB(B)\instancename".dbname.sche_name.tablename
    出現錯誤訊息(找不到物件 "tstab",原因是物件不存在,或您沒有權限)

    後來將權限開到sysadmin,也是一樣,不知問題出在哪 ???

    How did you map user in linked server? That remote user needs proper permisison to truncate table.
    2011年9月16日 下午 05:30
  • EXEC ( 'truncate table "DB(B)\instancename".dbname.sche_name.tablename' )
    AT LinkerServerName
    ==>

    執行後 依然出現==>訊息 4701,層級 16,狀態 1,行 1
    找不到物件 "tstab",原因是物件不存在,或您沒有權限。

    為了釐清是物件表示方法有錯,還是權限問題,我將語法直接在DB(B)的本機執行

    發現==>

    delete from "DB(B)\instancename".dbname.sche_name.tstab ==> 本機可執行

    truncate table  dbname.sche_name.tstab ==> 本機可執行

    truncate table "DB(B)\instancename".dbname.sche_name.tstab => 本機無法執行,

    出現相同的錯誤訊息... 物件不存在,或您沒有權限

     

    2011年9月20日 上午 01:33
  • It's permission issue, did you check user mapping in linked server?

     

    2011年9月20日 上午 01:44
  • dear rmiao

            我是用 "使用此安全性內容建立"的方式建立linkDB,帳號為 linkacc1

            為了測試是否為權限問題,我已將帳號linkacc1於 DB(B)賦予sysadmin權限

       truncate table 依然出現 "物件不存在,或您沒有權限"

       是我建立linkDB的方式不對嗎... 還是...

     

       

    2011年9月22日 上午 04:37
  • Is linkacc1 a valid sql login on remote server you linked to? Can you truncate table with that id on remote server directly?
    2011年9月22日 下午 01:49
  •  Can you truncate table with that id on remote server directly?

      linkacc1 於遠端主機直接登入後

     可以執行 truncate table  dbname.sche_name.tstab

    2011年9月23日 上午 06:45
  • Ok, which sql id did you use on server a? DId you map that id to linkacc1 in linked server?
    2011年9月23日 下午 01:41
  • EXEC ( 'truncate table "DB(B)\instancename".dbname.sche_name.tablename' )
    AT LinkerServerName
    ==>

    執行後 依然出現==>訊息 4701,層級 16,狀態 1,行 1
    找不到物件 "tstab",原因是物件不存在,或您沒有權限。

    為了釐清是物件表示方法有錯,還是權限問題,我將語法直接在DB(B)的本機執行

    發現==>

    delete from "DB(B)\instancename".dbname.sche_name.tstab ==> 本機可執行

    truncate table  dbname.sche_name.tstab ==> 本機可執行

    truncate table "DB(B)\instancename".dbname.sche_name.tstab => 本機無法執行,

    出現相同的錯誤訊息... 物件不存在,或您沒有權限

     


    請確認您的 執行個體 的路徑是正確的

    由於您的描述不清楚,個人認為您執行的指令應該是

    EXEC ( 'truncate table dbname.sche_name.tablename' )
    AT LinkerServerName


    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」
    2011年10月3日 上午 04:15
    版主