1.如何收缩数据库?
下面的语句将vrveis数据库未使用的空间释放给操作系统
Dump transaction vrveis with no_log;
DBCC shrinkfile (vrveis_log,Truncateonly)
2.如何定时执行sql语句?
Waitfor time ‘hh:mm’ sql
3.如何连接远程服务器
第一步:链接服务器
Exec sp_addlinkedserver @server=myserver,@srvproduct=’’,@provider=’SQLOLEDB’, @datasrc=’dbtest’
第二步:登录
Exec sp_addlinkedsrvlogin ‘myserver’,’false’,null,’sa’,’sa’
4.sql技巧:
Ø 查看对象占用的空间:Sp_spaceused 对象名,true【false】,其中,true和false表示是否更正sysindexes表的不正确内容
Ø Object_id(’对象名’)--此函数得到对象的ID,例:select * from sysindexes where id=object_id(‘tablename’)
Ø Set nocount on[off](默认为Off):使返回的结果中不包含有关受sql语句影响的行数的信息。当为ON时,不返回计数信息;当为off时,返回计数信息。
5.sqlserver重要的系统表
表名
主要功能
存在的数据库
Sysobjects
主系统表,记录每个数据库对象的信息
每个数据库
Syscolumns
记录数据库的字段信息
Master,用户定义数据库
Sysindexes
记录数据库的索引信息
Master,用户定义数据库
Sysusers
记录数据库用户和角色信息
Master,用户定义数据库
Sysdepends
记录表、视图、存储过程的依赖关系信息
Master,用户定义数据库
Sysdatabases
系统数据库和用户定义数据库的信息
Master
Sysconstraints
记录数据库完整性约束信息
Master,用户定义数据库
6.游标的使用
--定义游标
Declare student_cursor CURSOR FOR
Select * from 学生表
--打开游标
OPEN student_cursor
--使用游标
FETCH NEXT FROM student_cursor
或FETCH student_cursor INTO @stu_id,@stu_name…
--使用系统函数FETCH_STATUS来判断游标数据是否读取完毕
While(@@FETCH_STATUS=0)
Begin
//SQL操作语句
FETCH student_cursor INTO @stu_id,@stu_name…
END
--关闭游标
CLOSE student_cursor
--释放游标
DEALLOCATE student_cursor
7.用SQL执行备份操作(文件名包含年月日)
Declare @bakdate char(8),
@dest varchar(100)
Set @bakdate=(selectdatename(year,getdate())+datename(month,getdate())+datename (day,getdate())
Set @dest=’F:\...’+@bakdate+’.dat’
Backup database file_dept to disk=@dest;
Go
8.用SQL生成自增列
Select num=(select sum(1) from daryxxb where dah<=a.dah),* from daryxxb a
9.修改数据库的逻辑文件名
Alter database dagl_web
Modify file(
Name=dagl_oracle_log,
Newname=dagl_Web_log)
Alter database dagl_web
Modify file(
Name=dagl_oracle_data,
Newname=dagl_Web_data)
10.数据库无法进行事务日志备份
SQLServer中,想对某数据库进行事务日志的备份,但却只能选择“数据库完全备份”和“数据库差异备份”其它的两种都不能选;可用如下语句解决:
exec sp_dboption 'dbname','trunc','false'
go