2010-04-20 60 views
1

Coldfusion Report Builder非常棒。Coldfusion Report Builder - 如何在prod/staging/dev之間設置不同的外部數據源?

一個小問題。我們使用ANT + CFANT進行部署。

當我們創建報告時,在開發箱中稱爲MyApp_dev的數據源中說。

我們的其他服務器是生產服務器。它還包含一個分段構建,以確保在我們發佈到現場之前一切都順利進行。 (感謝Al Everett將此澄清引入我的注意。)

當創建報告時,一切正常。

我們將報告部署到我們的登臺服務器,該服務器具有MyApp_Staging的數據源。該服務器也可以,也可以不具有MyApp_Live下的實時應用程序。 Ant將更新推向舞臺非常棒。

運行報告,崩潰和灼傷。爲什麼?

看起來報告正在尋找MyApp_Dev data_source,即使應用程序正在使用MyApp_Staging數據源。

在挖掘中,我發現了一些方法,我想從一開始就做這一個,最後的理想方式,而不是不得不回頭做幾十個不同的報告,當我有一個新的啊哈!時刻。

1)明顯:將數據源傳遞到cfreport標記。在Linux上測試v8或v9時不適用於ColdFusion Builder Reports。

2)到目前爲止最現實的選擇(但是很痛苦):將查詢作爲對象傳遞給ColdFusion Builder報表。讓我們來思考一下:

  1. 使用RDS等在我的本地盒子上創建包含報告生成器的報告。
  2. 完成後,將查詢複製到代碼段或數據庫列中,以便在運行時用正確的數據源動態注入。
  3. 修改我的「運行報告」事件以從數據庫列中查找查詢,將其插入到另一個動態cfquery中,並可能...評估(!?!)它嗎?有趣的一面是我可以將cfquery數據源設置爲我需要的每個環境。
  4. 當我在CF Report Builder中修改報表的列時,我總是必須更新數據庫中的查詢。有一段代碼可以爲我提取這個嗎?嗯。

3)不太理想。吸取它,並讓所有的分期報告跑掉現場服務器。也許將實時數據複製到分段(無結構更改)以使其看起來相似。

有沒有雄辯的方法來完成上述?

在此先感謝!

+1

我只是想知道爲什麼你在不同的服務器上使用不同的數據源名稱。我們的政策始終是使用相同的DSN,指向不同的數據庫進行開發,分期和生活。 – 2010-04-21 15:43:28

+0

我們必須在我們的實時服務器上使用2個數據源名稱,當我們對其進行暫存和實時安裝時。 – 2010-05-06 17:33:06

回答

0

如果你有不同的dev/staging/production盒子,爲什麼不在每個盒子上使用相同的數據源名稱呢?這會讓你從代碼中找出它的位置。

因爲我當前任務中的安全問題阻礙了我使用RDS,所以我使用選項2作爲理所當然的事情。我也喜歡它,因爲它更容易調試。

+0

開箱通常與分段/生產箱分開。對於較小的項目,我們通常在生產服務器上運行單獨的應用程序實例,然後再滾動以確保沒有障礙。 – 2010-04-21 15:03:19

相關問題