天道酬勤,学无止境

当 MS SQL SERVER 允许远程连接时,如何上传文件并将它们存储在服务器本地路径中?(How to upload files and store them in a server local path when MS SQL SERVER allows remote connections?)

问题

我正在使用 Delphi 和 MS SQL Server 开发一个 win32 windows 应用程序。 它在 LAN 中运行良好,但我正在尝试添加对 SQL Server 远程连接的支持(= 使用可以使用外部 IP 访问的数据库,如本文所述:http://support.microsoft.com/default .aspx?scid=kb;EN-US;914277)。

基本上我在数据库中有一个表,我保存 DocumentID、文档描述和文档路径(如\\FILESERVER\MyApplicationDocuments\45.zip )。

当然\\FILESERVER是服务器的本地(LAN)路径,但不是客户端的(因为我现在正在尝试添加对远程连接的支持)。

所以我需要一种访问\\FILESERVER的方法,即使我当然在 LAN 中看不到它。

我发现以下 T-SQL 代码片段非常适合“下载技巧”:

SELECT BulkColumn as MyFile FROM OPENROWSET(BULK '\FILESERVER\MyApplicationDocuments\45.zip' , SINGLE_BLOB) AS X

使用上面的代码,我可以在客户端下载文件。

但是怎么上传呢? 我需要一个“上传技巧”才能插入新文件,还需要删除或替换现有文件。

任何人都可以建议吗? 如果没有技巧,你能提出替代方案吗? 就像扩展存储过程或从服务器调用某些 .net 程序集一样。

回答1

如果你有sql 2008,那么你可以使用FILESTREAM,那么sql server会自动把它扔到磁盘上。

如果您有 sql 2005,我会考虑将数据移动到 varbinary(max) 列中并以这种方式处理(也很简单)。

如果这些都不适用,或者您不能将它推入 varbinary 列,那么我不会使用 sql server 来处理实际的文件内容,而只是拥有一个将文件存储在文件系统或 SAN 上的 Web 服务web服务可以轻松访问。 (与恕我直言相同)

更新:我想到的另一个想法。 如果您使用的是 SQL 2005/08,那么您可以在 .Net 中编写 CLR 存储过程。 这可以处理将 blob 数据传输到/从本地文件系统传输。

回答2

在理想的世界中,我会创建简单的: - ASP.NET Web 服务 - 或 .Net Remoting 服务(比 Web 服务更快) - 或新的 .Net 4.0 RIA 服务。

将其部署到自定义 TCP/IP 端口上的 SQL Server

该服务将侦听端口,客户端将通过该服务请求文件。 该服务将通过本地 LAN 获取文件并通过本地 OLE DB 连接与 DB 通信。

我不会使用任何 SQL Server“Web 服务”支持——这是安全和性能问题。

更新:由于这是 Delphi 应用程序 - 您可以使用 Delphi 执行相同操作,即使上述解决方案仍然有效,但需要更多工作来集成不同的技术。 Delphi 有自己的工具来构建远程应用程序

回答3

如果您使用的是 2005 年,您可以尝试将文件存储在某个临时表的临时 blob 字段中,然后调用存储过程,将文件放在您想要的位置,并根据需要更新路径字段。

在该存储过程中,您必须使用允许访问文件系统的扩展存储过程 (xp_something)。 这意味着应该为 sql server 启用这些。

顺便说一句,您正在尝试使用关系数据库作为文档数据库。 这迟早会适得其反。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何迁移 Access 数据库以供多个用户从任何地方使用(How to migrate a Access database to be available by multiple users from anywhere)
    问题 假设我有一个访问文件(或将两个文件拆分为一个包含数据的文件和一个前端文件)。 我想让不同位置的用户都可以使用它。 这个问题以前被问过,但有些答案是旧的,例如 在这里列出 SO 2879281在这里 SO 11979044在这里 SO 32667061在这里 似乎有很多方法可以实现这一点,我只是想征求意见,看看我是否错过了任何选择: 选项都有优点和缺点。 最显着的区别在于: 成本和时间需要重写access数据库到SQL Server 需要重新编写前端并发使用。 解决方案和性能的可扩展性。 使用 SQL Server 存储数据。 简单! 这是我看到的选项。 1、创建一个桌面前端文件链接到sql server数据。 每个用户在 PC 上都有自己的前端文件副本。 您自己管理自己的 SQL Server 数据库/实例或使用 MS Azure 或类似的 Web 服务。 (有免费版的 SQL Server 可以在服务器上安装和使用,或者你也可以我们 优点:您不需要重新编写前端文件。 缺点:您需要一个 SQL Server 实例。 您需要迁移您的数据表(并且您可能需要做一些工作来在 SQL Server 中复制它们,特别是如果您有数据宏,或使用特殊数据类型(如是/否、Multipel 选择组合框和其他一些) . 有免费工具可以完成大部分迁移,而付费工具可以完成更多迁移。 2. 将文件存储在
  • 如何将 ASP.NET 应用程序部署到实时服务器?(How do you deploy your ASP.NET applications to live servers?)
    问题 我正在寻找用于将 ASP.NET Web 应用程序项目(不是ASP.NET 网站)部署到生产中的不同技术/工具? 我对持续集成构建服务器在某个位置放置二进制文件和第一个用户请求命中这些二进制文件之间发生的工作流特别感兴趣。 您使用的是某些特定工具还是仅使用 XCOPY? 应用程序是如何打包的(ZIP、MSI、...)? 首次部署应用程序时,您如何设置应用程序池和虚拟目录(您是手动创建还是使用某些工具创建它们)? 当静态资源(CSS、JS 或图像文件)发生变化时,您是重新部署整个应用程序还是仅重新部署修改后的资源? 当程序集/ASPX 页面更改时如何? 您是否跟踪给定应用程序的所有已部署版本,如果出现问题,您是否有将应用程序恢复到先前已知工作状态的程序? 随意完成前面的列表。 以下是我们用于部署 ASP.NET 应用程序的内容: 我们向解决方案添加一个 Web 部署项目并设置它以构建 ASP.NET Web 应用程序我们向解决方案添加一个安装项目(非Web 安装项目)并将其设置为获取 Web 部署项目的输出我们添加自定义安装操作,并在 OnInstall 事件中运行自定义构建 .NET 程序集,该程序集使用 System.DirectoryServices.DirectoryEntry 在 IIS 中创建应用程序池和虚拟目录(此任务仅在第一次部署应用程序时执行) . 我们支持
  • Access数据库共享策略(Access database sharing strategies)
    问题 您采用什么策略让多人在一个访问数据库上工作? 是否可以在线托管它并使其功能仍然可用而无需开发自定义前端? 作为软件的 MS Access 有一些不错的功能,不需要任何编程来配置: 下拉列表 - 选择一个多复选框列表 - 选择多个 即使在线托管,是否也可以获得所有这些功能? 我基本上正在考虑一种替代方法,可以快速让人们使用上述 GUI 功能处理数据,而无需采用 webapp<>MySQL 方式。 回答1 我听说过的一种方法是将访问数据库导入 SQL Server 数据库。 (几乎任何版本都可以。)。 然后使用 Access 链接到 SQL Server 数据库,让用户像以前一样使用它。 看看这个链接:http://office.microsoft.com/en-us/access/HA010345991033.aspx 如果您想要一个在线解决方案,我建议您使用普通的 Web 应用程序架构。 (与适当的数据库交谈。)。 回答2 你在这里有一些很好的评论。 请记住,Access 2010 的情况发生了很大变化。 Access 2010 允许您构建 Web 应用程序。 开发过程与多年来非常相似,但是您不能在这些 Web 应用程序的表单中使用 VBA(您使用一种新的宏语言)。 这个新功能集允许您将构建的应用程序发布到网站。 这是我的一个应用程序在 access 2010 中运行的视频
  • 为什么会出现“无法连接服务器-与网络有关或与实例有关的错误”?(Why am I getting “Cannot Connect to Server - A network-related or instance-specific error”?)
    问题 尝试连接到SQL Server时出现以下错误: 无法连接到108.163.224.173。 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 验证实例名称正确,并且已将SQL Server配置为允许远程连接。 (提供者:命名管道提供程序,错误:40-无法打开与SQL Server的连接)(Microsoft SQL Server,错误:1326) 当我尝试在Visual Studio 2010中尝试将数据库配置为gridview时,将引发此错误。我不知道如何调试此错误。 您将如何调试此错误? 除了错误消息中提到的步骤之外,我还应该采取什么步骤来确定此处实际发生的情况? 回答1 我发现以下技术很有帮助: 确保您的数据库引擎配置为接受远程连接: 开始>所有程序> SQL Server 2005>配置工具> SQL Server外围应用配置器单击“服务和连接的外围应用配置” 选择有问题的实例>数据库引擎>远程连接启用本地和远程连接重新启动实例您可能需要在防火墙上为正在使用的SQL Server实例和端口创建一个例外: 开始>运行> Firewall.cpl 单击例外选项卡添加sqlservr.exe(通常位于C:\Program Files (x86)\Microsoft SQL Server\MSSQL.x\MSSQL\Bin
  • 在DB中存储图像-是或否?(Storing Images in DB - Yea or Nay?)
    问题 已锁定。 该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。 它目前不接受新的答案或互动。 因此,我正在使用一个将图像大量存储在数据库中的应用程序。 您对此有何看法? 我更倾向于将位置存储在文件系统中,而不是直接将其存储在数据库中。 您认为优点/缺点是什么? 回答1 我负责一些管理许多TB图像的应用程序。 我们发现最好将文件路径存储在数据库中。 有几个问题: 数据库存储通常比文件系统存储更昂贵您可以使用标准的现成产品来超级加速文件系统访问例如,许多Web服务器使用操作系统的sendfile()系统调用将文件直接从文件系统异步发送到网络接口。 存储在数据库中的图像无法从此优化中受益。 诸如Web服务器等之类的东西,不需要特殊的编码或处理即可访问文件系统中的图像数据库在图像和元数据之间的事务完整性很重要的地方胜出。 管理数据库元数据和文件系统数据之间的完整性更加复杂 (在Web应用程序的上下文中)很难保证数据已刷新到文件系统上的磁盘 回答2 与大多数问题一样,它并不像听起来那样简单。 在某些情况下,将图像存储在数据库中是有意义的。 您要存储动态变化的图像(例如发票),并且想要获得2007年1月1日的发票吗? 政府希望您保持6年的历史存储在数据库中的映像不需要其他备份策略。 存储在文件系统上的图像可以如果图像在数据库中,则更易于控制对图像的访问。
  • 为什么要在数据库中创建视图?(Why do you create a View in a database?)
    问题 为什么以及何时有人决定他们需要在数据库中创建视图? 为什么不运行普通的存储过程或选择呢? 回答1 视图提供了许多好处。 1.视图可以隐藏复杂性 如果查询需要连接多个表,或者具有复杂的逻辑或计算,则可以将所有逻辑编码到视图中,然后像在表中一样从视图中进行选择。 2.视图可以用作安全机制 视图可以从一个或多个表中选择某些列和/或行,并且可以在视图上而不是基础表上设置权限。 这允许仅显示用户需要查看的数据。 3.视图可以简化对遗留代码的支持 如果您需要重构一个会破坏大量代码的表,则可以用同名视图替换该表。 该视图提供了与原始表完全相同的架构,而实际的架构已更改。 这样可以避免引用该表的遗留代码被破坏,从而使您可以随意更改遗留代码。 这些只是视图如何有用的众多示例中的一部分。 回答2 除其他外,它可以用于安全性。 如果您有“客户”表,则可能要授予所有销售人员访问名称,地址,邮政编码等字段的权限,而不是credit_card_number的权限。 您可以创建一个视图,该视图仅包括他们需要访问的列,然后在视图上授予他们访问权限。 回答3 视图是查询的封装。 转换为视图的查询往往很复杂,因此将其保存为视图以供重用可能是有利的。 回答4 我通常创建视图以对通常用于报告目的的数据进行非规范化和/或聚合。 编辑 通过详细说明,如果我要拥有一个数据库,其中的某些实体是人员,公司,角色,所有者类型
  • 为SQL Server Express 2012启用远程连接(Enable remote connections for SQL Server Express 2012)
    问题 我刚刚在家庭服务器上安装了SQL Server Express 2012。 我试图从台式机的Visual Studio 2012连接到它,并反复得到众所周知的错误: 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 验证实例名称正确,并且已将SQL Server配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40-无法打开与SQL Server的连接) 我已尝试解决此问题: 在服务器上运行SQL Server配置管理器并启用SQL Server浏览器在服务器上为本地子网上的TCP,端口1433和1434添加Windows防火墙例外。 验证我在SQL Server实例上是否具有我在台式机上登录的用户的登录名。 验证我在SQL Server实例上使用Windows身份验证。 反复重新启动SQL Server和整个dang服务器。 拉我所有的头发。 如何获得SQL Server 2012 Express以允许远程连接!? 回答1 好吧,我很高兴问到。 我终于发现的解决方案在这里: 如何配置SQL Server Express,以允许在端口1433上进行远程tcp / ip连接? 运行SQL Server配置管理器。 转到“ SQL Server网络配置”>“ SQLEXPRESS的协议”。 确保已启用TCP / IP。
  • 我应该使用MySQL Blob字段类型吗?(Should I use MySQL blob field type?)
    问题 我正在努力决定我是否应该在即将到来的项目中使用MySQL Blob字段类型。 我的基本要求是,将可以查看某些数据库记录,并将多个文件上传并“附加”到这些记录。 视情况而定,只能看到某些人的记录。 几乎没有限制,可以上传任何类型的文件。 因此,以一种方式来看,如果我走MySQL路线,则不必担心病毒的蔓延或随机php文件被上传并以某种方式执行。 对于许可和使数据保持接近记录的方式,我还有一条更简单的途径。 另一个明显的方法是将数据存储在webroot之外的特定文件夹结构中。 在这种情况下,我必须为文件夹/文件提出一个特殊的命名约定,以跟踪它们在数据库中引用的内容。 使用MySQL Blob字段类型是否会对性能产生影响? 我担心选择的解决方案会阻碍网站的未来发展,同时也担心选择的解决方案将难以维护。 回答1 如果您的Web服务器将通过Web提供这些上载的文件,则将它们存储在文件系统上几乎可以肯定会提高性能。 然后,Web服务器将能够应用HTTP缓存提示,例如Last-Modified和ETag ,这将有助于提高用户多次访问同一文件的性能。 此外,网络服务器在投放时会自动为文件设置正确的Content-Type 。 如果将Blob存储在数据库中,那么当您应该从Web服务器免费获取它们时,最终将实现上述功能以及更多功能。 此外,从数据库中提取大量Blob数据可能最终成为数据库的性能瓶颈
  • SpringCloud配置文件最全最详细说明(properties和yml)
    eureka 属性名 默认值 说明eureka.client.allow-redirectsfalse指示服务器是否可以将客户端请求重定向到备份服务器/集群。 如果设置为false,服务器将直接处理请求,如果设置为true,则可能会向客户端发送HTTP重定向,并具有新的服务器位置。 eureka.client.availability-zones 获取此实例所在区域的可用性区域列表(用于AWS数据中心)。更改在运行时在registryFetchIntervalSeconds指定的下一个注册表提取周期中有效。eureka.client.backup-registry-impl 获取执行BackupRegistry的实现的名称,以便仅在eureka客户端启动时首次将注册表信息作为回退选项提取。对于需要额外的弹性的注册表信息的应用程序可能需要这一点,而无法运行它们。eureka.client.cache-refresh-executor-exponential-back-off-bound10 缓存刷新执行者指数退出相关属性。在发生超时序列的情况下,它是重试延迟的最大乘数值。eureka.client.cache-refresh-executor-thread-pool-size2 cacheRefreshExecutor初始化的线程池大小eureka.client.client
  • 如何在不创建大缓冲区的情况下将.NET对象的大图序列化为SQL Server BLOB?(How to I serialize a large graph of .NET object into a SQL Server BLOB without creating a large buffer?)
    问题 我们有如下代码: ms = New IO.MemoryStream bin = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bin.Serialize(ms, largeGraphOfObjects) dataToSaveToDatabase = ms.ToArray() // put dataToSaveToDatabase in a Sql server BLOB 但是内存流从大内存堆中分配了一个大缓冲区,这给我们带来了问题。 因此,如何在不需要足够的可用内存来容纳序列化对象的情况下流式传输数据。 我正在寻找一种从SQL Server获取流的方法,然后可以将其传递给bin.Serialize(),从而避免将所有数据保留在进程内存中。 同样用于回读数据... 一些更多的背景。 这是复杂的数值处理系统的一部分,该系统几乎实时处理数据以查找设备问题等,如果数据馈送等的数据质量出现问题,则进行序列化以允许重新启动。(我们存储数据馈送并可以在操作员修改了错误的值后重新运行它们。) 因此,我们对对象进行序列化的频率要高得多,然后对它们进行反序列化。 我们要序列化的对象包括非常大的数组(大多数为双精度数组)以及许多小的“更普通”的对象。 我们正在推动32位系统上的内存限制
  • WinForms 应用程序设计——将文档从 SQL Server 移动到文件存储(WinForms application design - moving documents from SQL Server to file storage)
    问题 我有一个连接到 SQL Server 的标准 WinForms 应用程序。 该应用程序允许用户使用图像列在表中上传当前存储在数据库中的文档。 我需要更改这种方法,以便将文档存储为文件,并将指向该文件的链接存储在数据库表中。 使用当前的方法 - 当用户上传文档时,他们不受其存储方式的影响,因为他们连接到数据库,他们不需要知道有关文件存储位置的任何信息,不需要特殊的目录权限等。 如果我为文档设置网络共享,我希望避免任何 IT 问题,例如用户必须有权访问此目录才能上传或访问现有文档。 有哪些选项可以做到这一点? 我想有一个临时数据库,以与当前方法相同的方式将文档上传到其中,然后在服务器上运行一个进程以将这些文件保存到文件存储中。 然后可以删除并重新创建该数据库以回收任何空间。 有没有更好的办法? 附加信息:我的应用程序没有 Web 服务器元素,所以我认为 WCF 服务是不可能的 回答1 您是否有理由首先将文件从数据库中取出? 仍然将它们保存在 SQL Server 中,但使用 FILESTREAM 列而不是IMAGE怎么样? 引自链接: FILESTREAM 使基于 SQL Server 的应用程序能够在文件系统上存储非结构化数据,例如文档和图像。 应用程序可以利用丰富的流 API 和文件系统的性能,同时保持非结构化数据和相应结构化数据之间的事务一致性。 FILESTREAM
  • 【Apache NIFI 翻译】2-Getting Started with Apache NiFi 入门
    【Apache NIFI 翻译】2-Getting Started with Apache NiFi 入门 原文地址:http://nifi.apache.org/docs.html Who is This Guide For? 本指南适用于从未使用过,或者对NiFi接触较少或仅在NIFI中完成过特定任务的用户。本指南并不是详尽的说明手册或参考指南,反而用户指南作为参考指南会非常有用,用户指南中会提供大量信息,旨在提供更加详尽的指导学习资源。相比之下,本指南旨在帮助用户了解如何使用NiFi,以便快速轻松地构建强大而灵活的数据处理流程。 ​ 本指南中的某些信息是仅适用于初次使用的用户的,而其他信息可能适用于那些使用过NiFi的人,本指南分为几个不同的部分,其中某些部分读者可能并不感兴趣,可以随意跳转到最适合我们的部分。 ​ 本指南希望可以帮助用户基本地了解NiFi是什么,而不是去深入研究,想要深入研究可以在Overview文档中找到更详细的信息 。 Terminology Used in This Guide ​ 在此之前,读者应该熟悉一些关键术语。我们将在这里从更高的层次解释这些特定于nifi的术语。 ​ FlowFile:每条"用户数据"(即用户带进NiFi的需要进行处理和分发的数据)称为FlowFile。FlowFile由两部分组成:Attributes 和 Content
  • 如何做好MySQL安全策略
    导读除了MySQL自身的账号密码安全管理,系统层面、应用层面的安全策略你注意到了吗?数据是企业核心资产,数据对企业而言是最重要的工作之一。稍有不慎,极有可能发生数据无意泄露,甚至被***恶意窃取的风险。每年业界都会传出几起大事件,某知名或不知名的公司被***(***的谐音,意思是整个数据库被***盗取)之类的。从数据安全上也可以分为外网安全及内部操作安全,下面分别讨论一下。内部操作安全策略1. 是否回收DBA全部权限试想,如果DBA没权限了,日常DB运维的活,以及紧急故障处理,该怎么实施呢?因此,建议在没有成熟的自动化运维平台前,不应该粗暴的回收DBA的太多权限,否则可能会导致工作效率降低的,甚至DBA有一种不被信任的负面情绪。2. MySQL层安全策略业务帐号最多只可以通过内网远程登录,而不能通过公网远程连接。增加运维平台账号,该账号允许从专用的管理平台服务器远程连接。当然了,要对管理平台部署所在服务器做好安全措施以及必要的安全审计策略。建议启用数据库审计功能。这需要使用MySQL企业版,或者Percona/MariaDB分支版本,MySQL社区版本不支持该功能。启用 safe-update 选项,避免没有 WHERE 条件的全表数据被修改;在应用中尽量不直接DELETE删除数据,而是设置一个标志位就好了。需要真正删除时,交由DBA先备份后再物理删除,避免误操作删除全部数据
  • 面试季-网络安全常见面试题整理1
    1、请描述常见 Web 攻击?Owasp TOP10有哪些? 常见 Web 攻击 XSS攻击 XSS(Cross Site Scripting)跨站脚本攻击,为了不与层叠样式表(CSS)混淆,故将跨站脚本攻击缩写为XSS。原理即在网页中嵌入恶意脚本,当用户打开网页时,恶意脚本便开始在用户浏览器上执行,以盗取客户端cookie、用户名、密码,甚至下载木马程式。 解决方法:XSS之所以会发生,是因为用户输入的数据变成了代码。因此,我们需要对用户输入的数据进行HTML转义处理,将其中的“尖括号”、“单引号”、“引号” 之类的特殊字符进行转义编码。 SQL注入攻击 通过把SQL命令伪装成正常的HTTP请求参数,传递到服务端,欺骗服务器最终执行恶意的SQL命令,达到入侵目的。攻击者可以利用SQL注入漏洞,查询非授权信息, 修改数据库服务器的数据,改变表结构,甚至是获取服务器root权限。总而言之,SQL注入漏洞的危害极大,攻击者采用的SQL指令,决定攻击的威力。当前涉及到大批量数据泄露的攻击事件,大部分都是通过利用SQL注入来实施的目的。 如何防范SQL注入攻击 Web端 1)有效性检验。 2)限制字符串输入的长度。 服务端 1)不用拼接SQL字符串。 2)使用预编译的PrepareStatement。 3)有效性检验。(为什么服务端还要做有效性检验?第一准则,外部都是不可信的
  • 网络安全知识体系
    SIEM (安全信息和事件管理) SIEM(安全信息和事件管理)是一个由不同的监视和分析组件组成的安全和审计系统。最近网络攻击的增加,加上组织要求更严格的安全法规,使SIEM成为越来越多的组织正在采用的标准安全方法。 但是SIEM实际上涉及到什么呢?它由哪些不同的部分组成?SIEM实际上如何帮助减轻攻击?本文试图提供一种SIEM 101。后续文章将深入探讨一些可用于实际实现SIEM的解决方案。 1、为什么我们需要SIEM? 毫无疑问,对计算机系统的攻击不断增加。Coinmining, DDoS, ransomware,恶意软件,僵尸网络,网络钓鱼——这只是今天那些正义之战所面临的威胁的一部分。 有趣的是,正如赛门铁克(Symantec)在其2018年互联网安全威胁报告中所指出的那样,不仅攻击数量在上升,使用的途径和方法也在上升: “从WannaCry和Petya/NotPetya的突然传播,到造币商的迅速增长,2017年再次提醒我们,数字安全威胁可能来自新的和意想不到的来源。”随着时间的推移,不仅威胁的数量在不断增加,而且威胁的范围也变得更加多样化,攻击者会更加努力地寻找新的攻击途径,并在此过程中隐藏自己的踪迹。 系统和网络监控在帮助组织保护自己免受这些攻击方面一直发挥着关键作用,多年来已经发展了一些相关的方法和技术。然而,网络犯罪性质的变化意味着一些攻击往往会被忽视
  • 在家中优秀的安全备份开发人员 [关闭](Good Secure Backups Developers at Home [closed])
    问题 关闭。 此问题不符合 Stack Overflow 准则。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其成为 Stack Overflow 的主题。 6年前关闭。 改进这个问题 对于在家做研发并且不能丢失任何工作的程序员来说,什么是一种好的,安全的,进行备份的方法? 使适应: 备份必须始终在相当容易到达的范围内。 无法保证 Internet 连接始终可用。 解决方案必须是免费的或合理定价,并受上述 2 的约束。 状况报告 目前仅考虑免费选项。 答案中建议使用以下开源项目(此处和其他地方): BackupPC 是一种高性能的企业级系统,用于将 Linux、WinXX 和 MacOSX PC 和笔记本电脑备份到服务器磁盘。 Storebackup 是一种备份实用程序,可将文件存储在其他磁盘上。 mybackware:开发这些脚本是为了为小型 MySQL 安装的基本灾难恢复创建 SQL 转储文件。 Bacula [...] 用于管理跨不同类型计算机网络的计算机数据的备份、恢复和验证。 从技术上讲,它是一个基于网络的备份程序。 AutoDL 2 和 Sec-Bk:AutoDL 2 是一个可扩展的独立于传输的自动文件传输系统。 它适用于将文件从临时服务器上传到生产服务器场中的每台服务器 [...] Sec-Bk 是一组简单的实用程序,可将文件安全地备份到远程位置
  • 进程间通讯(Inter-process communication)
    问题 我有两个应用程序:X和Y。 X是主要应用程序,它处理许多XML文件。 它已有10多年的历史,已经使用了六种技术来存储,处理和处理这些XML文件。 Y是我正在开发的调试工具,它可以以更易于理解的形式处理和显示XML文件。 基本上,它只有一组样式表,这些样式表将检测XML格式,并且如果识别出该格式,它将把XML转换为显示在TWebBrowser组件中的HTML。 问题: 当Y处于活动状态时,我希望X将处理的所有XML发送给Y以用于显示目的。 但是只有当Y运行时! 如果Y不在运行,则X不会执行任何操作。 Y的检测需要随时进行,并且必须快速。 我已经考虑过使用TCP / IP通信,但是由于缺少Y而导致的延迟太长了。 特别是由于有时会处理许多XML。 命名管道和类似的基于网络的解决方案也存在相同的问题。 我需要快速确定Y是否正在运行并且可用,如果是,则快速发送XML,然后继续X。 我还考虑过将Y做成一个基于COM的应用程序,或者添加一个带有允许进程间通信的事件的基于COM的DLL。 DLL解决方案将很有趣,因为它将向X公开方法以上传XML文件,然后将事件发送给Y以处理XML。 尽管我还需要检查DLL是否已注册,但这似乎是最好的选择。 如果没有,那么X甚至都无法调用它! 不会收到Y或其他DLL的客户也将使用应用程序X,因此在大多数情况下,该DLL将不会被注册。 (正如我所说的
  • fastcgi入门
    FastCGI 一种高性能的Web服务器接口 这是技术白皮书。 对GitHub的看法 公开市场,公司,1996年4月 1.导言 业务对Web的使用激增,对创建动态内容的服务器扩展应用程序产生了极大的需求。这些应用程序将允许企业交付产品、服务和消息,这些产品、服务和消息的形状和内容部分取决于与客户的交互和客户的知识。 这种远离静态Web内容的重要动向正在推动这些应用程序当前绑定的环境的局限性和弱点:CGI(公共网关接口)。最重要的是,它没有提供这些应用程序所需的性能。需要一个新的通信基础结构来将Web服务器与这些新应用程序连接起来。这就是开放市场发展FastCGI的原因。 FastCGI是一个快速、开放和安全的Web服务器接口,它解决了CGI固有的性能问题,而不引入专有API(应用程序编程接口)的开销和复杂性。 本文假设读者基本熟悉Web技术和开发Web应用程序。 公共网关接口 Web服务器应用程序的实际标准接口是CGI,它最初是在NCSA服务器中实现的。CGI有许多好处: 简单。这很容易理解。 语言独立。CGI应用程序几乎可以用任何语言编写。 进程隔离。由于应用程序在单独的进程中运行,bug的应用程序不能使Web服务器崩溃或访问服务器的私有内部状态。 开放标准。在每个Web服务器上都实现了某种形式的CGI。 建筑独立性。CGI不与任何特定的服务器体系结构(单线程、多线程等)绑定。
  • 华纳云:2021年适用于Linux的10个顶级开源缓存工具
    稳定的分布式计算系统和应用已经成为杰出企业的基石,特别是在关键任务业务流程的自动化和管理以及客户服务方面。身为开发人员和系统管理员,您应该提供各种信息技术(IT)解决方案,以确保您的系统效率最高。其中包括为系统/应用程序性能、可靠性、可用性和可伸缩性设计、测试和执行策略,以便从最终用户那里获得满意水平的服务。高速缓存是您可以依赖的一种非常基本而高效的应用程序交付技术。接下来,我们先来简单了解一下什么是缓存,以及/或如何应用缓存及其好处。 什么是缓存或内容缓存? 缓存(或内容缓存)是一种广泛使用的技术,用于将数据副本存储在临时存储位置(也称为缓存)。因此,与从原始存储中检索数据相比,数据可以轻松快速地访问。根据缓存的类型和用途,缓存中存储的数据可以包括文件或文件片段(如HTML文件、脚本、图像、文档等)。),数据库操作或记录,API调用,DNS记录等。 可以将硬件或软件作为缓存。可以在应用程序栈的不同层上实现基于软件的缓存(这是本文的重点)。缓存可以应用于客户端(或应用程序表现层),例如,浏览器或应用程序(或离线模式)缓存。大部分(如果不是全部)现代浏览器都有 HTTP缓存的实现。也就是说,当访问 Web应用程序时,允许您查看站点或应用程序上的最新数据或内容,而非使用浏览器中本地存储的内容的旧副本。 客户端缓存的另一个示例是DNS缓存,它发生在操作系统(OS)级别
  • 如何使MS SQL Server可用于连接?(How can I make MS SQL Server available for connections?)
    问题 我正在尝试从Java程序连接到MS SQL Server(在我的计算机上运行)。 我收到以下长期困扰的例外: Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.". 当我检查“属性”并在MS SQL的对象资源管理器中单击“查看连接属性”时,我发现“服务器不可用”。 这似乎与异常消息有关。 如何使服务器可用? 编辑: 我正在使用SQL Server 2008,并且现在已启用TCP / IP,并重新启动了实例。 我仍然被告知“服务器不可用”。 还有其他想法吗? 回答1