none
SQL權限問題,利用Linked Server 建view user存取的相關權限 RRS feed

  • 問題

  • 今天我們有一個外部廠商要存取我們資料庫的某些資料
    由於公司不想讓廠商直接連到我的主要的SQL server(假設為A server)
    因此要另外架一台SQL,server(假設為B server),
    然後在B server利用linked server去A抓一些table建成view存在B server
    在B server上開帳號給廠商,讓廠商帳號只能讀 B server上的某些view
    但問題是,廠商的權限並無法存取linked server,所以要select view 時就會失敗

    訊息 18456,層級 14,狀態 1,行 1
    連結伺服器 "XXXXX" 的 OLE DB 提供者 "SQLNCLI" 傳回訊息 "無效的連線字串屬性"。

    有解決的方法嗎?
    究竟要怎樣提供廠商存取view的權限..但又不讓他直接連到A server

    2010年1月7日 上午 01:32

解答

  • 剛才測了一下
    要先在A建一個只能select view_A 的 account
    然後在B用A這個account來建立 linked server的連線
    (同時在安全性裏 選擇廠商的account去對應A的account)
    這樣一來應該就OK了


    2010年1月7日 上午 02:52

所有回覆

  •  
    您好..

    我有一點搞不懂,view是已經存在B Server了嗎?
    如果是,應該LinkServer就沒意義了
    如果不是,您是用什麼方式是設定連LinkServer A ,或許可以試著在Server A,建立一個sql 驗証的account,權限只有讀取該view,後續就 select * from [ServerA].DatabaseName.xxx.view名稱應該就可以了吧...

    補充一下 :之後再ServerB去設LinkServer A時,就可用先前在ServerA新建立的sql account去連接LinkServer A
                 
    • 已編輯 Tim Hsu 2010年1月7日 上午 03:41 補充說明
    2010年1月7日 上午 02:13
  •  其實B裏面的view 是直接利用link server select 出來的
    SELECT     *
    FROM         [serverA].dbA.dbo.XXXXX AS XXXXview_1

    也就是B server根本就沒有table
    我想我大概知道問題所在了...我Bserver是用SA去linked Aserver
    所以廠商的帳號無法 呼叫 linked server
    我先用您說的方法來測看看

    2010年1月7日 上午 02:27
  • How did you map user in linked server?
    2010年1月7日 上午 02:52
  • 剛才測了一下
    要先在A建一個只能select view_A 的 account
    然後在B用A這個account來建立 linked server的連線
    (同時在安全性裏 選擇廠商的account去對應A的account)
    這樣一來應該就OK了


    2010年1月7日 上午 02:52
  • 因為我的是中文版
    (連結伺服器屬性)linked server properties -> (安全性)security tab,
    我勾選"使用登入的目前安全性內容建立"

    假設我給廠商的帳號是 userB
    自己用來建linked server的 帳號是 serverA上的 userA

    我就在本機伺服器與遠端伺服器登入對應的項目中 加入一筆
    本機使用者   摸擬             遠端使使用者      遠端密碼
    userB         沒勾選             userA            XXXXXXXX   



    不曉得這樣設定對不對,會不會有問題?

    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'serverB',@useself=N'False',@locallogin=N'userB',@rmtuser=N'userA',@rmtpassword='########'



    2010年1月7日 上午 06:14
  • Sounds good.
    2010年1月7日 下午 02:30