从.net应用程序动态更改数据源;传递给连接字符串

时间:2011-02-22 13:29:05

标签: .net sql sql-server roles

我的Visual Studio .NET应用程序使用SQL Server 2005 Express。

必须安装在我客户的主服务器系统上。在两台客户端计算机上。所有Windows XP或Vista或7。

现在,每次我安装我的应用程序&在我的客户计算机上的SQL Server,我必须更改连接字符串中指定的服务器名称,即DATA SOURCE。 因为,当我在客户的计算机上安装SQL Server时,SQL Server 2005 Express将服务器名称作为客户的计算机名称。

那么,解决方案是什么?

  1. 我应该将客户的计算机名称更改为我在连接字符串中指定的名称。
  2. 或者,我是否应该从.net应用程序在运行时动态获取服务器名称,然后将其传递给连接字符串。
  3. 另外,同样的问题是登录?我的.NET应用程序会要求登录&来自客户的密码,然后将密码传递给连接字符串&该应用程序将连接到SQL Server。那么,安全性还可以吗?如果没有,那么动态地从.NET应用程序创建SQL Server登录的另一种解决方案是什么。

    另外,我是否应该为此目的创建APPLICATION ROLES,即解决登录问题?

    我的连接字符串是:数据源= A-9(计算机名称); Trusted_Connection = true;

    ---------------------------------------------- EDITED ---------------------------------------

    在我的客户所在地,'APP_SVR'是服务器机器名,他有2个客户端 m / cs:C-1& C-2。所有3个都是局域网上的简单家用电脑,使用Windows XP。

    1.我将在'APP_SVR'上安装SQL SERVER EXPRESS。安装时,   SQL SERVER自动将服务器名称作为计算机名称   它安装在哪里,这里是'APP_SVR'。   因此,'APP_SVR'将是conn中的DATA SOURCE NAME。字符串。

    2.我将在C-1,C-2上安装.NET应用程序。

    3.现在,C-1,C-2上的应用程序必须连接到'APP_SVR'上的SQL SERVER。   为此,applcn。需要DATA SOURCE NAME。所以,我会从中获取数据源名称   用户使用C-1& C-2,作为文本输入&然后将其传递给连接字符串   用户将其输入为“APP_SVR”。

    这对安全问题会好吗?或者还有其他方式吗?

3 个答案:

答案 0 :(得分:1)

我肯定会选择alt 2,改变你的客户计算机名称可能会让他们,或者他们的管理员,非常生气。

答案 1 :(得分:1)

假设您的客户端应用程序是某种WinForms应用程序,连接字符串应该驻留在应用程序的app.config文件中,并且在安装时应该设置为正确的值。

在app.config中使用连接字符串有助于管理员在服务器名称或数据库名称随时间变化时轻松更新客户端。

如果要使用集成Windows安全性(当前登录的域用户),可以将要授权的用户放入组中,并相应地在SQL Server中对此组进行授权。您还必须在连接字符串中指定Integrated Security=True

答案 2 :(得分:1)

就涉及连接字符串而言,oleschri是正确的。您最好的选择是使用app.config文件。然后,您必须手动更改连接字符串以指向正确的服务器。没有真正的方法可以动态地进行此操作,因为在您看到环境之前,您无法从客户端到客户端知道服务器计算机的IP /名称。

对于登录和将应用程序连接到SQL,可以按照建议的方式完成。使用用户提供的用户名和密码动态更改连接字符串。

通常,我通过在数据库中创建用户表来处理此问题。此表将包含用户名和密码以允许访问我的程序。应使用中的登录来限制/保护对数据库本身的访问。我通常会创建一个登录/用户,然后所有用户都使用它来访问数据库。这有助于锁定对数据库的访问,同时允许您提供访问应用程序的安全性。为了使其工作,您需要从用户获取用户名/密码并检查数据库以查看它是否存在且是否正确。如果是这样,让他们继续,如果没有他们在登录屏幕,并告诉他们用户名和/或密码是错误的。