2017-10-09 66 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}'的事情。 –