【发布时间】:2016-06-28 15:52:21
【问题描述】:
这类问题我有好几个条目,但似乎没有一个能为我解决。
My SQL SERVER 和 SQL SERVER AGENT 服务都设置为同一个用户帐户。
我有一个存储过程,它执行以下操作(删除了错误检查)
exec XP_CMDSHELL 'net use P: \\machine/share password /user:machine\user'
exec XP_CMDSHELL 'dir p: /b /a-d-h-s > p:\dir.txt'
CREATE TABLE #FilesTemp ( Filename varchar(200) )
BULK INSERT #FilesTemp
FROM 'p:\dir.txt'
WITH
(
ROWTERMINATOR = '\n'
)
当我从 SSMS 运行存储过程时,它运行良好。当我通过作业运行它时,XP_CMDSHELL 调用正常工作并创建了“dir.txt”文件。但是批量插入失败并出现错误 3 (p:\dir.txt not found)。
我已登录 SSMS,使用“sa”连接到 SQL Server,并且该作业归 sa 所有。正在创建共享的用户具有必要的权限。
更多信息:
有一条评论(然后显然已删除)询问我是否正在从服务器计算机运行 SSMS。我试过了。
显然,当我使用 Windows 身份验证运行时,批量插入失败,但在将存储过程作为 SA 运行时,它可以工作。代理正在使用 Windows 身份验证运行并失败。
但是为什么呢?我无法理解安全问题。
有什么想法吗?
【问题讨论】:
标签: sql-server bulkinsert sql-server-agent