最近的项目主要做数据的归档 把数据从一个数据库拉到另一个数据库 造成新数据库的日志文件非常大 或者数据库在使用过程中会使日志文件不断 增加 使得数据库的性能下降 并且占用大量的磁盘空间 于是想把日志文件删除 最简单就是先分离数据库 》删除日志文件 》最后附加数据 我这里需要在 SSIS中调用 所以已sql脚本为主
两种简单的清除日志的方法
一分离附加法 首先把数据库分离 分离数据库之前一定要做好数据库的全备份 选择数据库——右键——任务——分离 其中药勾选删除连接!
分离后在数据库列表将看不到已分离的数据库 删除数据库的LOG文件数据库文件夹下的对应数据库的 ldf文件 附加数据库 附加的时候会提醒找不到log文件 到时附加上后会自动创建一个新的日志文件 从而达到清理数据库的目的
二 sql语句清除mssql日志 DUMP TRANSACTION TestDB WITH NO_LOG 清除日志 DBCC SHRINKFILE ( TestDB_log ) 收缩数据库文件 BACKUP LOG TestDB WITH NO_LOG 截断事务日志 该命令在SQL Server 也是不支持 在SQL Server 和 可以使用
首先我们需要获取数据库文件的路径
declare @logfilename varchar( ) declare @datafilename varchar( ) select @logfilename=physical_name from sys database_files where type= select @datafilename=physical_name from sys database_files where type=
然后切换到master下 分离数据库
use master exec sp_detach_db @dbname= TestVFA ;
紧接下来就是删除数据库 日志文件 Remove file DECLARE @Result int DECLARE @FSO_Token int EXEC @Result = sp_OACreate Scripting FileSystemObject @FSO_Token OUTPUT EXEC @Result = sp_OAMethod @FSO_Token DeleteFile NULL @logfilename EXEC @Result = sp_OADestroy @FSO_Token 最后就是附加数据库 exec sp_attach_single_file_db @dbname= TestVFA @physname=@datafilename
注意 默认Ole Automation Procedures 是禁用的我们需要启用它
lishixinzhi/Article/program/MySQL/201311/29584
这是嵌入SQL的语法,比如EC就是在C语言里面增加SQL功能的,除了可以使用所有标准的C语言语法以外,可以使用EXEC SQL(或者$符号)开始的一行书写SQL语句。
EXEC SQL include sqlca
包含一个文件,类似C、ASP的include语句,把那个文件sqlca的内容包含到当前位置
EXEC SQL BEGIN DECLARE SECTION
开始申明,下面的一段语句将是SQL系统的变量申明语句
EXEC SQL END DECLARE SECTION
申明语句结束
exec sp_rename 'b','a'
把b表重命名a表
sp_rename 存储过程意思:
数据库中更改用户创建对象的名称
Exec解释意思为:
执行 Transact-SQL 批中的命令字符串、字符串或执行下列模块之一:系统存储过程、用户定义存储过程、标量值用户定义函数或扩展存储过程。
如有问题可以追问,我当及时回答
希望能帮到你!
以上就是关于MSSQL 清空日志 删除日志文件全部的内容,包括:MSSQL 清空日志 删除日志文件、EXEC SQL等等,这些都是什么意思、SQL 下面语句中的 exec sp_rename 'b','a'是什么意思主要是exec的意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)