本地文件系统可以作为 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 INSERT
或OPENROWSET
进行批量加载操作
如果您使用 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 外部数据源吗?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 SQL Server 中使用通配符作为 OPENJSON 的参数?
SQL Server连接本地数据库时系统找不到指定的文件,配置管理器无法连接到 WMI 提供程序
VMware Workstation 11 搭建windows server 2012 之sql server 2012集群常见问题整理