EXEC xp_cmdshell 'bcp "SELECT lastconnectip FROM RF_USER.dbo.tbl_UserAccount" queryout "C:\test.txt" -T -c'
上面的命令运行,输出:
NULL
Starting copy...
1000 rows successfully bulk-copied to host-file. Total received: 1000
NULL
1158 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 1 Average : (1158000.00 rows per sec.)
NULL
但实际上没有写入文件。我错过了什么?用户确实拥有 SQL 2008 R2 的完全权限 (sysadmin)。
在 sql 查询/触发器中使用 NETSH 的另一种方法也可以代替上述方法。
对于系统管理员,
xp_cmdshell
将命令作为 SQL 数据库引擎服务帐户运行。确保该帐户已被授予目标位置的写入权限。
您可能会在客户端计算机上查找该文件。
xp_cmdshell
在服务器上执行,所以C:\test.txt
在 SQL Server 机器上查找。