Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在项目中放置数据库?C#_C#_Sql Server_Database - Fatal编程技术网

如何在项目中放置数据库?C#

如何在项目中放置数据库?C#,c#,sql-server,database,C#,Sql Server,Database,我有SQL Server 2014中的本地数据库,其中有四个表,容量为1.5 GB。程序的本质是在数据库中查找记录,并用用户定义标准。程序已经编写好,运行良好。我们应该确保程序正常运行,并且其他没有安装服务器的用户也能使用。如何实现这一点?序列化数据是个好主意,但据我所知,有必要对所有数据进行反序列化,然后查找正确的记录。正如前面的评论所说,我认为您有两种选择 随客户机一起提供数据库(使用Sql Express或其他类似解决方案)。这应该可以很好地工作,并且在没有连接到集中式服务器的情况下也可以

我有SQL Server 2014中的本地数据库,其中有四个表,容量为1.5 GB。程序的本质是在数据库中查找记录,并用用户定义标准。程序已经编写好,运行良好。我们应该确保程序正常运行,并且其他没有安装服务器的用户也能使用。如何实现这一点?序列化数据是个好主意,但据我所知,有必要对所有数据进行反序列化,然后查找正确的记录。

正如前面的评论所说,我认为您有两种选择

随客户机一起提供数据库(使用Sql Express或其他类似解决方案)。这应该可以很好地工作,并且在没有连接到集中式服务器的情况下也可以工作,但是您的客户机包的大小将非常大。如果您做了任何更改,它将只在本地进行,但似乎您只从客户端读取数据库

但是如果我理解正确的话,您可以为每个客户机安装sql server,因为您提到了“尚未安装服务器的用户”?然后,您已经遇到了需要向每个客户机发送大量数据的问题,以及在需要刷新数据时更新所有数据库的问题

另一个解决方案是允许从客户端访问数据库。这可以通过多种方式工作,如果您的所有用户都在域中,您可以根据其域用户处理身份验证,并跳过身份验证部分。然后,您只需要发送客户端,跳过大型服务器和所有数据的安装

如果他们不在域中,但仍在您的网络中,您可以在应用程序中添加登录名以允许访问数据库,或者如果您信任所有用户,则可以添加只读帐户,并对该帐户的登录名进行硬编码

如果您想在可信环境之外访问数据,当然应该为每个用户添加一个单独的登录名以允许访问,甚至最好在数据库之前使用一个api来处理来自客户端的请求,然后以受控方式对数据库进行搜索


我个人倾向于使用集中式数据库来跳过所有设置新用户的工作,并且在数据需要刷新时也有一个更新点,但当然这一切都取决于您的用户在哪里。

正如前面的评论所说,我想您有两个选择

随客户机一起提供数据库(使用Sql Express或其他类似解决方案)。这应该可以很好地工作,并且在没有连接到集中式服务器的情况下也可以工作,但是您的客户机包的大小将非常大。如果您做了任何更改,它将只在本地进行,但似乎您只从客户端读取数据库

但是如果我理解正确的话,您可以为每个客户机安装sql server,因为您提到了“尚未安装服务器的用户”?然后,您已经遇到了需要向每个客户机发送大量数据的问题,以及在需要刷新数据时更新所有数据库的问题

另一个解决方案是允许从客户端访问数据库。这可以通过多种方式工作,如果您的所有用户都在域中,您可以根据其域用户处理身份验证,并跳过身份验证部分。然后,您只需要发送客户端,跳过大型服务器和所有数据的安装

如果他们不在域中,但仍在您的网络中,您可以在应用程序中添加登录名以允许访问数据库,或者如果您信任所有用户,则可以添加只读帐户,并对该帐户的登录名进行硬编码

如果您想在可信环境之外访问数据,当然应该为每个用户添加一个单独的登录名以允许访问,甚至最好在数据库之前使用一个api来处理来自客户端的请求,然后以受控方式对数据库进行搜索


我个人倾向于使用集中式数据库来跳过所有设置新用户的工作,并在数据需要刷新时有一个单点进行更新,但这当然取决于用户的位置。

您尝试过使用Sql Express吗?您是否尝试过将数据序列化到一个文件,然后将其加载回?Ian建议您可以公开局域网上的SQL server。这有很大的问题,因为它会遇到身份验证/安全问题,所以一个步骤是保护数据库,但仍然通过Web API公开它。当你有1.5 GB的信息要公开时,我不知道还能做什么。我认为通过对象序列化可以解决这个问题,但我必须在每次程序启动时反序列化所有对象(1.5 GB),然后再进行搜索……反序列化所有数据就像每天上班时把所有家具搬进卡车,回家后再把它们搬回去。这是可能的,但有点极端。如果您的数据未被更改,您可以通过将其置于只读模式来锁定数据库。@KhorenMansuryan我的建议意味着您只需在安装或首次运行时将其加载回本地SQLExpress数据库一次。之后,应用程序将像在计算机上一样运行。如果您有无法访问SQL Server数据库的用户(例如远程办公室),这可能是一个很好的方法,因为Ben指出,这也是对数据的只读使用。如果没有,请阅读同步框架。您是否尝试过使用Sql Express?您是否尝试过将数据序列化到一个文件,然后将其加载回?Ian建议您可以公开局域网上的SQL server。这有很大的问题,因为它会遇到身份验证/安全问题,所以一个步骤是保护数据库,但仍然通过Web API公开它。我不知道当你有1.5克的时候还能做什么