sql-server - Sql Server Schemas,每人一个私有(private)区域,但对其他人具有读取权限

标签 sql-server database schema

我需要一个数据库,它是人们为自己创建统计数据并与他人共享的有效“游戏”区域。

我有一个充满核心数据的只读数据库。所有用户都具有读取权限。

我想要第二个“播放”数据库,其中“n”个人可以查询“核心”数据库并在那里创建自己的表、SP 等。我希望这些用户每个人都有一个模式。我希望他们创建的所有内容都默认添加到他们的架构中,除非他们在脚本中明确指定(即 [dbo])。我希望他们都能够协作并能够从其他用户模式中读取数据(并查看 sp),但不能在其他用户模式中添加对象或执行 sps。

这些用户使用 2014 management studio 来运行这些查询。他们都使用 Integrated Security (windows) 进行身份验证。

这可以做到吗?

我尝试为用户设置默认架构,但默认情况下,当他们添加表格时,它会转到 [dbo],因为 2014MS 中的属性网格默认为 [dbo],您必须对其进行编辑。如果他们只是输入“create table Table1”,我希望它进入他们的模式

我尝试让用户成为架构的所有者。我尝试设置 public 以选择访问这些用户模式。但是有一点不对!

我原以为这是一种常见的设置,开发人员可以在单个数据库中获得自己的架构。或者,是否总是使用单独的数据库来实现这一点?我相信其他人会喜欢一个为几个用户设置这个的简短脚本:)

SQL Server 管理不是我的主要领域,所以任何指导将不胜感激

最佳答案

对于测试用户 User1,您可以创建一个架构 UserSchema1 并执行以下操作

I want a second "play" database where 'n' people can query the "core" database

您可以像这样使用户成为 db_datareader 角色的一部分

USE [CoreDatabase]
GO
exec sp_addrolemember db_datareader, 'User1'

I want everything they create to be added to their schema by default

创建模式并添加适当的权限

USE [PlayDatabase]
GO
CREATE SCHEMA [UserSchema1] AUTHORIZATION dbo;
GO
GRANT ALTER, DELETE, EXECUTE, INSERT, REFERENCES, SELECT, UPDATE, VIEW DEFINITION ON SCHEMA::UserSchema1 TO User1;

GRANT CREATE TABLE, CREATE PROCEDURE, CREATE FUNCTION, CREATE VIEW TO User1;

为用户设置默认模式

ALTER USER [User1] WITH DEFAULT_SCHEMA=[UserSchema1]

更多信息请引用本帖

https://dba.stackexchange.com/questions/21733/allow-user-to-do-anything-within-his-own-schema-but-not-create-or-drop-the-schem

I want them all to be able to collaborate and be able to read data (and look at sp's) from other users schema but not add objects or execute sps' in the others users schema.

允许用户查看其他用户对象的定义并在播放数据库上执行SELECT's

USE [PlayDatabase]
GO
GRANT VIEW Definition TO [User1]
GO
exec sp_addrolemember db_datareader, 'User1'

关于sql-server - Sql Server Schemas,每人一个私有(private)区域,但对其他人具有读取权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29646151/

相关文章:

sql-server - 具有自动增量的自定义主键生成

sql - 如何在 SQL 查询中使用 COUNT 和 SELECT 显示 0 值

sql-server - SQL Server 格式文件 - 我可以用来生成创建表语句吗?

java - 我怎样才能最好地从数据库或 servlet 上下文中初始化常量?

python - 通过python连接mysql数据库

database - craigslist/kijiji 架构

sql - 优化 WHERE 子句中包含许多 OR 语句的查询

Android DiffUtil.ItemCallback areContentsTheSame 不同ID

python - 使用 Marshmallow 的嵌套模式自动字典键解析

database - 如何使用 Hibernate 更新数据库模式而不丢失数据?