none
SQLSERVER 2008 如何授权客户端用户调试功能 RRS feed

  • 常规讨论

  • SQLSERVER 2008数据库有2个:WDB、MDB,客户端用户A可访问WDB(只读),可管理MDB(db_onwer权限)。现在的问题是:用户A想在数据库MDB上调试存储过程,发现没有权限。该如何授权呢?

    我在网上查了一下,须增加该用户服务器角色sysadmin。若如此,则该用户将对另一数据库WDB同样有权限,该如何限制进队数据库MDB调试呢?

    望各位大侠解疑,不胜感激!

    2015年1月27日 9:47

全部回复

  • Have to open specific port bewteen sql server and client machine, books online has details under 'Using the Transact-SQL Debugger'.
     
    2015年1月27日 17:10
  • sysadmin是最大权限,而且是调试的必须要求,所以没办法限制

    不过调试阻碍非常特别的情况,不应该在生产环境使用,而非生产环境的安全控制,一般不用做那么高的吧?

    实在是要控制的话,我想你只能隔离了,两个 DB 放在不同的实例上(不管是一台机器装两个实例,还是物理机或虚拟机隔离)

    2015年1月28日 1:27
  • 我以下列T-SQL模擬您所想要做的結果,不曉得是否符合您的需求,有興趣可以參考看看。

    --建立測試資料庫
    create database WDB
    create database MDB
    go
    
    --建立登入
    create login l with password='p@ssw0rd'
    
    --建立使用者
    use WDB
    go
    
    create user u for login l
    go
    
    use MDB
    go
    
    create user u for login l
    go
    
    --在WDB建立測試資料
    use WDB
    go
    
    create table t1 (c1 int identity,c2 varchar(10))
    go
    
    insert into t1(c2) values ('test')
    go 30
    
    select * from t1
    go
    
    --授予使用者u只能查詢的權限
    grant select on t1 to u
    go
    
    --測試使用者u是否只能查詢不能修改或新增資料
    exec as login = 'l'
    
    select USER_NAME(),SUSER_NAME()
    
    select * from t1	--成功
    insert into t1(c2) values ('test')  --失敗
    
    revert
    go
    
    use MDB
    go
    
    --將使用者u加入db_owner角色
    ALTER ROLE [db_owner] ADD MEMBER [u]
    go
    
    --測試使用者u是否能夠管理MDB
    exec as login = 'l'
    
    select USER_NAME(),SUSER_NAME()
    
    create table t2 (c1 tinyint,c2 varchar(10))
    go
    
    insert into t2(c2) values ('abc')
    go 200
    
    delete from t2
    go
    
    drop table t2
    go
    
    revert
    go
    
    
    --移除測試資料庫
    use master
    go
    
    drop database WDB
    drop database MDB
    go
    
    --移除登入
    drop login l
    go


    | SQL PASS Taiwan Page | SQL PASS Taiwan Group

    | My Blog

    2015年1月28日 2:27