使用单数据库多模式的ASP.NET MVC多租户应用程序:从应用程序调用存储过程尝试访问dbo表

里法吉

我正在开发一个使用ASP.NET MVC,SQL Server,Dapper的多租户应用程序,每个租户具有单个数据库和多个架构。将为租户分配一个拥有租户模式的数据库用户。我在dbo中有一组表,另一组是所有模式共享的。

说我有dbo.TenantanySchema.Table1从我为anyschema用户设置了连接字符串的应用程序中,如果我调用select * from Table1,则返回的值anySchema.Table1如果我在存储过程中有相同的查询,则在尝试访问时会引发错误dbo.Table1

我为租户db用户提供了对dbo的执行访问权限,因为单个SP正在由所有租户共享 dbo.SP_Name

我如何执行以租户db用户身份登录的存储过程,并访问Table1anyschema,以便所有租户都可以使用单个SP。

本·福斯特

假设我们在数据库中有两个用户,tenant1并且tenant2有他们自己的模式(也称为tenant1tenant2)。

我们Contacts为每个租户创建一个表,因此我们有tenant1.Contactsand tenant2.Contacts

在我们的应用程序中,我们使用Dapper执行以下SQL。我们使用的是租户特定的连接字符串,该字符串使用了租户的SQL Server登录详细信息。

select * from Contacts

由于我们未在SQL中指定架构,因此可以从执行SQL的用户的默认架构中推断出该架构。因此,tenant1它将进行查询,tenant1.Contacts并将tenant2对其进行查询tenant2.Contacts

现在,我们将在dbo执行相同查询架构中创建一个存储过程

CREATE PROCEDURE GetContacts
AS
BEGIN
    select * from Contacts
END
GO

请注意,我尚未在存储过程的SQL中指定架构。

当我们从应用程序执行存储过程时,仍可以从当前用户推断存储过程的模式,但是SP中的SQL会从SP的模式中推断模式因此,如果SP属于dbo架构,它将对dbo.Contacts执行查询

这就是您所处的情况。您已经在dbo架构中创建了一个存储过程,并期望它对租户的默认架构执行SQL

您有几种选择

  1. 将架构作为参数传递给存储过程并使用动态SQL-如何将架构作为参数传递给sql server中的存储过程?
  2. 为每个租户创建一个SP版本,例如tenant1.SP_Nametenant2.SP_Name
  3. 不要使用存储过程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多租户ASP.Net MVC应用程序-在何处存储租户特定数据

来自分类Dev

ASP.NET MVC应用程序中的多租户日志记录

来自分类Dev

ASP.NET MVC多租户应用程序中的控制器(无子域)

来自分类Dev

具有租户特定角色的ASP.NET多租户应用程序

来自分类Dev

www不能与基于子域的多租户asp.net mvc 5应用程序一起使用

来自分类Dev

多租户应用程序的MVC路由

来自分类Dev

带有ASP.NET Core 3.0和EF Core的多租户应用程序

来自分类Dev

从javascript调用ASP.NET MVC应用程序的URL

来自分类Dev

如何使用多租户ASP.NET应用程序通过Azure Active Directory进行身份验证?

来自分类Dev

尝试使用asp.net Web应用程序将数据插入SQL Server数据库,出现错误

来自分类Dev

无法从ASP NET应用程序中托管的WCF数据服务访问数据库

来自分类Dev

ASP.NET MVC Web应用程序循环访问和修改数据库的最佳实践

来自分类Dev

ASP.NET在应用程序数据库中存储会话状态

来自分类Dev

想要在 ASP.NET MVC 实体框架应用程序中使用存储过程创建自动完成搜索

来自分类Dev

多租户ASP MVC应用程序的捆绑

来自分类Dev

多租户ASP MVC应用程序的捆绑

来自分类Dev

使用实体框架和SQL Server数据库无法访问ASP.NET MVC Web应用程序中的数据

来自分类Dev

ASP.NET MVC:在应用程序启动时检查数据库连接

来自分类Dev

使用EF数据库优先应用程序部署ASP.NET Web API

来自分类Dev

使用外部数据库登录ASP.net Web窗体应用程序

来自分类Dev

在云中为asp.net MVC应用程序使用枚举或数据库查找表或同时使用两者的最佳实践/设计决定是什么?

来自分类Dev

如何使用Entity Framework 6从.Net应用程序访问Snowflake数据库

来自分类Dev

使用Web服务作为数据访问层开发ASP.NET MVC应用程序

来自分类Dev

多域名ASP.NET MVC应用程序的跨域OWIN身份验证

来自分类Dev

设置多租户应用程序

来自分类Dev

多租户应用程序中的IdentityRole

来自分类Dev

多租户应用程序-SSL证书

来自分类Dev

Vb.Net应用程序安装程序未更新访问数据库

来自分类Dev

从Asp.Net C#应用程序执行PostgreSQL存储过程时出现42809错误

Related 相关文章

  1. 1

    多租户ASP.Net MVC应用程序-在何处存储租户特定数据

  2. 2

    ASP.NET MVC应用程序中的多租户日志记录

  3. 3

    ASP.NET MVC多租户应用程序中的控制器(无子域)

  4. 4

    具有租户特定角色的ASP.NET多租户应用程序

  5. 5

    www不能与基于子域的多租户asp.net mvc 5应用程序一起使用

  6. 6

    多租户应用程序的MVC路由

  7. 7

    带有ASP.NET Core 3.0和EF Core的多租户应用程序

  8. 8

    从javascript调用ASP.NET MVC应用程序的URL

  9. 9

    如何使用多租户ASP.NET应用程序通过Azure Active Directory进行身份验证?

  10. 10

    尝试使用asp.net Web应用程序将数据插入SQL Server数据库,出现错误

  11. 11

    无法从ASP NET应用程序中托管的WCF数据服务访问数据库

  12. 12

    ASP.NET MVC Web应用程序循环访问和修改数据库的最佳实践

  13. 13

    ASP.NET在应用程序数据库中存储会话状态

  14. 14

    想要在 ASP.NET MVC 实体框架应用程序中使用存储过程创建自动完成搜索

  15. 15

    多租户ASP MVC应用程序的捆绑

  16. 16

    多租户ASP MVC应用程序的捆绑

  17. 17

    使用实体框架和SQL Server数据库无法访问ASP.NET MVC Web应用程序中的数据

  18. 18

    ASP.NET MVC:在应用程序启动时检查数据库连接

  19. 19

    使用EF数据库优先应用程序部署ASP.NET Web API

  20. 20

    使用外部数据库登录ASP.net Web窗体应用程序

  21. 21

    在云中为asp.net MVC应用程序使用枚举或数据库查找表或同时使用两者的最佳实践/设计决定是什么?

  22. 22

    如何使用Entity Framework 6从.Net应用程序访问Snowflake数据库

  23. 23

    使用Web服务作为数据访问层开发ASP.NET MVC应用程序

  24. 24

    多域名ASP.NET MVC应用程序的跨域OWIN身份验证

  25. 25

    设置多租户应用程序

  26. 26

    多租户应用程序中的IdentityRole

  27. 27

    多租户应用程序-SSL证书

  28. 28

    Vb.Net应用程序安装程序未更新访问数据库

  29. 29

    从Asp.Net C#应用程序执行PostgreSQL存储过程时出现42809错误

热门标签

归档