Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Sql Server架构,每人一个专用区域,但对其他区域具有读取权限_Sql Server_Database_Schema - Fatal编程技术网

Sql server Sql Server架构,每人一个专用区域,但对其他区域具有读取权限

Sql server Sql Server架构,每人一个专用区域,但对其他区域具有读取权限,sql-server,database,schema,Sql Server,Database,Schema,我有一个数据库的要求,这是一个有效的“玩”区的人创建自己的统计数据和与他人共享 我有一个只读数据库,里面充满了核心数据。所有用户都有读取权限 我想要第二个“播放”数据库,其中“n”人可以查询“核心”数据库并创建自己的表、Sp等。我希望这些用户每个都有一个模式。我希望他们创建的所有内容在默认情况下都添加到他们的模式中,除非他们在脚本中明确指定(即[dbo])。我希望他们都能够协作,能够从其他用户模式中读取数据(并查看sp),但不能在其他用户模式中添加对象或执行sp 这些用户使用2014 manag

我有一个数据库的要求,这是一个有效的“玩”区的人创建自己的统计数据和与他人共享

我有一个只读数据库,里面充满了核心数据。所有用户都有读取权限

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

这些用户使用2014 management studio运行这些查询。它们都使用集成安全性(windows)进行身份验证

这能做到吗

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

我试图让用户成为模式的所有者。我尝试将public设置为对这些用户模式具有select访问权限。但有些事情不对

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


SQL Server admin不是我的主要领域,因此请提供任何指导。对于测试用户
User1
,您可以创建一个模式
UserSchema1
,并执行以下操作

我想要第二个“播放”数据库,其中“n”人可以查询“核心”数据库

您可以使
db\u datareader
角色的用户部分如下

USE [CoreDatabase]
GO
exec sp_addrolemember db_datareader, 'User1'
我希望他们创建的所有内容都默认添加到他们的模式中

创建架构并添加适当的权限

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]
有关更多信息,请参阅此线程

我希望他们都能够协作,能够从其他用户模式中读取数据(并查看sp),但不能在其他用户模式中添加对象或执行sp

允许用户查看其他用户对象的定义,并在播放数据库上执行选择

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

非常好,非常感谢,现在就开始吧。