2014-02-27 40 views
0

我正在尝试编写一个Powershell脚本来重新部署项目到SSIS并且不会毁坏目录我只是想删除包含该项目的文件夹。使用Powershell删除SSISDB目录中的SSIS文件夹

FolderToDrop in SSISDB

下面是对FolderToDrop调用Drop()代码:时引发

$integrationServices = New-Object $Namespace".IntegrationServices" $sqlConnection 
$catalog = $integrationServices.Catalogs["SSISDB"] 
if ($catalog.Folders.Contains("FolderToDrop")) { 
    $catalog.Folders["FolderToDrop"].Drop() 
} 

例外:

Exception calling "Drop" with "0" argument(s): "Operation 'Drop' on object 'CatalogFolder[@Name='FolderToDrop']' failed during execution." 
At C:\Projects\Scripts\Deploy.ps1:36 char:29 
+  $catalog.Folders["FolderToDrop"].Drop <<<<() 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : DotNetMethodException 

任何想法,以什么我缺少努力删除这个文件夹?

回答

0

看起来您需要在删除文件夹之前删除环境和项目。

$folder = $catalog.Folders[$FolderName] 

if($folder.Environments.Contains($EnvironmentName)) { 
    $folder.Environments[$EnvironmentName].Drop() 
} 

if($folder.Projects.Contains($ProjectName)) { 
    $folder.Projects[$ProjectName].Drop() 
} 

$folder.Drop() 
0
private void CatalogFolderDrop(String fdr) 
    { 
     while (mtIntegrationServices.Catalogs["SSISDB"].Folders[fdr].Environments.Count > 0) 
     { 
      mtIntegrationServices.Catalogs["SSISDB"].Folders[fdr].Environments.ElementAt(0).Drop(); 
     } 
     while (mtIntegrationServices.Catalogs["SSISDB"].Folders[fdr].Projects.Count > 0) 
     { 
      mtIntegrationServices.Catalogs["SSISDB"].Folders[fdr].Projects.ElementAt(0).Drop(); 
     } 
     mtIntegrationServices.Catalogs["SSISDB"].Folders[fdr].Drop(); 
    } 
相关问题