Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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/9.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_Database Schema - Fatal编程技术网

Sql server SQL Server:通过存储过程访问架构

Sql server SQL Server:通过存储过程访问架构,sql-server,database,database-schema,Sql Server,Database,Database Schema,我有两个模式,schema\u ui和schema\u logic schema\u logic用于特权用户,我将在此模式中定义我的表schema\u ui用于功能受限的受限用户,因此他们无法访问schema\u logic中的表 我在schema\u ui中创建了一个sp\u ReadTable1,这个存储过程从schema\u逻辑中的Table1中读取。user1具有受限权限,只能访问,schema\u ui。现在user1可以访问sp_ReadTable1,但是当存储过程从table1中读

我有两个模式,
schema\u ui
schema\u logic

schema\u logic
用于特权用户,我将在此模式中定义我的表
schema\u ui
用于功能受限的受限用户,因此他们无法访问
schema\u logic
中的表

我在
schema\u ui
中创建了一个
sp\u ReadTable1
,这个存储过程从
schema\u逻辑中的
Table1
中读取。user1具有受限权限,只能访问,
schema\u ui
。现在user1可以访问sp_ReadTable1
,但是当存储过程从table1中读取时,他真的可以执行它吗


因此,类似于C#public方法的东西,它返回私有成员…

对于类似的东西,我在模式中的所有sp上使用
和EXECUTE AS OWNER
,创建一个角色,授予该模式的EXECUTE权限,并将用户分配给该角色。旁注:存储过程不应使用
sp
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用
sp.
并使用其他东西作为前缀,或者根本不使用前缀!对于类似的情况,我在架构中的所有sp上使用
和EXECUTE AS OWNER
,创建一个角色,授予该架构的EXECUTE权限,并将用户分配给该角色。旁注:您不应该在存储过程中使用
sp_
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用
sp.
并使用其他东西作为前缀,或者根本不使用前缀!