none
是否可以直接授予这个权限呢? RRS feed

  • 问题

  • 一个表存在identity列,但是有些时候需要手动K一些数据进去,而且identity列也是我自己K的值。
    这个时候就需要set identity_insert on了。
    但是又不想给这个用户太大的权限,比如dbowner等。
    那么是否有具体的权限可以授予呢?
    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2011年8月17日 1:32

答案

全部回复

  • 看了下 赋予alter权限可以使用identity_insert权限,但是这样的话,又能修改表的结构了。。。。权限太大,不安全。
    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2011年8月17日 2:34
  • 通过存储过程 封装 这个操作,然后将存储过程的权限赋予这个用户即可。

     


    family as water
    2011年8月17日 3:04
  • 通过存储过程 封装 这个操作,然后将存储过程的权限赋予这个用户即可。

     


    family as water

    这个语句是在存储过程中,而且也给这个账号赋予了存储过程的执行权限,但是好像还是不行的。
    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2011年8月17日 3:23
  • CREATE TABLE test (id INT IDENTITY(1,1),NAME VARCHAR(20)) CREATE PROC sp_test AS SET IDENTITY_INSERT test ON INSERT INTO test(id,name) VALUES(2,'Wison') SET IDENTITY_INSERT test OFF GRANT EXEC ON sp_test TO wison 使用wison来执行这个存储过程报错: Msg 8104, Level 16, State 1, Procedure sp_test, Line 3 The current user is not the database or object owner of table 'test'. Cannot perform SET operation.
    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2011年8月17日 3:31
  • Add 'execute as owner' in the sp if it's in dbo schema.
    2011年8月17日 3:37
  • Add 'execute as owner' in the sp if it's in dbo schema.


    但是如果将模拟权限赋给这个账号的话,后续也不太安全。

     

    如果我是在job中执行这个存储过程,那么是否可以在Job的Step中设置Run as 就可以解决这个问题?


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.

    2011年8月18日 2:06
  • Why? User has exec permission on that sp only.
    2011年8月18日 2:08
  • Why? User has exec permission on that sp only.

    必须要先执行
    GRANT IMPERSONATE ON user::dbo to wison;

    之后才可以使得wison使用该权限吧


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2011年8月18日 2:17
  • 我想,是不是可以用Job执行这个存储过程,然后在Job中设置以什么身份执行。 我记得以前在哪儿看到过,直接在Job的general的页面中选择owner好像不起作用,需要到具体的Step中去选择“Run as” 但是为什么我在我的sqlserver 2008 R2 的页面中看不到“Run as”下存在任何的用户
    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2011年8月18日 2:21
  • Why? User has exec permission on that sp only.

    必须要先执行
    GRANT IMPERSONATE ON user::dbo to wison;

    之后才可以使得wison使用该权限吧


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    Not the case, check 'with execute clause' in books online.
    2011年8月18日 2:33
  • 我想,是不是可以用Job执行这个存储过程,然后在Job中设置以什么身份执行。 我记得以前在哪儿看到过,直接在Job的general的页面中选择owner好像不起作用,需要到具体的Step中去选择“Run as” 但是为什么我在我的sqlserver 2008 R2 的页面中看不到“Run as”下存在任何的用户
    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    Can't do that in t-sql job step.
    2011年8月18日 2:33