SSIS Catelog中的項目太大導致VS導入項目的時候報錯Out Of Memory

来源:https://www.cnblogs.com/xuyuchn/archive/2020/03/27/SSIS_Catelog_Out_Of_Memory.html
-Advertisement-
Play Games

很苦惱,PROD上的SSIS項目,日積月累的往裡部署,加包,也沒覺得是個什麼問題。 但是今天從需要從PROD上把這個項目中所有的包都down下來,VS居然報錯Out Of Memory,無論是直接連接SSIS Catelog或者用SSMS導出ispac均報錯。 解決方法很簡單,使用PowerShel ...


很苦惱,PROD上的SSIS項目,日積月累的往裡部署,加包,也沒覺得是個什麼問題。

但是今天從需要從PROD上把這個項目中所有的包都down下來,VS居然報錯Out Of Memory,無論是直接連接SSIS Catelog或者用SSMS導出ispac均報錯。

解決方法很簡單,使用PowerShell腳本,直接把ispac download下來然後解壓縮,這樣裡面就直接可以看到.dtsx文件了。

 

核心就在於參數UnzipIspac,一定要是True,這樣執行完成後就能直接看見.dtsx包了。

 

PS腳本:

 

  1 #PowerShell: DownloadIspac.ps1
  2 ################################
  3 ########## PARAMETERS ##########
  4 ################################ 
  5 # Change Server, folder, project and download folder
  6 $SsisServer = "XXXXXXXX" # Mandatory
  7 $FolderName = "XXXXXXXX"         # Can be empty to download multiple projects
  8 $ProjectName = "OOOOOOOOO"       # Can be empty to download multiple projects
  9 $DownloadFolder = "LLLLLLLLLLLLL" # Mandatory
 10 $CreateSubfolders = $true        # Mandatory
 11 $UnzipIspac = $true             # Mandatory
 12  
 13  
 14 #################################################
 15 ########## DO NOT EDIT BELOW THIS LINE ##########
 16 #################################################
 17 clear
 18 Write-Host 
 19 
 20 "================================================================================================================================
 21 
 22 ========================"
 23 Write-Host "== Used parameters =="
 24 Write-Host 
 25 
 26 "================================================================================================================================
 27 
 28 ========================"
 29 Write-Host "SSIS Server             :" $SsisServer
 30 Write-Host "Folder Name             :" $FolderName
 31 Write-Host "Project Name            :" $ProjectName
 32 Write-Host "Local Download Folder   :" $DownloadFolder
 33 Write-Host "Create Subfolders       :" $CreateSubfolders
 34 Write-Host "Unzip ISPAC (> .NET4.5) :" $UnzipIspac
 35 Write-Host 
 36 
 37 "================================================================================================================================
 38 
 39 ========================"
 40  
 41  
 42 ##########################################
 43 ########## Mandatory parameters ##########
 44 ##########################################
 45 if ($SsisServer -eq "")
 46 {
 47     Throw [System.Exception] "SsisServer parameter is mandatory"
 48 }
 49 if ($DownloadFolder -eq "")
 50 {
 51     Throw [System.Exception] "DownloadFolder parameter is mandatory"
 52 }
 53 elseif (-not $DownloadFolder.EndsWith("\"))
 54 {
 55     # Make sure the download path ends with an slash
 56     # so we can concatenate an subfolder and filename
 57     $DownloadFolder = $DownloadFolder = "\"
 58 }
 59  
 60  
 61 ############################
 62 ########## SERVER ##########
 63 ############################
 64 # Load the Integration Services Assembly
 65 Write-Host "Connecting to server $SsisServer "
 66 $SsisNamespace = "Microsoft.SqlServer.Management.IntegrationServices"
 67 [System.Reflection.Assembly]::LoadWithPartialName($SsisNamespace) | Out-Null;
 68  
 69 # Create a connection to the server
 70 $SqlConnectionstring = "Data Source=" + $SsisServer + ";Initial Catalog=master;Integrated Security=SSPI;"
 71 $SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnectionstring
 72  
 73 # Create the Integration Services object
 74 $IntegrationServices = New-Object $SsisNamespace".IntegrationServices" $SqlConnection
 75  
 76 # Check if connection succeeded
 77 if (-not $IntegrationServices)
 78 {
 79     Throw [System.Exception] "Failed to connect to server $SsisServer "
 80 }
 81 else
 82 {
 83     Write-Host "Connected to server" $SsisServer
 84 }
 85  
 86  
 87 #############################
 88 ########## CATALOG ##########
 89 #############################
 90 # Create object for SSISDB Catalog
 91 $Catalog = $IntegrationServices.Catalogs["SSISDB"]
 92  
 93 # Check if the SSISDB Catalog exists
 94 if (-not $Catalog)
 95 {
 96     # Catalog doesn't exists. Different name used?
 97     Throw [System.Exception] "SSISDB catalog doesn't exist."
 98 }
 99 else
100 {
101     Write-Host "Catalog SSISDB found"
102 }
103  
104  
105 ############################
106 ########## FOLDER ##########
107 ############################
108 if ($FolderName -ne "")
109 {
110     # Create object to the folder
111     $Folder = $Catalog.Folders[$FolderName]
112     # Check if folder exists
113     if (-not $Folder)
114     {
115         # Folder doesn't exists, so throw error.
116         Write-Host "Folder" $FolderName "not found"
117         Throw [System.Exception] "Aborting, folder not found"
118     }
119     else
120     {
121         Write-Host "Folder" $FolderName "found"
122     }
123 }
124  
125  
126 #############################
127 ########## Project ##########
128 #############################
129 if ($ProjectName -ne "" -and $FolderName -ne "")
130 {
131     $Project = $Folder.Projects[$ProjectName]
132     # Check if project already exists
133     if (-not $Project)
134     {
135         # Project doesn't exists, so throw error.
136         Write-Host "Project" $ProjectName "not found"
137         Throw [System.Exception] "Aborting, project not found"
138     }
139     else
140     {
141         Write-Host "Project" $ProjectName "found"
142     }
143 }
144  
145  
146 ##############################
147 ########## DOWNLOAD ##########
148 ##############################
149 Function DownloadIspac
150 {
151     Param($DownloadFolder, $Project, $CreateSubfolders, $UnzipIspac)
152     if ($CreateSubfolders)
153     {
154         $DownloadFolder = ($DownloadFolder + $Project.Parent.Name)
155     }
156  
157     # Create download folder if it doesn't exist
158     New-Item -ItemType Directory -Path $DownloadFolder -Force > $null
159  
160     # Check if new ispac already exists
161     if (Test-Path ($DownloadFolder + $Project.Name + ".ispac"))
162     {
163         Write-Host ("Downloading [" + $Project.Name + ".ispac" + "] to " + $DownloadFolder + " (Warning: replacing existing 
164 
165 file)")
166     }
167     else
168     {
169         Write-Host ("Downloading [" + $Project.Name + ".ispac" + "] to " + $DownloadFolder)
170     }
171  
172     # Download ispac
173     $ISPAC = $Project.GetProjectBytes()
174     [System.IO.File]::WriteAllBytes(($DownloadFolder + "\" + $Project.Name + ".ispac"),$ISPAC)
175     if ($UnzipIspac)
176     {
177         # Add reference to compression namespace
178         Add-Type -assembly "system.io.compression.filesystem"
179  
180         # Extract ispac file to temporary location (.NET Framework 4.5) 
181         Write-Host ("Unzipping [" + $Project.Name + ".ispac" + "]")
182  
183         # Delete unzip folder if it already exists
184         if (Test-Path ($DownloadFolder + "\" + $Project.Name))
185         {
186             [System.IO.Directory]::Delete(($DownloadFolder + "\" + $Project.Name), $true)
187         }
188  
189         # Unzip ispac
190         [io.compression.zipfile]::ExtractToDirectory(($DownloadFolder + "\" + $Project.Name + ".ispac"), ($DownloadFolder + "\" + 
191 
192 $Project.Name))
193  
194         # Delete ispac
195         Write-Host ("Deleting [" + $Project.Name + ".ispac" + "]")
196         [System.IO.File]::Delete(($DownloadFolder + "\" + $Project.Name + ".ispac"))
197     }
198     Write-Host ""
199 }
200  
201  
202 #############################
203 ########## LOOPING ##########
204 #############################
205 # Counter for logging purposes
206 $ProjectCount = 0
207  
208 # Finding projects to download
209 if ($FolderName -ne "" -and $ProjectName -ne "")
210 {
211     # We have folder and project
212     $ProjectCount++
213     DownloadIspac $DownloadFolder $Project $CreateSubfolders $UnzipIspac
214 }
215 elseif ($FolderName -ne "" -and $ProjectName -eq "")
216 {
217     # We have folder, but no project => loop projects
218     foreach ($Project in $Folder.Projects)
219     {
220         $ProjectCount++
221         DownloadIspac $DownloadFolder $Project $CreateSubfolders $UnzipIspac
222     }
223 }
224 elseif ($FolderName -eq "" -and $ProjectName -ne "")
225 {
226     # We only have a projectname, so search
227     # in all folders
228     foreach ($Folder in $Catalog.Folders)
229     {
230         foreach ($Project in $Folder.Projects)
231         {
232             if ($Project.Name -eq $ProjectName)
233             {
234                 Write-Host "Project" $ProjectName "found in" $Folder.Name
235                 $ProjectCount++
236                 DownloadIspac $DownloadFolder $Project $CreateSubfolders $UnzipIspac
237             }
238         }
239     }
240 }
241 else
242 {
243     # Download all projects in all folders
244     foreach ($Folder in $Catalog.Folders)
245     {
246         foreach ($Project in $Folder.Projects)
247         {
248             $ProjectCount++
249             DownloadIspac $DownloadFolder $Project $CreateSubfolders $UnzipIspac
250         }
251     }
252 }
253  
254 ###########################
255 ########## READY ##########
256 ###########################
257 # Kill connection to SSIS
258 $IntegrationServices = $null
259 Write-Host "Finished, total downloads" $ProjectCount

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 郵箱:[email protected] SN: GAWAE-FCWQ3-P8NYB-C7GF7-NEDRT-Q5DTB-MFZG6-6NEQC-CRMUD-8MZ2K-66SRB-SU8EW-EDLZ9-TGH3S-8SGA IStat Menus 6 激活碼 官方網站:https://bjango ...
  • 此教程在win10 企業版 LSTC 1809 操作系統版本 17763.1098上驗證通過 準備階段: 確認以通過除密碼驗證外的其他方式進入系統,可以正常使用桌面 確認是否已經忘記密保問題,如忘記建議通過密保來重置密碼,參考微軟官方的建議 請按步驟,不要跳步 一切額外損失由您自行承擔 此處的 [ ...
  • 緩存穿透 緩存穿透是指查詢一個一定不存在的數據,由於緩存是不命中時被動寫的,並且出於容錯考慮,如果從存儲層查不到數據則不寫入緩存,這將導致這個不存在的數據每次請求都要到存儲層去查詢,失去了緩存的意義。在流量大時,可能DB就掛掉了,要是有人利用不存在的key頻繁攻擊我們的應用,這就是漏洞。 解決方案 ...
  • 本文存在 "視頻版本" ,請知悉 項目簡介 項目來源於: "https://gitee.com/PositiveMumu/CakesShop/tree/master" 這次分享一個蛋糕商場系統,還是很簡單的系統。界面簡潔但不粗糙。。 本系統基於 JSP+Servlet+C3P0+Mysql+JDBC ...
  • truncate 與 delete 的區別 truncate table :刪除內容、不刪除定義、釋放空間。 delete table : 刪除內容、不刪除定義、不釋放空間。 drop table :刪除內容和定義,釋放空間。 1、truncate table 表名,只能刪除表中全部數據。 dele ...
  • 在瞭解臟讀,不可重覆度,幻讀之前,首先要明白這三種情況的出現都是和資料庫併發事務有關聯的,如果所有的讀寫都按照隊列的形式進行,就不會出現問題。 名詞解析和解決方案 臟讀 臟讀又稱無效數據讀出(讀出了臟數據)。一個事務讀取另外一個事務還沒有提交的數據叫臟讀。 例如:事務T1修改了某個表中的一行數據,但 ...
  • `Redis key value`存儲系統。 Redis支持五種數據類型: (字元串) (列表) (hash表) (集合) (有序集合) 和 類似, 支持的數據類型更豐富、數據能持久化。 把數據全部存儲在記憶體中,斷電後會掛掉,數據不能超過記憶體大小。 而redis`數據會定期備份到硬碟上。 落地策略 ...
  • 1.在 資料庫內如何讓自動增加欄位從0開始 2.表中有A B C三列時,用SQL語句實現:當A列大於B列時選擇A列,否則選擇B列,當B列大於C列時選擇B,否則選擇C列 3. 是一個 存儲系統。支持五種數據類型: (1) (字元串) (2) (列表) (3) (`hash`表) (4) (集合) (5 ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...