日期:2014-05-17  浏览次数:20500 次

多行的sql如何写在一行里?
SQL code

USE [master]
GO
ALTER DATABASE asgfw#db SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE asgfw#db SET RECOVERY SIMPLE   --简单模式
GO

USE asgfw#db 
GO
DBCC SHRINKFILE (N'asgfw#db_Log' , 11, TRUNCATEONLY)
GO

USE [master]
GO
ALTER DATABASE asgfw#db SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE asgfw#db SET RECOVERY FULL  --还原为完全模式
GO


代码如上,我在做vb.exe的文件,想点击按钮后直接删除日志

------解决方案--------------------
SQL code

-- 创建一个存储过程就行了
create proc del
as
USE [master]
GO
ALTER DATABASE asgfw#db SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE asgfw#db SET RECOVERY SIMPLE   --简单模式
GO

USE asgfw#db 
GO
DBCC SHRINKFILE (N'asgfw#db_Log' , 11, TRUNCATEONLY)
GO

USE [master]
GO
ALTER DATABASE asgfw#db SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE asgfw#db SET RECOVERY FULL  --还原为完全模式
GO

Go
--上面就建好的存储过程
exec del --执行存储过程

------解决方案--------------------
SQL code

-- 先创建一个存储过程
create proc del
as

ALTER DATABASE asgfw#db SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE asgfw#db SET RECOVERY SIMPLE   --简单模式
GO

ALTER DATABASE asgfw#db SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE asgfw#db SET RECOVERY FULL  --还原为完全模式
GO

Go
--上面是存储过程
--如果asgfw#db也是一个数据库的话,然后再做一个触发器
--触发器我不太会,就是当执行上面的存储过程后 就 触发这触发器 去执行
/*USE asgfw#db 
GO
DBCC SHRINKFILE (N'asgfw#db_Log' , 11, TRUNCATEONLY)
GO
*/ 
exec del --执行存储过程

------解决方案--------------------
当然不用触发器也行
SQL code

USE [master]
GO
create proc delone
as

ALTER DATABASE asgfw#db SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE asgfw#db SET RECOVERY SIMPLE   --简单模式
GO

ALTER DATABASE asgfw#db SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE asgfw#db SET RECOVERY FULL  --还原为完全模式
GO
--这上面为一个存储过程
USE asgfw#db
GO
create proc deltwo
AS
DBCC SHRINKFILE (N'asgfw#db_Log' , 11, TRUNCATEONLY)
GO
--这也是一个存储过程,然后把这2个存储整合到一个里面
USE 你要作用到的数据库
GO
create proc delthree
as
exec delone
exec deltwo
GO
--然后执行存储过程
exec delthree
-- 这就实现了 你的要求