导读数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应...
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
  --缩小日志 
-- exec p_compdb ’test’  
create proc p_compdb 
@dbname sysname, --要压缩的数据库名 
@bkdatabase bit=1, --因为分离日志的步骤中,可能会损坏数据库,所以你可以选择是否自动数据库 
@bkfname nvarchar(260)=’’ --备份的文件名,如果不指定,自动备份到默认备份目录,备份文件名为:数据库名+日期时间 
as 
--1.清空日志 
exec(’DUMP TRANSACTION [’+@dbname+’] WITH  NO_LOG’) 
--2.截断事务日志: 
exec(’BACKUP LOG [’+@dbname+’] WITH NO_LOG’) 
--3.收缩数据库文件(如果不压缩,数据库的文件不会减小 
exec(’DBCC SHRINKDATABASE([’+@dbname+’])’) 
--4.设置自动收缩 
exec(’EXEC sp_dboption ’’’+@dbname+’’’,’’autoshrink’’,’’TRUE’’’) 
--后面的步骤有一定危险,你可以可以选择是否应该这些步骤 
--5.分离数据库 
if @bkdatabase=1 
begin 
if isnull(@bkfname,’’)=’’  
set @bkfname=@dbname+’_’+convert(varchar,getdate(),112) 
+replace(convert(varchar,getdate(),108),’:’,’’) 
select 提示信息=’备份数据库到SQL 默认备份目录,备份文件名:’+@bkfname 
exec(’backup database [’+@dbname+’] to disk=’’’+@bkfname+’’’’) 
end 
--进行分离处理 
create table #t(fname nvarchar(260),type int) 
exec(’insert into #t select filename,type=status&0x40 from [’+@dbname+’]..sysfiles’) 
exec(’sp_detach_db ’’’+@dbname+’’’’) 
--删除日志文件 
declare @fname nvarchar(260),@s varchar(8000) 
declare tb cursor local for select fname from #t where type=64 
open tb  
fetch next from tb into @fname 
while @@fetch_status=0 
begin 
set @s=’del "’+rtrim(@fname)+’"’ 
exec master..xp_cmdshell @s,no_output 
fetch next from tb into @fname 
end 
close tb 
deallocate tb 
--附加数据库 
set @s=’’ 
declare tb cursor local for select fname from #t where type=0 
open tb  
fetch next from tb into @fname 
while @@fetch_status=0 
begin 
set @s=@s+’,’’’+rtrim(@fname)+’’’’ 
fetch next from tb into @fname 
end 
close tb 
deallocate tb 
exec(’sp_attach_single_file_db ’’’+@dbname+’’’’+@s) 
GO
全新的路由器不仅让你更稳定快速地连接无线网络,更可以让家中的智能设备连接在一起。
……