Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何解决拒绝访问与SQL Server v18.1共享的文件夹中的文件的问题?_C#_Sql_Sql Server_Permissions_Bulk - Fatal编程技术网

C# 如何解决拒绝访问与SQL Server v18.1共享的文件夹中的文件的问题?

C# 如何解决拒绝访问与SQL Server v18.1共享的文件夹中的文件的问题?,c#,sql,sql-server,permissions,bulk,C#,Sql,Sql Server,Permissions,Bulk,我正在使用一个代码(在C#和Visual Studio中)搜索共享文件夹中的图像文件,并将其插入数据库中,该图像带有“openrowset(bulk…)。问题是数据库无法访问文件路由 我读到这个问题可以通过添加“bulkadmin”权限来解决。我无法将此权限添加到“sa”用户,因此我创建了具有此权限的其他用户。尽管如此,这并没有解决问题。我查看了文件夹和文件的许可证,以便查询访问,所有用户都有许可证,我认为这种配置不应该出现问题。返回代码的sqlCommand对象的查询示例如下: INSERT

我正在使用一个代码(在C#和Visual Studio中)搜索共享文件夹中的图像文件,并将其插入数据库中,该图像带有“openrowset(bulk…)。问题是数据库无法访问文件路由

我读到这个问题可以通过添加“bulkadmin”权限来解决。我无法将此权限添加到“sa”用户,因此我创建了具有此权限的其他用户。尽管如此,这并没有解决问题。我查看了文件夹和文件的许可证,以便查询访问,所有用户都有许可证,我认为这种配置不应该出现问题。返回代码的sqlCommand对象的查询示例如下:

INSERT INTO Partes_Cabecera_Firmas (id_parte,
                                    firma_tecnico,
                                    firma_cliente,
                                    usuario,
                                    fecha)
SELECT 1,
       tecnico.BulkColumn,
       cliente.BulkColumn,
       '(*user name)',
       '22/07/2019 10:28:00'
FROM OPENROWSET(BULK '\\(*ip)\ftproot\Partes\Firmas\1-JUAN RUIZ ALCAÑIZ\firma_tecnico.png', SINGLE_BLOB) tecnico ,
     OPENROWSET(BULK '\\(*ip)\ftproot\Partes\Firmas\1-JUAN RUIZ ALCAÑIZ\firma_cliente.png', SINGLE_BLOB) cliente;

插入时出现一个错误,上面写着:“无法进行批量加载。无法打开文件”(源文件)。操作系统错误代码:5(拒绝访问)。”。有人知道如何解决此问题吗?

您需要授予SQL Server正在运行的服务帐户,以访问远程主机上的共享。您可能需要与网络管理团队联系才能创建权限。运行SQL服务的用户需要访问文件位置。如果它没有,那么您可以将文件复制到它有权访问的地方,并修改查询以从那里获取它们。谢谢!!我将尝试此方法。数据库应使用Windows凭据,该凭据是一个组帐户,并且数据库的所有用户都应放入组帐户中。网络文件夹还应具有与用户具有相同组帐户的凭据。@jdweng从安全角度看。。。你确定吗?如果您有需要访问外部资源的查询,我可能会给SQLServices帐户所需的访问权限,然后用
executeas[sa]
修饰一个“受信任”的存储过程来进行实际访问,如果要避免使用多个exec语句的游标,请将这些访问隐藏在SQL CLR函数中。您需要授予SQL Server正在运行的服务帐户,以访问远程主机上的共享。您可能需要与网络管理团队联系才能创建权限。运行SQL服务的用户需要访问文件位置。如果它没有,那么您可以将文件复制到它有权访问的地方,并修改查询以从那里获取它们。谢谢!!我将尝试此方法。数据库应使用Windows凭据,该凭据是一个组帐户,并且数据库的所有用户都应放入组帐户中。网络文件夹还应具有与用户具有相同组帐户的凭据。@jdweng从安全角度看。。。你确定吗?如果您有需要访问外部资源的查询,我可能会给SQLServices帐户所需的访问权限,然后用
executeas[sa]
修饰一个“受信任”的存储过程来执行实际访问,或者如果您希望避免多个exec语句的游标,则将这些访问隐藏在SQL CLR函数中。