我正在尝试掌握创建使用SQL Server数据库的程序的概念,但我习惯只在本地计算机上运行它

时间:2010-04-26 01:22:02

标签: c# sql sql-server .net-3.5

如何让程序使用SQL Server数据库,并让该程序在其安装的任何计算机上运行。

如果您今天一直在关注我的一系列问题,那么您就知道我正在为中小型企业提供开源和免费帮助台套件。

  1. 客户端应用程序。 客户端应用程序是Windows窗体应用程序。在每台客户端计算机上安装和首次启动时,它会询问主服务台服务器的地址。

  2. 服务器。 在这里,我计划处理所有传入的帮助请求,向IT人员展示,并为客户端应用程序提供WCF服务。

  3. 我的困境在于,我知道如何在我的本地计算机上运行程序;但是我真的很难为每个想要在他们的Windows服务器上下载和安装服务器位的人做这项工作。

    当用户想要安装“服务器”应用程序时,我是否必须制作一个SQL脚本并让它在MS SQL服务器上运行?

    非常感谢所有人为您提供宝贵的时间和精力。它非常非常赞赏。 :)

    修改 为了澄清,每个企业的服务器都将与我完全分开。我将无法访问他们,也不会以任何方式与我联系。 (我不知道为什么要澄清这一点:P)

    因此,假设安装了绝对没有DATABASE SERVER ;我该怎么办?

5 个答案:

答案 0 :(得分:0)

您的安装应用程序应该:

  1. 获取SQL Server名称,用户名(具有创建数据库的apprpriate权限)和密码。

  2. 使用本地安装的命令行工具运行SQL脚本,或者使用SMO(例如)使用提供的凭据对用户提供的服务器运行SQL脚本。

  3. BTW,在您花费大量精力编写开源帮助台之前,请检查一下already available是什么?另外,Open Source Helpdesk

答案 1 :(得分:0)

您是希望在您的计算机上运行单个SQL Server实例,还是在每个客户的服务器上运行一个?如果是后者,您将需要在每台服务器上安装SQL Server实例 - 从(免费但有限且非开源)SQL Server Express到更昂贵的SKU。您可以在服务器安装包中包含此步骤; MSI安装使捆绑MSSQL安装变得非常容易。

然后,您需要在实例上删除架构,可能还有数据。您可以将此作为安装程序中的一个步骤,或作为应用程序设置过程的一部分。可能已经在服务器上安装了SQL Server实例或多个SQL Server实例,并且您的安装后步骤应该允许用户指定安装您的部件的实例。

然后,在客户端应用程序中包含数据库配置部分。询问用户 - 或者在客户端安装时从配置文件中获取,以允许无人值守或未提示的客户端安装 - 服务器连接详细信息,如服务器名称和身份验证信息。

关于身份验证的一句话 - 由于您似乎正在构建基于Windows的工具,因此尽可能使用Windows集成(域管理)身份验证。不要从事存储登录的业务,而是依靠现有域来管理登录。一个好的策略是使用活动目录组来管理访问。授予对SQL Server中特定组的访问权限,并将组成员身份推迟到Active Directory本身。如果您无法获得执行此操作所需的访问权限,请向AD用户帐户本身授予权限。避免创建SQL Server登录,使用它可以打开一些可能出现的安全问题。

答案 2 :(得分:0)

使用自动安装部署客户端/服务器解决方案并不是那么简单。

您可能最好将服务器安装与已根据您的意愿设置的数据库引擎和骨架数据库一起部署。这是为了避免对现有服务器进行过多的篡改 - 谁知道它是什么。

另外你说你想要安装WCF服务,这可能意味着将它们安装在客户服务器上,理论上这应该不是问题,但实际上它可能是,取决于以前在服务器上的内容。

答案 3 :(得分:0)

我明白你要做什么。如果我是你,我会做以下事情:

  • 提供2次下载 - 1次为客户端,1次为服务器。
  • 忘记MS SQL Server,也许选择MySQL,因为它确实是开源的。您可能可以使用MS SQL Server Express Edition,但如果您的数据集变得很大(这在帮助台数据库中很常见),那么您将陷入困境。
  • 正如其他人所指出的那样,在第一次运行时(或在设置时),我会让客户端应用找到服务器。

答案 4 :(得分:0)

好的,部分答案是,处理SQL Server数据库(坦白说SQL Server Express将采用 long 方式 - 4Gb数据)和服务器安装元素。

首先将SQL安装为SEP,使其成为先决条件,可能会调整您的安装程序进行测试(具有挑战性),但实际上将它们指向SQL Server Express的链接并让它们继续使用它。)

其次,根据建议,为您的客户端和服务器元素单独安装。

最后,如何构建数据库 - 我建议使用代码来创建和维护(更新)模式,即一旦连接到服务器,就可以运行调用DDL的代码来执行必要的操作(类似于建议在这里:How to create "embedded" SQL 2008 database file if it doesn't exist?

一个问题 - 您打算来自客户的所有通信都通过您的WCF服务吗?