我有一个多租户数据库,每个用户都有自己的架构。
备份单个租户(表架构)的最佳方法是什么?据我所知,SQL Server不支持单个模式的备份(只有完整的数据库)。
我需要备份结构和数据。它也需要自动化(理想情况下我也应该能够从SSMS调用它)。
我在考虑将ddl和数据导出为sql语句。如果有办法调用"生成和发布脚本"向导作为存储过程我觉得它会起作用吗?
我目前使用的是Sql Server 2008 R2,但可以升级。
答案 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
通过这种方式,您可以轻松备份/恢复单个租户数据库。该策略的其他一些好处: