我有一个运行在SQL数据库上的日常例程,并使用BCP导出一些数据。 我需要将这些文件移动到Linux机器,所以我使用Samba共享文件夹。
本地导出工作正常 ,但是当我尝试直接导出到Linux时会触发错误。
如果我尝试手动复制文件 没有错误 ,我可以做到这一点没有任何问题。
SQL查询正在SQL Server Management Studio下运行
DECLARE @sql VARCHAR(1000) set @sql = 'BCP "SELECT rawdata FROM database.dbo.file where [id] = 123" queryout "Z:\files\123.jpg" -S SERVER\SQLINST -T -f D:\file.fmt' EXEC xp_cmdshell @sql
错误是:
SQLState = S1000, NativeError = 0 Error = [Microsoft][SQL Server Native Client 11.0]Unable to open BCP host data-file NULL
Sambaconfiguration如下所示:
[doc_sync] path = /var/www/html valid users = filesync read only = no writeable = yes browseable = yes public = yes guest ok = yes
文件夹上的文件权限是777.另外,我在Linux机器上镜像的windows(filesync)中创build了一个本地用户,这样用户就没有问题了。
我也试着看看是否有任何问题与xp_cmdshell命令,并试图这一点
EXEC xp_cmdshell 'MKDIR "Z:\Data\"'
其中Z:是Samba monunted驱动器,错误是:
output The system cannot find the drive specified.
XP_CMDSHELL不能使用已安装在系统中的驱动器号,所以需要将其导出为这样的SQL查询
EXEC XP_CMDSHELL 'net use Z: \\SRV\files /USER:username pass'