我们有两个数据库表ErrorLog和Audit,它们在过去几年中都增长了相当大。因此,为了缩小数据库的大小,我必须编写一个脚本,从这两个表中清除所有6个月以上的行。
这就是我想出来的:
ALTER DATABASE StudioWebTest SET RECOVERY SIMPLE;
DELETE FROM [Audit] WHERE AuditDate < DATEADD(M, -6, GETDATE());
DELETE FROM [ErrorLog] WHERE ErrorDate < DATEADD(M, -6, GETDATE());
ALTER DATABASE S
我正在使用事务对我的数据库进行修改,这样,如果在更改过程中有任何失败,我可以回滚而不会造成任何伤害。
但是,由于我基于将我的数据库置于其最后状态的查询列表来运行我的查询(每当我需要更改时,我只需向列表中添加一个新规则),所以当我尝试删除在同一事务期间添加的列时,它将失败。
示例:
START TRANSACTION;
ALTER TABLE "servers" ADD COLUMN "test" INTEGER NOT NULL;
ALTER TABLE "servers" DROP COLUMN "test";
我在Azure中有一个数据库,其中目前有750 it的数据。为了降低运行数据库的成本,我希望尽可能地保持它的小,特别是在1TB以下。
这个表让我们称它为"BigTable“,它占存储内存的95%,所占份额最大。每天都会有更多的数据存储在这个数据库中,而且这种情况持续了四年。已经超过两年的数据将不再需要。这就是我已经做过的:
我建立了第二个数据库"test_database“并进行了实时恢复,使用”导出“函数对数据库进行了备份,并将其保存在blob存储中。效果很好。
通过运行以下语句,我使用工具(SSMS)删除了不必要的数据:
Delete
From Bi
我已经成功地编写了一个函数,它允许我备份Server数据库,但是我很难恢复和使用备份版本。
我的代码:
Try
Dim confirmBackUp As MsgBoxResult
confirmBackUp = MsgBox("Are you sure you want to restore?")
If confirmBackUp = MsgBoxResult.Yes Then Else Exit Sub
Dim cmd As New OleDbCommand
con = New Ole