none
请问大家怎么控制开发人员的权限的? RRS feed

  • 问题

  • 我们这里给开发人员的权限比较大,都用一个公共用户这个用户可以更新、删除数据,还可以创建存储过程和表,这样带来的问题是有时修改、增加了存储过程、修改以及新加了表,搞不清谁搞的。不给他们这么大的权限,因为程序中要生成根据模板表生成新的数据表。

    所以两难了,请问大家有没有好的建议来控制开发人员的权限?谢谢!

    2017年10月16日 3:21

答案

  • Hi Tim-2009,

     

    既然开发人员需要用到很多的权限,那么控制他们的使用权限就不是特别的合理,当然每个开发人员使用自己的数据库是比较好的选择,这样即使搞出什么问题了也不至于影响别人的使用。

     

    当然也可以设置DDL Trigger来监控数据库层面上的修改,你可以参考一下这个: https://www.mssqltips.com/sqlservertip/2085/sql-server-ddl-triggers-to-track-all-database-changes/ 这个可以抓取出host name,当然最好不要让大家都是用同一个账号开发,可以给每个人设置一个账号,方便管理和授权。

     

    Best Regards,

    Teige

     


    MSDN Community Support<br/> Please remember to click &quot;Mark as Answer&quot; the responses that resolved your issue, and to click &quot;Unmark as Answer&quot; if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>.

    • 已标记为答案 Tim-2009 2019年6月20日 7:41
    2017年10月16日 6:05
    版主
  • 参考官网文档,FOR 部分是 DDL 事件和事件组,在文档中可以找到对应的链接

    https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql

    • 已标记为答案 Tim-2009 2019年6月20日 7:41
    2017年10月17日 6:23

