2017-10-09 41 views
0

期: Microsoft SQL 2016 每個季度我的應用程序都會創建一個新的存檔數據庫來存儲數據。每個季度,我都會針對上一季度歸檔數據庫手動運行查詢以收集數據以用於分析目的。查詢帳戶滾動數據庫

我有一個運行我的查詢的PowerShell腳本,但是,我仍然需要更新PowerShell自動化以指定我想要關閉查詢的歸檔數據庫。

例子:

 
ArchiveDB_Q1_2016 
ArchiveDB_Q1_2017 
ArchiveDB_Q2_2016 
ArchiveDB_Q2_2017 
ArchiveDB_Q3_2016 
ArchiveDB_Q3_2017 
ArchiveDB_Q4_2016 
ArchiveDB_Q4_2017 

今天是17年10月9日我要運行我的ArchiveDB_Q3_2017查詢。

在我的PowerShell中,我指定了我想查詢的數據庫($dbName = 'ArchiveDB_Q3_2017')。

2018年1月2日,我想爲ArchiveDB_Q4_2017運行我的查詢。目前,我必須打開我的PowerShell腳本,更新數據庫名稱,保存,然後執行腳本。

我希望能夠自動執行這些查詢,以便無論我們處於哪個季度,我總是從上個季度歸檔數據庫運行查詢。

我該如何做到這一點?

是否有可以在PowerShell中使用的命令或字符串來說明數據庫名稱更改,還是使用查看上一季度歸檔數據庫的SQL查詢創建文本文檔更容易,然後使用PowerShell從該查詢中提取結果以傳遞到我的PowerShell腳本中的DB參數以供其餘查詢使用?

+0

哪個[DBMS](https://en.wikipedia.org/wiki/DBMS)產品是您使用? Postgres的?甲骨文? 「_SQL_」只是一種查詢語言,而不是特定數據庫產品的名稱。 –

+0

微軟的SQL - 版本2016 – scottyP

回答

1

您能夠確定與一個整數除法當前季度:

$today = (Get-Date).Date 
$current = [Math]::Floor(($today.Month - 1)/3) + 1 

上一季度爲$current - 1,但有一個例外:第一季度上一季度爲4,今年是當年減一。

$prev = $current - 1 
$year = $today.Year 
if ($prev -eq 0) { 
    $prev = 4 
    $year = $year - 1 
} 

有了這些2倍的值,你可以簡單地構建數據庫名是這樣的:

$dbName = "ArchiveDB_Q${prev}_${year}" 
+0

謝謝,這完全按照我的需要。小修改,但太棒了! $ dbName =「Moxy_Q $($ prev)_ $($ year)」 – scottyP

+0

'$($ prev)'這裏不應該做任何不同於'$ {prev}'的事情。 –