2016-09-12 92 views
0

我正在使用SSMS 2012并试图找出一种方法来编写查询,以便我的数据库名称将调整为第二个到最当前月份。重命名数据库前缀始终为上个月

我们的账单数据库每个月都会像BillingMonth01206BillingMonth022016一样,还有一个叫做BillingMonthLM的“上个月”。 LM数据库非常好,因为我们不必为上个月的数据不断地更改数据库,但在此之前我总是需要一个。因此,现在是9月份,我需要7月结算(BillingMonth072016)。

我一直在做一个查找和替换每个月,但有没有办法自动配置这个?也许使用一个字符串或东西?

+4

您应该将数据加载到单个报告数据库/表中,而不是重命名数据库。无论如何,您最终都会遇到问题,因为您可能还需要重新命名底层文件。 –

+0

数据库名称不应更改。我可以看到你可以在哪里摆脱每月快照报告,但数据库不应该是那么短暂。 – duffymo

+0

感谢您的及时回应。基础表在每个数据库中都是相同的,所以表名不会受到影响。我只需要每个月引用一个不同的数据库。我无法更改服务器或数据库的结构,所以这是我唯一的选择。 – TWaller

回答

0
DECLARE 
     @Month varchar(2) 
     ,@Year varchar(4) 
     ,@SQL varchar(max) 
     ,@DataBaseName varchar(50) 

SET @Month = CONVERT(varchar(2), DATEPART(MONTH, GETDATE())) 
SET @Year = DATEPART(YEAR, GETDATE()) 

IF (LEN(@Month) = 1) 
     SET @Month = '0' + @Month 

SET @DataBaseName = 'BillingMonth' + @Month + @Year 

SET @SQL = 'ALTER DATABASE BillingMonth072016 
      Modify Name = ' + @DataBaseName + '' 

EXEC (@SQL) 
+0

如果你玩弄这个查询,你可能能够实现你想要的,但是你将不得不对数据库有更改权限。 – FatherClarity