zoukankan      html  css  js  c++  java
  • 登录名与用户名

    16:20 2013-04-09 登录名与用户名
    通过sp_addlogin创建登录名

    1 execute sp_addlogin 'loginame','password' --loginame只能use master

    指定登录名为loginame,并且创建test数据库中的用户nameindb

    1 use test
    2 execute sp_grantdbaccess 'loginame','nameindb' --test库下生成nameiddb用户及架构,loginame能use test

    设置所有操作授权

    1 exec sp_addrolemember 'db_owner','nameindb' --更改数据库成员角色身份
    2 exec sp_addrolemember 'db_backupoperator','bakuser'--管理数据库备份,BACKUP DATABASE和BACKUP LOG语句

    设置具体操作权限

    1 grant select,insert,update,delete to nameindb  --授予nameindb对所有用户表的操作权限
    2 grant select,update on tb to nameindb          --授予nameindb select,update到具体的表
    3 grant select,update on tb(id,col) to nameindb  --授予nameindb select,update到具体的表和列
    4 grant create table,create view,create proc to nameindb  --授予nameindb具有创建表、视图、存储过程等的操作权限

    不能使用revoke drop table to nameindb。nameindb创建了table,再revoke create table权限,但还是可以删除自己创建的table
    --exp1:

    1 grant exec on usp_inserttable to nameindb   --授予nameindb对具体存储过程的执行权限
    2 deny exec on usp_inserttable to nameindb    --禁止nameindb对具体存储过程的执行权限
    3 revoke exec on usp_inserttable to nameindb  --删除nameindb对具体存储过程的执行权限
    View Code

    删除登录用户

    1 exec sp_revokedbaccess 'nameindb'             --移除用户对数据库的访问权限
    2 exec sp_droprolemember 'db_owner','nameindb'  --移除数据库成员角色身份
    3 exec sp_droplogin 'loginame'                  --删除登录用户

    SQL Server将数据库的用户名映射到登录名

    --步骤1:列出当前数据库的孤立用户
    exec sp_change_users_login 'REPORT'
    --步骤2:自动将用户名所对应的同名登录添加到syslogins中
    exec sp_change_users_login 'AUTO_FIX','用户名'
    --步骤3:将用户名映射为指定的登录名
    exec sp_change_users_login 'UPDATE_ONE','用户名','登录名'--更新库下用户的sid成登录名的sid

    --exp2:

    1 --通过sp_addlogin 创建与用户名相同的登录名
    2 execute sp_addlogin 'test','123'
    3 exec sp_change_users_login 'REPORT'
    4 exec sp_change_users_login 'AUTO_FIX','test'
    5 exec sp_change_users_login 'UPDATE_ONE','test','test'
    View Code

    实际应用
    16:06 2013-07-15 数据库errorlog中发现下面信息
    The activated proc '[dbo].[sp_syspolicy_events_reader]' running on queue 'msdb.dbo.syspolicy_event_queue' output the following: 'Cannot execute as the database principal because the principal "##MS_PolicyEventProcessingLogin##" does not exist, this type of principal cannot be impersonated, or you do not have permission.'
    网上找到问题原因及解决方法
    Just check if the principle is valid on master and msdb securables.
    If they found to orphaned users fix them using sp_change_users_login.

    1 --解决方法
    2 use master
    3 select * from sys.database_principals where [name]='##MS_PolicyEventProcessingLogin##'
    4 use msdb
    5 select * from sys.database_principals where [name]='##MS_PolicyEventProcessingLogin##'
    6 exec sp_change_users_login 'UPDATE_ONE','##MS_PolicyEventProcessingLogin##','##MS_PolicyEventProcessingLogin##'
  • 相关阅读:
    OpenJTAG与Jlink/Jlink的区别
    Ubunut 10.04 upgrade git
    HEVC播放器出炉,迅雷看看支持H.265
    平铺文理+拉伸按钮图片
    黑马程序员java基础学习IO流4
    Excel 2010实战技巧精粹
    昆明虚假楼盘吸引 2 千多人购买诈骗近 3 亿
    Canonical 公司预计最晚明年 4 月推出 Ubuntu 中国版
    Canonical 公司预计最晚明年 4 月推出 Ubuntu 中国版
    十二个理由让你不得不期待 Ubuntu10.10
  • 原文地址:https://www.cnblogs.com/Uest/p/3585321.html
Copyright © 2011-2022 走看看