本地文件系统可以作为 SQL Server 外部数据源吗?

Posted

技术标签:

【中文标题】本地文件系统可以作为 SQL Server 外部数据源吗?【英文标题】:Can local file system be an SQL Server external data source? 【发布时间】:2021-12-12 13:48:57 【问题描述】:

我刚刚接管了对 ASP.NET MVC 网站的支持。实时站点在 Azure 中运行,并使用 Azure 存储进行上传。它的功能之一是导入 Excel 电子表格并使用其中的数据更新 SQL Server。 Azure 存储是 SQL Server 中的外部数据源。 excel 数据被提取为 csv 文件,这些是 SQL Server 更新的来源。

我正在本地运行应用程序,在 Visual Studio 中,使用本地 SQL Server。这样做时,将导入到本地文件系统。但是,处理电子表格的代码失败了,因为它希望电子表格在外部数据源中,而不是在本地文件系统中。

我认为我需要做的就是将本地文件系统设置为 SQL Server 中的外部数据源,但我在文档中看不到这样做的方法。有办法吗?我不希望在本地运行时更改代码以执行不同的操作。

【问题讨论】:

【参考方案1】:

外部数据源用于建立连接并支持这些主要用例:

使用PolyBase 进行数据虚拟化和数据加载 使用BULK INSERTOPENROWSET 进行批量加载操作

如果您使用 Azure 存储作为 SQL Server 中的外部数据源,并将本地文件系统设置为 SQL Server 中的外部数据源:

SQL Server 语法

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] PUSHDOWN =  ON | OFF  ]
    [ [ , ] TYPE =  STORAGE_TYPE  ]
    [ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]

请参阅此 Microsoft 文档Create external data source to reference a SQL Server named instance via PolyBase connectivity for clear information.

【讨论】:

我自己已经阅读了这份文档。我不清楚它是否包括将本地文件系统设置为外部数据源,这个答案对我没有帮助。 FILESTREAM 使基于 SQL Server 的应用程序能够存储非结构化数据。 FILESTREAM 通过将 varbinary(max) 二进制大对象 (BLOB) 数据作为文件存储在文件系统上,将 SQL Server 数据库引擎与 NTFS 或 ReFS 文件系统集成。 Transact-SQL 语句可以插入、更新、查询、搜索和备份 FILESTREAM 数据。请参考此MSFT documentation 以了解有关使用 Transact-SQL 语句将文件系统作为外部数据源访问的更多信息。 您好@Ian - 如果答案有帮助,请Accept it as an Answer,以便遇到相同问题的其他人可以找到此解决方案并解决他们的问题。

以上是关于本地文件系统可以作为 SQL Server 外部数据源吗?的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Docker 容器连接到外部 SQL Server

SQL Server 2005 中的复杂串联

是否可以在 SQL Server 中使用通配符作为 OPENJSON 的参数?

SQL Server连接本地数据库时系统找不到指定的文件,配置管理器无法连接到 WMI 提供程序

VMware Workstation 11 搭建windows server 2012 之sql server 2012集群常见问题整理

vCenter 6.5U1 Windows SQL Server 2012 安装