SQL 链接服务器及权限限制
新增一个用户且只赋予它表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權限問題,利用Linked Server 建view user存取的相關權限
今天我們有一個外部廠商要存取我們資料庫的某些資料
由於公司不想讓廠商直接連到我的主要的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