全部回复

  • 引入数据库版本管理工具,比如sql source control,VSS,每一次对数据库的变更要通过脚本完成,脚本文件按顺序编号并进行版本管理。

    同时,每个开发人员使用自己或小组的的数据库,避免污染公共数据库。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2017年10月16日 3:38
  • Hi Tim-2009,

     

    既然开发人员需要用到很多的权限,那么控制他们的使用权限就不是特别的合理,当然每个开发人员使用自己的数据库是比较好的选择,这样即使搞出什么问题了也不至于影响别人的使用。

     

    当然也可以设置DDL Trigger来监控数据库层面上的修改,你可以参考一下这个: https://www.mssqltips.com/sqlservertip/2085/sql-server-ddl-triggers-to-track-all-database-changes/ 这个可以抓取出host name,当然最好不要让大家都是用同一个账号开发,可以给每个人设置一个账号,方便管理和授权。

     

    Best Regards,

    Teige

     


    MSDN Community Support<br/> Please remember to click &quot;Mark as Answer&quot; the responses that resolved your issue, and to click &quot;Unmark as Answer&quot; if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>.

    • 已标记为答案 Tim-2009 2019年6月20日 7:41
    2017年10月16日 6:05
    版主
  • 引入数据库版本管理工具,比如sql source control,VSS,每一次对数据库的变更要通过脚本完成,脚本文件按顺序编号并进行版本管理。

    同时,每个开发人员使用自己或小组的的数据库,避免污染公共数据库。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms


    我们现在已经用了版本管理工具SVN,已经规定应用开发人员不能写存储过程和建表,有专门的数据库开发人员负责数据库开发。但是控制权限方面还是有问题,导致偶尔发生有人建表、改存储过程之类的问题。
    2017年10月16日 6:07
  • 管理规则的问题,不是技术实现的问题

    既不想给,业务上又要,那应该是通过管理规则 确定到底是给什么,给到什么程度,给到哪些角色

    按照你的描述,你是不想给开发人员权限,但程序需要,那么为什么开发人员和程序的帐号不分开,如果是分开了,为什么要给开发人员拿到程序的帐号? 这是管理上的问题

    2017年10月16日 6:13
  • 如果有dba,不允许开发人员操作数据库。所有对生产库的操作,由dba完成。

    开发人员不需要知道生产库的用户名密码。


    想不想时已是想,不如不想都不想。

    2017年10月16日 8:00
    版主
  • 管理规则的问题,不是技术实现的问题

    既不想给,业务上又要,那应该是通过管理规则 确定到底是给什么,给到什么程度,给到哪些角色

    按照你的描述,你是不想给开发人员权限,但程序需要,那么为什么开发人员和程序的帐号不分开,如果是分开了,为什么要给开发人员拿到程序的帐号? 这是管理上的问题


    我主要是指开发库上的,生产库没有这种问题
    2017年10月16日 9:20
  • 如果有dba,不允许开发人员操作数据库。所有对生产库的操作,由dba完成。

    开发人员不需要知道生产库的用户名密码。


    想不想时已是想,不如不想都不想。


    我主要是指开发库上的,生产库没有这种问题
    2017年10月16日 9:21
  • Hi Tim-2009,

     

    既然开发人员需要用到很多的权限,那么控制他们的使用权限就不是特别的合理,当然每个开发人员使用自己的数据库是比较好的选择,这样即使搞出什么问题了也不至于影响别人的使用。

     

    当然也可以设置DDL Trigger来监控数据库层面上的修改,你可以参考一下这个: https://www.mssqltips.com/sqlservertip/2085/sql-server-ddl-triggers-to-track-all-database-changes/ 这个可以抓取出host name,当然最好不要让大家都是用同一个账号开发,可以给每个人设置一个账号,方便管理和授权。

     

    Best Regards,

    Teige

     


    MSDN Community Support<br/> Please remember to click &quot;Mark as Answer&quot; the responses that resolved your issue, and to click &quot;Unmark as Answer&quot; if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>.


    这个好像看起来不错,有空试试,谢谢!
    2017年10月16日 9:21
  • 管理规则的问题,不是技术实现的问题

    既不想给,业务上又要,那应该是通过管理规则 确定到底是给什么,给到什么程度,给到哪些角色

    按照你的描述,你是不想给开发人员权限,但程序需要,那么为什么开发人员和程序的帐号不分开,如果是分开了,为什么要给开发人员拿到程序的帐号? 这是管理上的问题


    我主要是指开发库上的,生产库没有这种问题

    开发库让他们随便搞呗,做好备份,有必要时回滚。不要开发库自动往生产库同步就是了。

    想不想时已是想,不如不想都不想。

    2017年10月17日 1:44
    版主
  • 就是,开发环境做个保留几天的备份就好了,没必要管那么多,这本来就是给开发人员自由发挥的地方
    2017年10月17日 2:07
  • Hi Tim-2009,

     

    既然开发人员需要用到很多的权限,那么控制他们的使用权限就不是特别的合理,当然每个开发人员使用自己的数据库是比较好的选择,这样即使搞出什么问题了也不至于影响别人的使用。

     

    当然也可以设置DDL Trigger来监控数据库层面上的修改,你可以参考一下这个: https://www.mssqltips.com/sqlservertip/2085/sql-server-ddl-triggers-to-track-all-database-changes/ 这个可以抓取出host name,当然最好不要让大家都是用同一个账号开发,可以给每个人设置一个账号,方便管理和授权。

     

    Best Regards,

    Teige

     


    MSDN Community Support<br/> Please remember to click &quot;Mark as Answer&quot; the responses that resolved your issue, and to click &quot;Unmark as Answer&quot; if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>.

    这个链接里面只有对存储过程的触发器的代码,不知道新建表、修改表的、删除表的触发器的代码怎么写,请指教,谢谢!
    2017年10月17日 3:00
  • 参考官网文档,FOR 部分是 DDL 事件和事件组,在文档中可以找到对应的链接

    https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql

    • 已标记为答案 Tim-2009 2019年6月20日 7:41
    2017年10月17日 6:23