新增一個用戶且只賦予它表A及表B select的權限
方法一:T-SQL語法,
exec sp_addlogin 'username','password','DB1' exec sp_adduser 'username' grant select on TB1 to username grant select on TB2 to username
方法二:圖形化界面操作
參考http://wenwen.soso.com/z/q230175388.htm
關鍵點:新建一個數據庫實例的登錄用戶,然后在具體的數據庫中“安全性”-->“用戶”設定表權限
分布式查詢--》鏈接服務器
遠程連接SQL2000時,需要用到系統存儲過程 sp_addlinkedserver和sp_addlinkedsrvlogin
例:我要通過查詢分析器連接172.20.40.208電腦上的Sea數據庫,並查詢"pknglst"表,代碼如下:
exec sp_addlinkedserver 'ITSV ', '', 'SQLOLEDB','172.20.40.208 ','','','sea'
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, 'sa ', 'confidence'
select * from ITSV.sea.dbo.pknglst
"ITSV"為連接此數據庫的別名。
"SQLOLEDB"為與此數據源相對應的 OLE DB 提供程序的唯一程序標識符 (PROGID)。MSSQL為SQLOLEDB。
以后不再使用時刪除鏈接服務器代碼
exec sp_dropserver 'ITSV ', 'droplogins '
exec sp_addlinkedserver 'ITSV', '', 'SQLOLEDB','127.0.0.1 '
EXEC sp_addlinkedsrvlogin
'ITSV', --被訪問的服務器別名
'false',
NULL,
'sa', --帳號
'zhouqing' --密碼
Exec sp_droplinkedsrvlogin 'ITSV',Null
Exec sp_dropserver 'ITSV'
今天我們有一個外部廠商要存取我們資料庫的某些資料
由於公司不想讓廠商直接連到我的主要的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
思路:
要先在A建一個只能select view_A 的 account
然後在B用A這個account來建立 linked server的連線
(同時在安全性裏 選擇廠商的account去對應A的account)
我就在本機伺服器與遠端伺服器登入對應的項目中 加入一筆
本機使用者 摸擬 遠端使使用者 遠端密碼
userB 沒勾選 userA XXXXXXXX
權限說明:執行需要的sp_addlinkedserver權限 執行許可權限默認授予 sysadmin 和 setupadmin 固定服務器角色的成員
參考:SQL Server的鏈接服務器技術小結【摘自:91qz.com】 http://www.cnblogs.com/ding0910/articles/419807.html
SQL Server分布式查詢詳細介紹 http://www.qqread.com/sqlserver/2010/09/f495658.html
sp_addlinkedserver的一些操作 http://hi.baidu.com/lvzhnan/blog/item/036a98c28084d553b219a87f.html
SQL SERVER2005建Link Server http://space.itpub.net/7728585/viewspace-682567
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。