代码之家  ›  专栏  ›  技术社区  ›  Coderer

[master]的授权是否向其他星展银行发放?

  •  0
  • Coderer  · 技术社区  · 17 年前

    好的,我正在尝试在另一个SQLServer2005实例上创建一个“空”版本的数据库。为此,我使用脚本向导创建一个大脚本,创建所有表、视图、SP等,添加一些用户,并为他们授予权限。现在,在脚本的权限部分,我有(除其他外)

    use [master]
    GO
    GRANT CREATE VIEW to [myUser]
    GO
    ...
    use [prodDb]
    GO
    GRANT REFERENCES on [tblMyTable] to [myUser]
    GO
    ...
    

    请记住,这是向导生成的脚本。我想弄明白的是,“使用master…授权创建视图”是否允许myUser在prodDb中创建视图?这就是我的理解——我说的是“myUser可以在这个实例上的任何数据库中创建视图”——但我认为当我尝试允许myUser在prodDb中创建视图时,会出现权限错误。当我在SQL Server Manager中查看prodDb的权限时,权限是正确的,但是我正在执行生成脚本的目标系统没有SQL Server Manager,并且我不确定如何从命令行检查给定对象上的每个用户权限(显然,当我尝试行使这些权限时出现的错误是一个很大的提示)。

    这是脚本向导中的错误吗?我是否应该取消主机级别的权限,只在每DB级别授予权限?如果有什么不同的话,这是针对一个独立系统上的本地应用程序的,它永远不会联网。

    2 回复  |  直到 17 年前
        1
  •  3
  •   user91695    17 年前

    我的理解是,对Master的更改不会传播到其他数据库,它只是系统范围内对象(如用户、系统存储过程和存在的其他数据库的列表)的保留地。

    对模型的更改

        2
  •  1
  •   marc_s MisterSmith    17 年前

    “idforstackoverflow”完全正确:

    • Master就是所谓的“系统”数据库
    • 另一方面,“模型”是新数据库的模板。对模型的更改将传播 创建新数据库 当它们被创建时——现有的不受这些更改的影响