小编fre*_*ler的帖子

切换到简单恢复 - 缩小事务日志

标准免责声明:我是一个“非自愿DBA”(在一个不错的那句我看到这篇文章),也做了很多很多大量的大量的大量的阅读关于这个问题,但我仍然困惑/关注...

我需要将几个 SQL Server 2014 生产数据库的恢复模型从完整更改为简单。

数据库目前设置为完全恢复,并且正在使用SqlBackupAndFTP进行备份,这将每天进行一次完整备份,每天进行 3 个差异备份和 20 个事务备份。这一直运行良好,直到我们与提供基于 FTP 的存储的公司发生了巨大的问题。

大约 3 个月前,我改用运行良好的Attix5 - 但是,我现在发现由于软件的工作方式,事务日志与数据文件一样大(在一种情况下,对于 13Gb 数据文件超过 14Gb )。

我被建议将恢复模式切换为简单,这样事务日志就不会增长。

我知道使用 Simple Recovery 不会提供时间点恢复- 这绝对没问题,因为完整备份每小时进行一次,我们“很高兴丢失”之前 1-59 分钟内可能发生的任何事情。

我的理解是我应该将恢复模式设置为简单并让备份发生,这将在事务日志中设置一个检查点,允许重新使用空间。

但是,我确实需要将事务日志缩小到合理的大小(这样它就不会占用太多的备份空间),但我一直在读到缩小是一个坏主意。还是我拿错了棍子的一端?

如果我使用以下命令将事务日志缩小到大约 25Mb(对于单个每小时的事务集来说应该足够大),这是否足够?

DBCC SHRINKFILE('log file name',25)
Run Code Online (Sandbox Code Playgroud)

(我真的很抱歉问一些之前似乎被问过无数次的问题,但这不是我可以出错的。)

sql-server shrink transaction-log sql-server-2014 recovery-model

7
推荐指数
1
解决办法
2万
查看次数

无需编译即可创建/更改存储过程

是否可以在 SQL Server 2005* 中创建或更改不编译该过程的存储过程?

(* - 是的,不幸的是,我们仍然需要支持 2005 作为我们的最低标准)

我有一种情况,能够创建/更改语法上有效但语义上无效的存储过程(由于不正确的表/列名称)将非常有用……然后我可以在 SSMS 中进行相应的更改。

我刚刚有了一个想法,这是一个非常简单的解决方案......在更改/创建存储过程时注释掉它的全部内容。

UsingCtrl+K Ctrl+C将单独注释掉每一行 - 这比/* */在整个事物周围使用更好,因为如果/* */存储过程中已经有任何实例,那将会失败。

我仍然很想知道是否有一种实际的方法可以告诉 SSMS 忽略无效的表/视图/列名称。

感谢@marcelo 的回答,使用不存在的表的名称似乎确实允许您创建存储过程。

但是,如果您使用现有表中不存在的,则不允许您创建存储过程

sql-server-2005 sql-server

3
推荐指数
1
解决办法
9515
查看次数