SSIS:使用不同的用户名和密码访问网络驱动器
是否有一种方法可以连接到需要不同用户名/密码的网络驱动器,而不是运行包的用户的用户名/密码SSIS:使用不同的用户名和密码访问网络驱动器,ssis,Ssis,是否有一种方法可以连接到需要不同用户名/密码的网络驱动器,而不是运行包的用户的用户名/密码 我需要从远程服务器复制文件。现在,我在Windows资源管理器中映射网络驱动器,然后执行文件系统任务。但是,最终该包将从另一台机器自动运行,并且需要自己映射网络驱动器。这可能吗?为什么不使用FTP任务将文件传送到本地计算机?在本地计算机上运行SSIS。使用二进制FTP传输时,速度非常快。请记住SSI的行delimter应该是LF,而不是CRLF,因为二进制FTp不会将LF(unix)转换为CRLF(win
我需要从远程服务器复制文件。现在,我在Windows资源管理器中映射网络驱动器,然后执行文件系统任务。但是,最终该包将从另一台机器自动运行,并且需要自己映射网络驱动器。这可能吗?为什么不使用FTP任务将文件传送到本地计算机?在本地计算机上运行SSIS。使用二进制FTP传输时,速度非常快。请记住SSI的行delimter应该是LF,而不是CRLF,因为二进制FTp不会将LF(unix)转换为CRLF(windows)您必须映射网络驱动器,下面是我现在使用的一个示例:
profile = "false"
landingPadDir = Dts.Variables("strLandingPadDir").Value.ToString
resultsDir = Dts.Variables("strResultsDir").Value.ToString
user = Dts.Variables("strUserName").Value.ToString
pass = Dts.Variables("strPassword").Value.ToString
driveLetter = Dts.Variables("strDriveLetter").Value.ToString
objNetwork = CreateObject("WScript.Network")
CheckDrive = objNetwork.EnumNetworkDrives()
If CheckDrive.Count > 0 Then
For intcount = 0 To CheckDrive.Count - 1 Step 2 'if drive is already mapped, then disconnect it
If CheckDrive.Item(intcount) = driveLetter Then
objNetwork.RemoveNetworkDrive(driveLetter)
End If
Next
End If
objNetwork.MapNetworkDrive(driveLetter, landingPadDir, profile, user, pass)
从那里只需使用该驱动器号并通过映射的驱动器访问文件
我遇到了一个新脚本的问题(导致我出现此问题),该脚本访问两个共享驱动器,并在驱动器之间执行一些复制/移动操作,我从SSIS得到一个错误,该错误表示:
This network connection has files open or requests pending.
at Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack, Boolean IgnoreReturn)
at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
at ScriptTask_3c0c366598174ec2b6a217c43470f581.ScriptMain.Main()
这只是在进程的“第二次运行”时,如果我第三次运行它,一切正常,因此我猜测连接没有正确关闭,或者它没有等待复制/移动完成,然后再继续或类似操作,但我找不到防止此错误的“关闭”或“刷新”命令。如果您有任何解决方案,请让我知道,但是上面的代码应该可以使用您的备用凭据映射驱动器,并允许您访问该共享
Zach您可以使用执行进程任务和“net use”命令来创建映射驱动器。下面是如何设置任务的属性: 可执行文件:net 参数:使用\Server\SomeShare您的密码/user:Domain\YourUser 执行过程之后的任何文件系统任务都将能够访问这些文件 替代方法 本章详细介绍了这些步骤,但基本内容如下: 1) 创建一个“执行进程任务”来映射网络驱动器(映射到z:) 2) 然后运行“文件系统任务”执行复制。请记住,目标“平面文件连接”必须将“DelayValidation”设置为True,因为z:\suchanduch.csv在设计时不存在 3) 最后,在完成另一个“执行流程任务”时取消映射驱动器
要使包更健壮,可以执行以下操作: 在第一个执行流程任务中,设置-FailTaskIfReturnCodeNotSuccessValue=False
如果最后一次断开连接不起作用,这将使程序包运行。这是一个较老的问题,但更新版本的带有SSIS数据库的SQL Server允许您使用代理执行SQ服务器作业
/c“NET USE Z:/delete/yes”
,以强制断开连接并获取错误。错误表示,“文件名、目录或卷标语法不正确”,这可以通过EXEC master..xp\u cmdshell@myCmd代码>?这确实可以在存储过程中完成,但就像执行过程一样,任务必须完成;您必须编写3个单独的过程,第二个过程使用映射的驱动器。此外,SQL Server无法在新驱动器上执行数据库操作,但您可以先将文件移动到网络上的文件夹中。该变量引用并用于访问CreateObject创建的对象(“WScript.network”)
Executable: cmd.exe
Arguments: /c "NET USE Z: "\\servername\shareddrivename" /user:mydomain\myusername mypassword"
Executable: cmd.exe
Arguments: /c "NET USE Z: /delete"