YYW'S BLOG

知识的分享就是知识的获得
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

常用SQL语句(未完)

Posted on 2006-09-20 10:48  阿武  阅读(396)  评论(0编辑  收藏  举报

-- 备份数据库
USE DataBaseName
declare @now datetime
declare @strTime nvarchar(50)
declare @filename nvarchar(100)
set @now = getdate()
-- 时间格式 yyyy-mm-dd_hh-mi-ss
set @strTime = REPLACE(REPLACE((CONVERT(nvarchar(20), @now120)), ':''-'), ' ''_')
set @filename = 'DataBaseName_' + @strTime + '.bak'
EXEC sp_addumpdevice 'disk''DataBaseName_Back'@filename
print '开始备份'
--- 开始 备份
BACKUP DATABASE DataBaseName TO DataBaseName_Back 
print '备份完成'
print '新备份的文件名称: ' + @filename

EXEC sp_dropdevice 'DataBaseName_Back';

-- 数据库信息
USE DataBaseName
declare @tableCount int
declare @ProcedureCount int
select @tableCount = count(*from sysobjects where xtype='U'
select @ProcedureCount = count(*from sysobjects where xtype='P'
print '表数量 : ' + CAST(@tableCount AS varchar(5))
print '存储过程数量 :' + CAST(@ProcedureCount AS varchar(5))
SET NOCOUNT OFF;

--查询某个表中的所有列名
select t2.name from sysobjects t1,syscolumns t2 where t1.xtype='U' and t1.id=t2.id and t1.name='TableName'

-- 数据库的排它访问
use master 

drop  proc  killspid  
create  proc  killspid  (@dbname  varchar(20))  
as  
begin  
declare  @sql  nvarchar(500)  
declare  @spid  int  
set  @sql='declare  getspid  cursor  for    
select  spid  from  sysprocesses  where  dbid=db_id(
'''+@dbname+''')'  
exec  (@sql)  
open  getspid  
fetch  next  from  getspid  into  @spid  
while  @@fetch_status<>-1  
begin  
exec('kill  '+@spid)  
fetch  next  from  getspid  into  @spid  
end  
close  getspid  
deallocate  getspid  
end  
 
-- 用法  
use  master  
exec  killspid  'DatabaseName'

--定期删除日志

-- 1.清空日志
DUMP  TRANSACTION  DataBaseName  WITH  NO_LOG    

-- 2.截断事务日志:
BACKUP LOG DataBaseName WITH NO_LOG

-- 3.收缩数据库
DBCC SHRINKDATABASE(DataBaseName)

-- 开启 Clr
exec sp_configure 'show advanced options''1'
go 
reconfigure
go 
exec sp_configure 'clr enabled''1' 
go 
reconfigure
exec sp_configure 'show advanced options''1'
go