簡體   English   中英

SSIS包應該在數據庫SQL Server還是單獨的應用程序服務器上運行?

[英]Should SSIS Packages run on a database SQL Server or a separate app server?

在我公司看來,將應用程序代碼放置在與數據庫不同的服務器上是一項政策。

我們是一個數據倉庫,主要使用SSIS和T-SQL將數據轉換和加載到SQL Server中。 我們想使用C#.NET應用程序執行一些步驟

例如,要遍歷文件並調用Web服務。

鑒於SQL Server 2008現在可以自動安裝.NET 3.5並支持.NET存儲過程,是否有理由禁止以.NET編寫的.ETL代碼在數據庫服務器上運行? 在同一個盒子上同時運行SSIS和.NET代碼將有助於簡化我們的工作流程,因此我們不必擔心調度應用程序必須控制服務器之間的流。

我確實知道,例如在Web應用程序中,將業務邏輯層與數據庫層分開是合適的。

一種可能的故障:在我的公司中,DBA不是App Server的管理員,並且無權將db Client工具安裝到App Server,並且App Serve管理員可能與安裝數據庫客戶端工具沒有任何關系。 如果他們這樣做,則必須在App服務器管理員與DB服務器管理員之間進行協調。 也許DBA可以共享App Server的所有權。 公司通常如何處理?

最佳做法是完全不使用SQL Server。 SQL Server使用用戶模式的協作多任務和資源控制,該系統假定100%擁有系統所有權,並且如果其他進程正在竊取內存或CPU,則不能很好地發揮作用。 請參閱動態內存管理SQL Server批處理或任務計划

至於.NET從SQLCLR內部進行ETL Web調用:甚至不要考慮它。 除非從SQLCLR執行任何類型的阻止操作,否則您都會餓死SQL調度程序。

通常,您應該將SSIS服務器與SQL Server分開,因為SSIS是應用程序層。 接下來,您的應用程序代碼應在單獨的服務器上運行(可以與SSIS服務器相同)。

分開擴展您的關注點。

這取決於代碼,數據庫所需的可用性以及包裝盒的大小。 如果您在SSIS管道或C#應用程序中占用大量內存,那么我建議將其放在單獨的盒子中(所有ETL,而不僅僅是其中的一部分)。 如果您僅使用SSIS來調用數據庫中存儲的proc,最好將其保留在同一系統上。

話雖如此,除非有絕對的理由,否則我將避免將ETL分散在各個框內。 它增加了很多復雜性,卻沒有帶來太多好處(通常)。

話雖如此,如果您需要C#東西來運行,則可以始終使用SSIS中的腳本任務來控制其執行。

我們通過將DTS程序包與SSIS服務器放置在同一服務器上來實現SSIS,並且有保留在另一台服務器上的winservice並遠程執行DTS程序包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM