我用的是 sql2005 ,在用windows身份登录的时候给一个已经存在的登录名授权语句:grant create database to MyUser3错误提示:消息 15151,级别 16,状态 1,第 1 行
无法对 用户 'MyUser3' 执行 查找,因为它不存在,或者您没有所需的权限。这是什么问题?怎么样解决? 谢谢

解决方案 »

  1.   

    CREATE LOGIN shcooper 
       with PASSWORD = 'Baz1nga' 
    Grant Create database to shcoper;
    --消息 15151,级别 16,状态 1,第 1 行
    无法对 用户 'shcoper' 执行 查找,因为它不存在,或者您没有所需的权限。
    Create user myuser From login shcooper;
    Grant Create database to myuser;
    命令已成功完成。
    应该是对用户授权而不是对登录名授权。
      

  2.   

    你的Windows登录账号权限足够吗?
      

  3.   

    MyUser3 显然还不是一个user,你可以到数据库用户中查看是否存在。
     一般流程是先创建login,然后映射为用户user,这个时候才给user授予 datareader/dbowner/dbwriter等权限,才能操作具体的数据库 login是决定能否登入(以什么样的 server角色如sysadmin,ddladmin,systemadmin....),而user则是决定以什么样的数据库访问角色(如datareader,datawriter,dbowner....)来访问数据库的
      

  4.   

    3楼说的很正确,数据库对应的user还没有创建。
      

  5.   


    ---这是sp_sp_grantdbaccess 存储过程的部分内容,可以看到,
    --如果你使用默认用户名参数,当你使用这个存储过程是,它自己创建了一个用户,用户名默认是登录名
    --另外,你可以从 sys.sysusers 这个视图上看到增加后的用户。
     -- Form Create User statement  
     select @stmtU = 'CREATE USER '  
     select @stmtU = @stmtU + quotename(@name_in_db, ']')  
     select @stmtU = @stmtU + ' FOR LOGIN '  
     select @stmtU = @stmtU + quotename(@loginame, ']')  
     if @isgrp = 0  
     begin  
      select @stmtU = @stmtU + ' WITH DEFAULT_SCHEMA = '  
      select @stmtU = @stmtU + quotename(@name_in_db, ']')  
     end