2

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

错误信息:

[Microsoft][SQL Native Client] 无法打开 BCP 主机数据文件

也许'$'字符无法识别?我该如何解决这个问题?

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

3 回答 3

2

只是你不能 BCP 数据直接到 UNC 路径,会有双跳问题,你必须在 2 个服务器之间设置约束委派。您需要做的是首先 BCP 到您的本地驱动器,然后将文件移动/复制到 UNC 路径,这实际上比您直接 BCP 到 UNC 路径更快,即使您正确设置它也是如此。信不信由你,试试看。

于 2013-03-27T06:29:11.380 回答
0

更有可能是安全问题:

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

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

于 2013-03-27T06:13:28.167 回答
0

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

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

2.授予 ​​SQL Server 服务帐户对文件夹“test”的写入权限,如果 SQL Server 在 NT 服务下运行,那么您需要给 Network服务帐户对文件夹的写入权限

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

4.如果一切都不起作用,那么首先BCP到本地文件夹,然后将文件robocopy到UNC路径,就像@Guna说的那样,最好直接将文件写入UNC路径,这是真的。

于 2013-03-27T06:58:24.270 回答