通过SQL SP映射到网络驱动器

时间:2008-12-18 18:30:12

标签: sql sql-server-2005

有没有办法使用存储过程映射到网络驱动器?我试过了:

xp_cmdshell 'net use Q: [shared_network_drive] [pwd] /user:[username]'

但我收到的错误是

'System error 1312 has occurred.'
'A specified logon session does not exist. It may already have been terminated.'

但是,当我在与SQL Server计算机相同的框中的cmd控制台中运行相同的命令时,根本没有问题。看起来SQL进程确实传递了正确的登录凭据信息。 SQL SP的任何方法吗?

7 个答案:

答案 0 :(得分:8)

在另一个论坛中,有人posted a tip通过指定包含其域名的用户名来解决System error 1312 has occurred.问题,如下所示:

net use Q: \\[host]\[folder] [pwd] /user:[host]\[username]

我试过了,它对我有用。

答案 1 :(得分:1)

您是否为xp_cmdshell设置了代理帐户?如果您不是sysadmin的成员,则需要代理帐户。 xp_cmdshell和sp_xp_cmdshell_proxy_account的文档将详细解释它,但请尝试执行以下操作:

EXEC sp_xp_cmdshell_proxy_account 'DOMAIN\Username', 'password'

当然,请将您的用户和密码信息替换为您希望执行此操作的网络上的帐户信息。

警告:xp_cmdshell可能是安全方面的巨大漏洞。确保您使用的代理帐户至少具有非常有限的安全性。不要使用任何类型的管理员帐户,也不要使用实际用户的帐户。

答案 2 :(得分:0)

为什么你甚至想要这样做?!?即使有可能,你应该仔细问自己为什么要这样做。

我的建议:不要。我的印象是你需要改变你的方法 - 无论网络驱动器映射可能服务的目的是什么,都应该在数据库引擎之外的更合适的位置进行。一旦你选择了合适的地方,实际调用映射可能会变得微不足道。

答案 3 :(得分:0)

罗德,你是对的。在SQL服务器中执行此操作是一个很大的风险,并非所有SQL管理员都允许打开此门。我正在做的是将遗留流程迁移到计划的SQL作业,以便所需的数据可供另一个部门的应用程序用于在另一个计划流程中获取数据。

我猜Windows服务作业可能是一个更好的应用程序,可以将数据拉出并将结果传输到所需的网络驱动器。

答案 4 :(得分:0)

实际上,使用Win Scheduled Tasks工具是我需要的。我可以创建一个.Net应用程序来完成这项工作,然后将应用程序添加到计划任务中。

答案 5 :(得分:0)

使用分布式文件系统时problem happens,无论您使用哪种操作系统。而是获取托管DFS内容的服务器的实际名称。

答案 6 :(得分:0)

我花了一个小时,但问题解决了:你必须指定[HOST] \ [用户名] 如果您这样写:u:/ username - 它不起作用