Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell可以';t访问SQL Server 2012 Microsoft.SqlServer.DTSRuntimeWrap_Powershell_Ssis_Sql Server 2012 - Fatal编程技术网

Powershell可以';t访问SQL Server 2012 Microsoft.SqlServer.DTSRuntimeWrap

Powershell可以';t访问SQL Server 2012 Microsoft.SqlServer.DTSRuntimeWrap,powershell,ssis,sql-server-2012,Powershell,Ssis,Sql Server 2012,我正在尝试编写一个powershell脚本来执行服务器上已有的dtsx包。安装软件包不是一个问题,但执行起来相当令人沮丧。 我在网上找到的所有内容都表明,我需要加载ManagedDTS程序集,并从以下命令开始实例化所需的基本对象: $dtsapp = New-Object ("Microsoft.SqlServer.Dts.Runtime.Application") 但是每当我运行这一行时,就会出现以下错误 New-Object : Exception calling ".ctor" with

我正在尝试编写一个powershell脚本来执行服务器上已有的dtsx包。安装软件包不是一个问题,但执行起来相当令人沮丧。 我在网上找到的所有内容都表明,我需要加载ManagedDTS程序集,并从以下命令开始实例化所需的基本对象:

$dtsapp = New-Object ("Microsoft.SqlServer.Dts.Runtime.Application")
但是每当我运行这一行时,就会出现以下错误

New-Object : Exception calling ".ctor" with "0" argument(s): "Could not load file or      assembly 'Microsoft.SqlServer.DTSRuntimeWrap, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified."
At C:\Users\admin\Documents\test-ssis-dtsx.ps1:4 char:11
+ $dtsapp = New-Object ("Microsoft.SqlServer.Dts.Runtime.Application")
+           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [New-Object], MethodInvocationException
+ FullyQualifiedErrorId :   ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
我使用以下两种方式加载ManagedDTS程序集:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ManagedDTS")

这两个命令执行时都没有问题,但实例化对象仍然失败。DtsRuntimeWrap.dll存在于系统中,但不在GAC_MSIL文件夹(ManagedDTS.dll所在的位置)中。我很犹豫是否开始跨多个服务器复制DLL,因为我想在远程服务器上运行此脚本,如果不需要,我不想向每个服务器添加这些配置步骤

我运行此操作的机器是一台全新安装的Windows 2008 R2和SQL Server 2012 SP1。我正在使用powershell 3.0

Name                           Value
----                           -----
PSVersion                      3.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.18444
BuildVersion                   6.2.9200.16481
PSCompatibleVersions           {1.0, 2.0, 3.0}
PSRemotingProtocolVersion      2.2
知道是什么导致了这个错误吗

显然,DTSRuntimeWrap在GAC_32文件夹中可用。我尝试将其复制到GACmsil文件夹并运行:

Add-Type -AssemblyName "Microsoft.SqlServer.DTSRuntimeWrap, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
这导致了以下错误:

Add-Type : Could not load file or assembly 'Microsoft.SqlServer.DTSRuntimeWrap.dll' or one of its dependencies.  is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)
At line:1 char:1
+ Add-Type -AssemblyName "Microsoft.SqlServer.DTSRuntimeWrap, Version=11.0.0.0, Cu ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [Add-Type], BadImageFormatException
+ FullyQualifiedErrorId : System.BadImageFormatException,Microsoft.PowerShell.Commands.AddTypeCommand

还尝试在新的Windows 2012 R2框(使用SQL Server 2012 SP1)上运行这些命令。这里我得到了完全相同的错误,因此问题似乎与SQL Server 2012有关。

我们使用以下命令从PowerShell运行SSIS命令:

SSIS命令设置为:

对于64位:

"C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe" /f "c:\path\package.dtsx" /Reporting V
对于32位:

"C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe" /f c:\path\package.dtsx" /Reporting V
并从PowerShell运行,其中包括:

Command.Run SSISCommand, 2, true

您是通过DLL进行复制,还是在该计算机上安装了完整的集成服务?如果您刚刚复制了DLL,他们可能正试图与集成服务部门联系。。。另外,顺便说一句,您在其上执行SSIS包的每台计算机都需要有integration services许可证。当我安装SQL Server 2012时,我使用默认的所有功能运行它,没有复制单独的dll。但不知道有任何特殊SSIS许可证。SQL Server实例具有许可证。此外,当我通过DTExec在本地运行包时,它运行良好。最后,我甚至连包裹都拿不到。实例化DTS应用程序对象会导致错误。好的,我刚才提到了许可证,因为您提到了在一堆远程服务器上运行它:-)。至于DTS对象。。。你确定你要找的是DTSRuntimeWrap而不是DTSPipelineWrap吗?我有一些运行包的C#应用程序,它们使用DTSPipelineWrap和ManageDDT,两者都位于C:\Program Files(x86)\Microsoft SQL Server\110\SDK\Assemblys\错误是由“$dtsapp=New Object”(“Microsoft.SqlServer.Dts.Runtime.Application”)”行引起的,它输出的错误涉及DTSRuntimeWrap。。。也存在于同一文件夹中。但Powershell似乎无法访问它。请尝试使用gacutil手动将其添加到GAC?我也使用过这种方法,它确实有效。但是,当我试图通过WinRM执行它时,它无法声明内存问题。WinRM似乎在一个资源很少的对象中运行它的任务。因此,我正在使用服务器上已有的dtsx包执行“仅powershell”方法。只是尝试了使用/SQL参数在服务器上执行该包的方法。这导致在WinRM上执行时执行错误。
Command.Run SSISCommand, 2, true