【问题标题】:How to map network drive in SQL query without using XP_CMDSHELL如何在不使用 XP_CMDSHELL 的情况下在 SQL 查询中映射网络驱动器
【发布时间】:2016-10-07 22:09:47
【问题描述】:

希望仅在 SQL 查询中将网络驱动器映射到不同的 AD 帐户。

XP_CMDSHELL 在我们的环境中被禁用。从技术上讲,我可以打开它,然后“净使用”驱动器,然后在查询中再次将其关闭,但正在寻找更清洁的解决方案??

【问题讨论】:

  • 您在需要映射驱动器的 T-SQL 中做什么?
  • net use via xp_cmdshell 是最简单的方法,我猜 :)
  • @Dan Guzman 我正在从具有特定安全性的网络文件夹中提取导入文件。我获得了一个可以访问该文件夹的 AD 帐户...
  • @gofr1 无法使用 xp_cmdshell - 它在我们的产品数据库中被禁用......
  • @C-COOP 你有创建/开始工作的权限吗?如果是,您可以在第一个作业网中创建两个作业,每一步仅用于在第二个创建驱动器 - 删除 l。然后运行它们。但请注意,在这种情况下,作业将开始,您需要等待几秒钟才能在等待延迟的帮助下进行创建

标签: sql-server tsql xp-cmdshell net-use


【解决方案1】:

您可以在每一步中创建两个作业(类型为:Operating system (CmdExec),它将在cmd 中启动命令)。

  • 第一份工作net use创建驱动器
  • 第二个-delete

然后运行它们。

但请注意,在这种情况下,作业将开始,您需要等待几秒钟才能在 wait delay 的帮助下进行创建。

示例:

创建工作NetUse。 在步骤中创建 1 个步骤,类型为:Operating system (CmdExec) 在命令部分写net use like:

net use z: \\HOST\FOLDER pa$$word /user:DOMAIN\USER /savecred /p:yes

我想将我的 z: 驱动器映射到 HOST 上的 FOLDER 共享文件夹。我想以另一个用户帐户的身份连接,我有 [/user] 的用户名存储在 DOMAIN 域中,密码为 pa$$word。

我不想每次启动计算机时都手动映射此驱动器[/p:yes]并且我不想每次都输入我的用户名和密码[ /已保存]

第一项工作已经完成。

第二份工作相同,但使用另一个命令:

net use z: /delete

然后你可以这样开始:

EXEC dbo.sp_start_job N'Job Name Here' 

它会延迟锻炼,所以你需要使用:

WAITFOR DELAY '00:10'; --10 seconds delay before next statement

【讨论】:

  • 好的,我明白了 - 很好的解决方案。我的 net use 命令有问题...您看到它有问题吗?
  • cmd.exe /c 如果不存在 z:* net use z: \\server-fp-01\Finance PASSWORD /U:USERID
  • 摆脱cmd.exe。你写的命令会在cmd中自动执行。
  • if not exists z:\ ( net use ... ) else ( ... )
  • 确实有效,这种方法有什么后果吗?我是否会影响其他人的 sql server 代理的驱动器映射?我想知道是否已经有另一个 Z: 驱动器由运行代理服务的服务帐户映射?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多