cuiyi's blog(崔毅 crazycy)

          記錄點滴 鑒往事之得失 以資于發展
          數據加載中……

          SQLServer Create Login/Create User/Grant Privildges to a userName

          above refer to uri

          If you want to give your user all read permissions, you could use:

          EXEC sp_addrolemember N'db_datareader', N'your-user-name'

          That adds the default db_datareader role (read permission on all tables) to that user.

          There's also a db_datawriter role - which gives your user all WRITE permissions (INSERT, UPDATE, DELETE) on all tables:

          EXEC sp_addrolemember N'db_datawriter', N'your-user-name'

           

          If you need to be more granular, you can use the GRANT command:

          GRANT SELECT, INSERT, UPDATE ON dbo.YourTable TO YourUserName
          GRANT SELECT, INSERT ON dbo.YourTable2 TO YourUserName
          GRANT SELECT, DELETE ON dbo.YourTable3 TO YourUserName

          and so forth - you can granularly give SELECT, INSERT, UPDATE, DELETE permission on specific tables. 



          by me:

          If you want to give your user permissions to execute a procedure, you could use:

          GRANT EXECUTE ON OBJECT::dbo.your_procedure_name TO N'your-user-name';

          below is a full step to create a user db_user, and give him permissions to execute a procedure to a table db_tableABC and a procedureproc_get_price_data; assuming the user's loginName is your_user_login_name

          --add a db engine login

          IF NOT EXISTS(SELECT name FROM sys.server_principals WHERE name='{your_domain\}your_user_login_name')
          CREATE LOGIN [{your_domain\}your_user_login_name] WITH PASSWORD='your_user_password'
          , DEFAULT_DATABASE = TestDB;

          --add a user to current database
          use TestDB;
          IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name='db_user')
          CREATE USER [db_user] FOR LOGIN [{your_domain\}your_user_login_name];

          --grant
          GRANT INSERT, UPDATE, SELECT, DELETE ON dbo.db_tableABC TO your_user;
          GRANT EXECUTE ON OBJECT::dbo.proc_get_price_data TO your_user;

          e.g.
          assuming a user named domain123\admin1 can access a database;

          IF EXISTS(SELECT name FROM sys.server_principals WHERE name = '[domain123\admin1]')
          BEGIN   
             IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = 'admin1')        
             BEGIN             
                  CREATE USER [admin1] FOR LOGIN [domain123\admin1];                   
             END
             GRANT INSERT, UPDATE, SELECT, DELETE ON dbo.
          db_tableABC TO admin1;  
             GRANT EXECUTE ON OBJECT::dbo.GET_PRICE_DATA TO admin1;
          END

          posted on 2013-07-11 12:52 crazycy 閱讀(737) 評論(0)  編輯  收藏 所屬分類: DBMS

          主站蜘蛛池模板: 景宁| 邓州市| 临武县| 大方县| 广元市| 迁西县| 常德市| 文化| 靖江市| 阳新县| 新田县| 内江市| 承德县| 龙江县| 舒兰市| 翁牛特旗| 左云县| 平度市| 汉中市| 紫阳县| 渝中区| 昌宁县| 衡山县| 利辛县| 中阳县| 耿马| 隆子县| 凭祥市| 铁岭市| 凤庆县| 上饶市| 家居| 游戏| 甘洛县| 泰兴市| 即墨市| 郴州市| 广河县| 通化县| 通化市| 台前县|