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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...