备份特定架构的最佳方法?

时间:2014-10-15 13:46:13

标签: sql sql-server sql-server-2008

我有一个多租户数据库,每个用户都有自己的架构。

备份单个租户(表架构)的最佳方法是什么?据我所知,SQL Server不支持单个模式的备份(只有完整的数据库)。

我需要备份结构和数据。它也需要自动化(理想情况下我也应该能够从SSMS调用它)。

我在考虑将ddl和数据导出为sql语句。如果有办法调用"生成和发布脚本"向导作为存储过程我觉得它会起作用吗?

我目前使用的是Sql Server 2008 R2,但可以升级。

1 个答案:

答案 0 :(得分:3)

一些想法。

使用文件组

将每个租户拥有的表放入他们自己的文件组中。 SQL Server具有backup and restore individual file groups的能力。您还可以执行其他一些操作,例如在需要时使单个租户离线。例如:

CREATE TABLE tenant1.Table1 
(Column1 INT, Column2, INT)
ON Tenant1FileGroup

观点&单独的数据库

可能不是正确的方法,但它会起作用。将每个租户的表放在他们自己的数据库中,并使用租户模式中的视图从“主”数据库中引用它们。例如:

Tenant1DB
    dbo.Table1
    dbo.Table2

Tenant2DB
    dbo.Table1
    dbo.Table2

MasterDB
    tenant1.Table1 
    tenant1.Table2 
    tenant2.Table1 
    tenant2.Table2 

上述MasterDB数据库中提到的对象是以下视图:

CREATE VIEW tenant1.Table1
AS
SELECT * FROM Tenant1DB.dbo.Table1

通过这种方式,您可以轻松备份/恢复单个租户数据库。该策略的其他一些好处:

  • 可以在不将主数据库置于单用户模式的情况下恢复单个租户。
  • 系统将向外扩展,因为租户数据库可以移动到其他服务器。