Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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
使用BCP和隐藏路径从SQL导出数据时出错_Sql_Sql Server_Bcp - Fatal编程技术网

使用BCP和隐藏路径从SQL导出数据时出错

使用BCP和隐藏路径从SQL导出数据时出错,sql,sql-server,bcp,Sql,Sql Server,Bcp,当我使用像\\\twn-a110093\s$\SNData1.csv这样的隐藏路径时,它不起作用 错误消息: [Microsoft][SQL本机客户端]无法打开BCP主机数据文件 可能无法识别“$”字符?如何解决此问题 Exec master..xp_cmdshell 'bcp " select * from sfm.dbo.tblSNDataDetail " queryout "\\twn-a110093\s$\SNData1.csv" -c -t, -T -S TWN-SQL-01' 更可

当我使用像
\\\twn-a110093\s$\SNData1.csv这样的隐藏路径时,它不起作用

错误消息:

[Microsoft][SQL本机客户端]无法打开BCP主机数据文件

可能无法识别“$”字符?如何解决此问题

Exec master..xp_cmdshell 'bcp " select * from sfm.dbo.tblSNDataDetail " queryout "\\twn-a110093\s$\SNData1.csv" -c -t, -T -S TWN-SQL-01'

更可能是安全问题:

“xp_cmdshell生成的Windows进程与SQL Server服务帐户具有相同的安全权限”


确保SQL Server服务帐户用户有权访问该路径/文件。

如果您无法将数据直接BCP到UNC路径,则会出现双跳问题,您必须在两台服务器之间设置受约束的委派。您需要做的是首先将BCP复制到本地驱动器,然后将文件移动/复制到UNC路径,这实际上比直接将BCP复制到UNC路径要快,即使您设置正确。信不信由你,试试看

您正在BCP命令中使用UNC路径,实际上您直接在驱动器根S$上创建了一个文件。这将涉及安全检查。您可以尝试的是:

1.首先将路径从驱动器根文件夹更改为子文件夹,如
\twn-a110093\s$\Test\SNData1.csv


2.授予SQL Server服务帐户对文件夹“test”的写入权限,如果SQL Server在NT服务下运行,则需要授予网络服务帐户对文件夹的写入权限

3.如果“twn-a110093”不是SQl server所在的服务器,则在文件共享文件夹上,您可能需要授予“所有人”完全权限。


4.若所有这些都不起作用,那个么首先将BCP输出到本地文件夹,然后将robocopy文件复制到UNC路径,就像@Guna所说的,最好直接将文件写入UNC路径,这是正确的

但我给了“账户:所有人”对文件的完全控制权?隐藏共享的权限如何?相同。它是“帐户:所有人”完全控制。有趣。。。如果进程在sql server服务帐户下执行,为什么会出现双跳问题?很好。但请记住,直接将文件写入UNC路径要比先将文件写入本地然后将文件复制到UNC路径慢。