繁体   English   中英

如何连接到不同的数据库?

[英]How to connect to different databases?

我目前正在开发基于ASP.NET MVC3,SQL Server 2008和EF的应用程序,首先是数据库。

我的应用程序要求每个用户拥有自己的SQL Server数据库。 这些数据库都具有相同的结构。

我的客户被识别为customercode ,例如fgt 此代码在网址中提供。 我需要知道如何从url中检索customercode并相应地设置连接字符串。

谢谢您的帮助


我的想法是,一旦从URL检索到客户代码,就连接到数据库,然后提示用户输入访问数据的用户名和密码。 但是,是的,创建一个存储每个客户的连接字符串的数据库是个好主意。 任何人都可以编写我需要的代码吗? 我是asp新手。 我来自php。

(我刚刚学习英语。抱歉语法不好)

尝试这样的事情开始:

string customerCode = Request.QueryString["cust"].ToString();

string myNewConnString = ConfigurationManager
                           .ConnectionStrings["MyDatabase"]
                           .ConnectionString
                           .Replace("[placeholder]", customerCode);

.config中的连接字符串就是这样的。 请注意,我假设您将放置一个要替换的令牌( [placeholder] )。

 <add name="MyDatabase" 
      connectionString="Data Source=192.168.0.1;Initial Catalog=[placeholder];User ID=foo;Password=bar"     
      providerName="System.Data.SqlClient" />

建议您将客户及其连接字符串列入白名单。

  • 设置您的Web服务。
  • 部署的应用程序使用客户代码调用Web服务。
  • Web服务验证客户代码,并返回有效的conn字符串。
  • 客户的应用程序将conn字符串保存在内存中(session,cache,whathaveyou)。

这将允许您确保conn字符串始终对给定的客户代码有效。 出于任何原因(非付款等),您可以对数据库进行精细控制。 由于您构建的任何缓存,您的服务会有一些点击。

也许sqlshard可以帮助你使用多个数据库?

http://enzosqlshard.codeplex.com/

听起来很不安全的解决方案。 如果客户在URL中放入另一个客户代码怎么办? 如果您没有任何具有客户权限的中央数据库,客户是否可以访问该代码?

您需要身份验证和一些中央存储(附加数据库),您将验证访问该应用程序的用户是否具有对提供的URL的访问权限。 它还将验证此类数据库是否存在。 接下来,您只需要SqlConnectionStringBuilder并使用客户代码作为数据库的名称(或名称的一部分)。 出于安全原因,每个数据库应该具有单独的SQL帐户,该帐户具有仅从该数据库读取的权限。 此db帐户还可以与具有加密密码的中央存储一起存储。

如果您还期望动态添加或删除客户代码=数据库,则可能存在其他复杂性。 这将需要高特权帐户来管理登录,帐户,数据库等。

因为您正在询问如何获得Uri的一部分,所以看起来您几乎没有使用ASP.NET MVC的经验,也许还有与之相关的一切。 你肯定应该让任何更熟练的同事或老板审查你的架构,因为此时看起来你会遇到严重的问题而且你可以开发非常不安全的应用程序,这会严重损害你公司和客户的声誉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM