sqlserver天,sql 当天

SQLserver数据库,最近几天的日志非常大什么原因?

数据库日志大,说明数据库访问次数多,异常信息多,最好查看日志,跟踪一下异常情况。至于如何释放这些被占用的空间,收缩日志就可以了,数据库日志收缩的比率很大,一般1G在收缩后变成1M。

创新互联专注于城区企业网站建设,自适应网站建设,购物商城网站建设。城区网站建设公司,为城区等地区提供建站服务。全流程按需设计,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

sqlserver 写一个函数,能获取两个日期之间的周一到周五的总天数

drop function dbo.f_get_workdays

go

CREATE FUNCTION dbo.f_get_workdays(@bdate DATETIME, @edate DATETIME)

RETURNS INTEGER

AS BEGIN

DECLARE @workdays INTEGER

IF @bdate @edate

RETURN -1

SELECT @workdays =

--如果终止日期与起始日期在同一个星期内,只需要计算有几天即可

CASE WHEN DATEPART(wk, @edate-1)-DATEPART(wk,@bdate) = 0 THEN

CASE WHEN DATEPART(dw, @bdate) 5 THEN 0

WHEN DATEPART(dw, @edate-1) 5 THEN 6 - DATEPART(dw, @bdate)

ELSE DATEPART(dw, @edate-1) - DATEPART(dw, @bdate) + 1 END

--如果终止日期与起始日期在不同的星期内

--首先计算出除前后两个星期外完整的星期数 * 5

ELSE (DATEDIFF(dd,@bdate,@edate)

- (8-DATEPART(dw, @bdate))

- DATEPART(dw, @edate-1)) / 7 * 5

--再加上第一个星期里的工作日数

+ CASE WHEN DATEPART(dw, @bdate) 6 THEN 6 - DATEPART(dw, @bdate)

ELSE 0 END

--加上末一个星期里的工作日数

+ CASE WHEN DATEPART(dw, @edate-1)5 THEN 5 ELSE DATEPART(dw, @edate-1) END

END

RETURN @workdays

END

go

select dbo.f_get_workdays(dateadd(day,-21,getdate()),getdate())

sqlserver日期计算的问题

DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)的意思是返回当前日期

dd为日期分量代表day,还有其它的如month,year等

dateadd 为计算某个日期之前或之後多少个日期分量的时间,如计算今天之前10天的时间为

dateadd(dd,'2012-10-26',-10),之後10天日期为dateadd(dd,'2012-10-26',10)

datediff 计算两个日期之前日期分量的个数,如计算两个日期之间的天数:datediff(dd,'2012-9-10','2012-9-11')

此处的0代表'1900-1-1'

整个表达式相当於DATEADD(dd, DATEDIFF(dd,'1900-1-1',getdate()), '1900-1-1')

即先计算当臆系统时间与1900-1-1之间的天数,再计算1900-1-1加上这个天数的日期。

sqlserver 约束为 按天计算的语句

这个没有什么特殊的约束,仅仅是提醒用户以后录入数据的时候单位是天而不是月或年,比如某商品的有效期为一年,那录入员在录入数据的时候不要写成了1(年),也不要写成了12(月),应该写365(天),如果一定要加个约束的话,那么应该约束成=0,因为有效期不应该为负数。

sqlserver 事务日志没几天就满了

1.清空日志 DUMP TRANSACTION 库名 WITH NO_LOG

2.截断事务日志: BACKUP LOG 库名 WITH NO_LOG

3.收缩数据库文件(如果不压缩,数据库的文件不会减小 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件 --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 也可以用SQL语句来完成 --收缩数据库 DBCC SHRINKDATABASE(库名) --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(1)

4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)

a.分离数据库: 企业管理器--服务器--数据库--右键--分离数据库

b.在我的电脑中删除LOG文件

c.附加数据库: 企业管理器--服务器--数据库--右键--附加数据库 此法将生成新的LOG,大小只有500多K

或用代码: 下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

a.分离 EXEC sp_detach_db @dbname = '库名'

b.删除日志文件

c.再附加 EXEC sp_attach_single_file_db @dbname = '库名', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf'

5.为了以后能自动收缩,

做如下设置: 企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩" --SQL语句设置方式: EXEC sp_dboption '库名', 'autoshrink', 'TRUE'

6.如果想以后不让它日志增长得太大

企业管理器--服务器--右键数据库--属性--事务日志 --将文件增长限制为xM(x是你允许的最大数据文件大小) --SQL语句的设置方式:

alter database 库名 modify file(name=逻辑文件名,maxsize=20)

sqlserver 时间+1天+8:00 大于当前时间

declare @d1 datetime;

set @d1='你的时间';

set @d1=dateadd(dd,1,@d1);-- 加一天

set @d1=dateadd(hh,8,@d1);--加8小时

if(@d1getdate())--大于当前时间

{

}


当前文章:sqlserver天,sql 当天
文章转载:http://csdahua.cn/article/hoeopj.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流