如何连接到不同的数据库

本文关键字:数据库 何连接 连接 | 更新日期: 2023-09-27 18:08:31

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

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

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

Thanks for the help


我的想法是连接到数据库一旦customercode从URL检索,然后提示用户输入他的用户名和密码访问数据。但是,创建一个数据库来存储每个客户的连接字符串是一个好主意。谁能写的代码,我需要这样做,请吗?我是新手。我来自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 service验证客户代码,并返回一个有效的conn字符串。
  • 客户的应用程序将连接字符串保存在内存中(会话,缓存,等等)。

这将允许您确保conn字符串对于给定的客户代码始终有效。您可以对出于任何原因(不付款等)访问数据库进行细粒度控制。由于您内置的任何缓存,您的服务将有一些命中。

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

http://enzosqlshard.codeplex.com/

听起来很不安全。如果客户在URL中放入另一个客户代码会怎样?如果没有任何具有客户权限的中央数据库,客户是否可以访问该代码,在哪里验证?

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

如果您还期望动态添加或删除客户代码=数据库,则可能会有额外的复杂性。这将需要高级特权帐户来管理登录、帐户、数据库等。

因为你问如何获得Uri的一部分,看起来你几乎没有ASP的经验。NET MVC和所有相关的东西。你绝对应该请更有经验的同事或老板来检查你的架构,因为在这个时候,你可能会遇到严重的问题,你可能会开发出非常不安全的应用程序,这可能会严重损害你的公司和客户的声誉。