Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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_Sql Server 2008_Azure Sql Database - Fatal编程技术网

Sql server SQL Server解决方案中存储过程中的发布/公共/私有概念分层开发

Sql server SQL Server解决方案中存储过程中的发布/公共/私有概念分层开发,sql-server,sql-server-2008,azure-sql-database,Sql Server,Sql Server 2008,Azure Sql Database,我担心你的回答会是不,但让我问一下 是否有任何方式/最佳实践来标记/指示应保存在其自身层内部的存储过程,哪些存储过程可用作其他层的接口,哪些存储过程可用作外部接口 情况: 我们正在Node+SQL Server中开发一个web解决方案,其中安全性起着重要作用,维护和分布式开发也起着重要作用 应用程序由多个层组成(访问/授权/用户管理/任务管理),我们追求它们之间的高内聚性和低耦合性(把握原则) 每个层都有与之关联的SQL Server对象(主要是表、序列和存储过程),我们想知道它是否可以等效于节

我担心你的回答会是不,但让我问一下

是否有任何方式/最佳实践来标记/指示应保存在其自身层内部的存储过程,哪些存储过程可用作其他层的接口,哪些存储过程可用作外部接口

情况:

我们正在Node+SQL Server中开发一个web解决方案,其中安全性起着重要作用,维护和分布式开发也起着重要作用

应用程序由多个层组成(访问/授权/用户管理/任务管理),我们追求它们之间的高内聚性和低耦合性(把握原则)

每个层都有与之关联的SQL Server对象(主要是表、序列和存储过程),我们想知道它是否可以等效于节点概念来分隔它们

在节点中,我们为每一层构建一个控制器,然后,函数(私有)用于所有内部功能,导出可从其他层调用的函数,端点,用于所有已发布的web访问方法

我知道发布的存储过程可以通过RoleAuthorization进行管理,但没有针对公共和私有的解决方案

即使如此,查看所有存储过程也无法区分这两种类型

我怕你会说,“叫他们spPbsh.*/spPblc.*和spPrvt.*

可能是另一种解决方案或最佳做法?


如果我正确理解了您的问题,您是否可以为SP的每个“类”创建模式,然后向您的应用程序授予适当的权限(拒绝将它们授予您的“私有”模式,但将它们授予您的“公共”)呢?schema的优点是使用classs.sp_作为自己的名称,而不是dbo.class__sp_作为自己的名称,另外,(至少在我的经验中)没有人使用不同的模式。我的意思是区分(语义和安全方面)三种类型的“代码块”“、仅在层内部且不应从层/模块外部访问的(专用)、可以从SQL server上的其他层访问的(公用)以及可以从节点访问但只能从相应层访问的(已发布)。我希望在下一张图片中事情变得更清楚::是的,我更愿意这样做,而不需要为每个层开发单独的数据库,并通过每个数据库两种不同的身份验证来控制反可访问性,一种允许“垂直”使用(来自SQL中的其他层),另一种允许“水平”使用(来自节点的相应层)这不是真的-您可以在架构级别管理权限-因此,这比仅仅组织存储过程更有优势-我认为权限是您所需要的。您是否有此方法无法解决的困难或需求?