【发布时间】:2019-09-30 18:43:12
【问题描述】:
我无法通过 OPENROWSET 访问文本文件中的数据。该文件保存在本地。我提出的错误似乎与文件的位置有关,但我真的很困惑为什么 SQL Server 找不到它。
消息 12704,第 16 级,状态 1,第 3 行 在外部数据源“(null)”中指定了错误或不可访问的位置。
我使用的是 UNC 命名约定。而且我已经仔细检查了文件名和位置实际上是正确的并且文件确实包含数据。
谁能帮我更正这个 T-SQL 以便我可以通过 OPENROWSET 访问该文件?
DECLARE @json_data VARCHAR(MAX)
SELECT @json_data = BulkColumn FROM OPENROWSET(BULK'\\LAPTOP-14K308TA\C$\Users\EB\Desktop\Python Files\comp_data.json', SINGLE_BLOB) JSON;
SELECT @json_data as SingleRow_Column
IF (ISJSON(@json_data) = 1)
BEGIN
PRINT 'Imported JSON is valid'
END
ELSE
BEGIN
PRINT 'Invalid JSON imported'
END
GO
【问题讨论】:
-
运行查询的用户有权访问该路径并且可以看到它?
-
是的,用户可以访问路径并可以手动打开文件。
-
不要认为这是一个有效的 UNC 路径 - 第二个元素必须是一个共享,而“C:”不是一个共享。您可以(但可能不应该)使用管理共享“C$”。并且仍然不清楚您要使用的路径是运行您的实例(并执行查询)的机器本地还是运行此查询的人本地。也不清楚您所说的“用户有权访问......”是什么意思。需要权限的是您的实例的服务帐户 - 但现在无关紧要。
-
抱歉,用户是我,我没有在远程 SQL Server 实例上运行此查询,我在本地执行它。我试过了,但也没有用
-
如果 SQL 是本地的,文件也是本地的,则使用本地路径。
C:\Users\EB\Desktop\Python Files\comp_data.json.
标签: sql-server tsql openrowset