【问题标题】:Operating system error code 3(The system cannot find the path specified.) MSSQL running on linux server操作系统错误代码3(系统找不到指定的路径。) linux服务器上运行的MSSQL
【发布时间】:2021-06-30 13:11:08
【问题描述】:

我收到以下操作系统错误:

代码3(系统找不到指定的路径。)

客户端机器是 windows 10,MSSQL 服务器在 Ubuntu 20.04 上运行。

查询是

Declare @JSON varchar(max)
SELECT @JSON=BulkColumn
FROM OPENROWSET (BULK '/home/user/RC_2015-01.json', SINGLE_CLOB) import
SELECT *
FROM OPENJSON (@JSON)

文件/home/user/RC_2015-01.json 本地存在于MSSQL 服务器上。我也做了一个 sudo chown mssql RC_2015-01.json。

文件权限如下:
-r-xr-xr-x 1 mssql user 31648374104 Jun 24 23:54 RC_2015-01.json

【问题讨论】:

  • mssql 用户或组是否有权执行和读取目录/home/user?虽然通常情况下,主目录具有755 的默认权限,但并非总是如此。
  • 您也可以尝试以mssql 用户身份访问该文件。使用sudo su mssql 模拟用户。然后使用cat(或tail,如果它是一个非常大的文件)尝试读取内容:cat /home/user/RC_2015-01.json
  • 然而,理想情况下,我建议不要mssql 用户需要访问的数据存储在/home 目录中。相反,把它放在它明确有权读取和写入的地方。这可能意味着在你的根目录中创建一个新文件夹,或者像 /media 目录这样的地方,或者 SQL Server 存储它的文件的地方(/var/opt/mssql 在 Ubuntu 上) .

标签: sql-server sql-server-on-linux


【解决方案1】:

谢谢大家。按照建议,我通过 sudo su mssql 模拟 mssql 并将文件复制到 /var/opt/mssql。

现在正在执行以下查询:

Declare @JSON varchar(max)
SELECT @JSON=BulkColumn
FROM OPENROWSET (BULK '/var/opt/mssql/RC_2015-01.json', SINGLE_CLOB) import
SELECT *
FROM OPENJSON (@JSON)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 2019-12-22
    • 2020-06-24
    • 1970-01-01
    • 2016-08-04
    • 2018-08-26
    相关资源
    最近更新 更多