设置内存选项:
- SQL code
-
--设置 min server memory 配置项 EXEC sp_configure N'min server memory (MB)', 0 --设置 max server memory 配置项 EXEC sp_configure N'max server memory (MB)', 256 --使更新生效 RECONFIGURE WITH OVERRIDE
使用文件及文件组.sql:
- SQL code
-
/*--功能说明 下面的代码是在SQL Server 2000上创建名为 MyDB 的数据库 该数据库包括1个主要数据文件、3个用户定义的文件组和1个日志文件 ALTER DATABASE语句将用户定义文件组指定为默认文件组。 之后,通过指默认的文件组来创建表,并且将图像数据和索引放到指定的文件组中。 最后,将文件组中的指定数据文件删除 --*/ --切换到 master 数据库 USE master GO --A. 创建数据库 MyDB CREATE DATABASE MyDB ON PRIMARY --主文件组和主要数据文件 ( NAME='MyDB_Primary', FILENAME= 'c:/MyDB_Prm.mdf'), FILEGROUP MyDB_FG1 --用户定义文件组1 ( NAME = 'MyDB_FG1_Dat1', FILENAME = 'c:/MyDB_FG1_1.ndf'), --次要数据文件1 ( NAME = 'MyDB_FG1_Dat2', FILENAME = 'd:/MyDB_FG1_2.ndf'), --次要数据文件2 FILEGROUP MyDB_FG2 --用户定义文件组2 ( NAME = 'MyDB_FG1_Dat', FILENAME = 'e:/MyDB_FG2.ndf') --次要数据文件 LOG ON --日志文件 ( NAME='MyDB_log', FILENAME ='d:/MyDB.ldf') GO --B. 修改默认数据文件组 ALTER DATABASE MyDB MODIFY FILEGROUP MyDB_FG1 DEFAULT GO --切换到新建的数据库 MyDB USE MyDB --C. 在默认文件组MyDB_FG1创建表,并且指定图像数据保存在用户定义文件组MMyDB_FG2 CREATE TABLE MyTable ( cola int PRIMARY KEY , colb char(8) , colc image ) TEXTIMAGE_ON MyDB_FG2 --在用户定义文件组MyDB_FG2上创建索引 CREATE INDEX IX_MyTable ON MyTable(cola) ON MyDB_FG2 GO --D. 将要删除数据文件MyDB_FG1_Dat1上的数据转移到其他数据文件中,并且清空数据文件MyDB_FG1_Dat1 DBCC SHRINKFILE(MyDB_FG1_Dat1,EMPTYFILE) --删除数据文件MyDB_FG1_Dat1 ALTER DATABASE MyDB REMOVE FILE MyDB_FG1_Dat1
调整tempdb数据库的文件属性.sql:
- SQL code
-
--A. 将tempdb数据库的主数据文件大小设置为10MB。 ALTER DATABASE tempdb MODIFY FILE( name=tempdev, size=100 MB) GO --B. 将tempdb数据库的主数据文件移动到指定的磁盘分区上,并且为其添加一个数据文件。 --移动主数据文件 ALTER DATABASE tempdb MODIFY FILE ( NAME='tempdev', FILENAME ='d:/tempdb.mdf') --添加次要数据文件 ALTER DATABASE tempdb ADD FILE ( NAME='tempdata_1', FILENAME ='d:/tempdb_data_1.ndf')
日期概念理解中的一些测试.sql:
- SQL code
-
--A. 测试 datetime 精度问题 DECLARE @t TABLE(date char(21)) INSERT @t SELECT '1900-1-1 00:00:00.000' INSERT @t SELECT '1900-1-1 00:00:00.001' INSERT @t SELECT '1900-1-1 00:00:00.009' INSERT @t SELECT '1900-1-1 00:00:00.002' INSERT @t SELECT '1900-1-1 00:00:00.003' INSERT @t SELECT '1900-1-1 00:00:00.004' INSERT @t SELECT '1900-1-1 00:00:00.005' INSERT @t SELECT '1900-1-1 00:00:00.006' INSERT @t SELECT '1900-1-1 00:00:00.007' INSERT @t SELECT '1900-1-1 00:00:00.008' SELECT date,转换后的日期=CAST(date as datetime) FROM @t /*--结果 date 转换后的日期 --------------------- -------------------------- 1900-1-1 00:00:00.000 1900-01-01 00:00:00.000 1900-1-1 00:00:00.001 1900-01-01 00:00:00.000 1900-1-1 00:00:00.009 1900-01-01 00:00:00.010 1900-1-1 00:00:00.002 1900-01-01 00:00:00.003 1900-1-1 00:00:00.003 1900-01-01 00:00:00.003 1900-1-1 00:00:00.004 1900-01-01 00:00:00.003 1900-1-1 00:00:00.005 1900-01-01 00:00:00.007 1900-1-1 00:00:00.006 1900-01-01 00:00:00.007 1900-1-1 00:00:00.007 1900-01-01 00:00:00.007 1900-1-1 00:00:00.008 1900-01-01 00:00:00.007 (所影响的行数为 10 行) --*/ GO --B. 对于 datetime 类型的纯日期和时间的十六进制表示 DECLARE @dt datetime --单纯的日期 SET @dt='1900-1-2' SELECT CAST(@dt as binary(8)) --结果: 0x0000000100000000 --单纯的时间 SET @dt='00:00:01' SELECT CAST(@dt as binary(8)) --结果: 0x000000000000012C GO --C. 对于 smalldatetime 类型的纯日期和时间的十六进制表示 DECLARE @dt smalldatetime --单纯的日期 SET @dt='1900-1-2' SELECT CAST(@dt as binary(4)) --结果: 0x00010000 --单纯的时间 SET @dt='00:10' SELECT CAST(@dt as binary(4)) --结果: 0x0000000A
-
CONVERT在日期转换中的使用示例.sql:- SQL code
- --字符转换为日期时,Style的使用 --1. Style=101时,表示日期字符串为:mm/dd/yyyy格式 SELECT CONVERT(datetime,'11/1/2003',101) --结果:2003-11-01 00:00:00.000 --2. Style=101时,表示日期字符串为:dd/mm/yyyy格式 SELECT CONVERT(datetime,'11/1/2003',103) --结果:2003-01-11 00:00:00.000 /*== 日期转换为字符串 ==*/ DECLARE @dt datetime SET @dt='2003-1-11' --1. Style=101时,表示将日期转换为:mm/dd/yyyy 格式 SELECT CONVERT(varchar,@dt,101) --结果:01/11/2003 --2. Style=103时,表示将日期转换为:dd/mm/yyyy 格式 SELECT CONVERT(varchar,@dt,103) --结果:11/01/2003 /*== 这是很多人经常犯的错误,对非日期型转换使用日期的style样式 ==*/ SELECT CONVERT(varchar,'2003-1-11',101) --结果:2003-1-11
SET DATEFORMAT对日期处理的影响.sql- SQL code
-
--1. /*--说明 SET DATEFORMAT设置对使用CONVERT把字符型日期转换为日期的处理也具有影响 但不影响明确指定了style的CONVERT处理。 --*/ --示例 ,在下面的示例中,第一个CONVERT转换未指定style,转换的结果受SET DATAFORMAT的影响,第二个CONVERT转换指定了style,转换结果受style的影响。 --设置输入日期顺序为 日/月/年 SET DATEFORMAT DMY --不指定Style参数的CONVERT转换将受到SET DATEFORMAT的影响 SELECT CONVERT(datetime,'2-1-2005') --结果: 2005-01-02 00:00:00.000 --指定Style参数的CONVERT转换不受SET DATEFORMAT的影响 SELECT CONVERT(datetime,'2-1-2005',101) --结果: 2005-02-01 00:00:00.000 GO --2. /*--说明 如果输入的日期包含了世纪部分,则对日期进行解释处理时 年份的解释不受SET DATEFORMAT设置的影响。 --*/ --示例,在下面的代码中,同样的SET DATEFORMAT设置,输入日期的世纪部分与不输入日期的世纪部分,解释的日期结果不同。 DECLARE @dt datetime --设置SET DATEFORMAT为:月日年 SET DATEFORMAT MDY --输入的日期中指定世纪部分 SET @dt='01-2002-03' SELECT @dt --结果: 2002-01-03 00:00:00.000 --输入的日期中不指定世纪部分 SET @dt='01-02-03' SELECT @dt --结果: 2003-01-02 00:00:00.000 GO --3. /*--说明 如果输入的日期不包含日期分隔符,那么SQL Server在对日期进行解释时 将忽略SET DATEFORMAT的设置。 --*/ --示例,在下面的代码中,不包含日期分隔符的字符日期,在不同的SET DATEFORMAT设置下,其解释的结果是一样的。 DECLARE @dt datetime --设置SET DATEFORMAT为:月日年 SET DATEFORMAT MDY SET @dt='010203' SELECT @dt --结果: 2001-02-03 00:00:00.000 --设置SET DATEFORMAT为:日月年 SET DATEFORMAT DMY SET @dt='010203' SELECT @dt --结果: 2001-02-03 00:00:00.000 --输入的日期中包含日期分隔符 SET @dt='01-02-03' SELECT @dt --结果: 2003-02-01 00:00:00.000
SET LANGUAGE对日期处理的影响示例.sql- SQL code
-
--以下示例演示了在不同的语言环境(SET LANGUAGE)下,DATENAME与CONVERT函数的不同结果。 USE master --设置会话的语言环境为: English SET LANGUAGE N'English' SELECT DATENAME(Month,GETDATE()) AS [Month], DATENAME(Weekday,GETDATE()) AS [Weekday], CONVERT(varchar,GETDATE(),109) AS [CONVERT] /*--结果: Month Weekday CONVERT ------------- -------------- ------------------------------- March Tuesday Mar 15 2005 8:59PM --*/ --设置会话的语言环境为: 简体中文 SET LANGUAGE N'简体中文' SELECT DATENAME(Month,GETDATE()) AS [Month], DATENAME(Weekday,GETDATE()) AS [Weekday], CONVERT(varchar,GETDATE(),109) AS [CONVERT] /*--结果 Month Weekday CONVERT ------------- --------------- ----------------------------------------- 05 星期四 05 19 2005 2:49:20:607PM --*/
日期格式化处理.sql- SQL code
-
DECLARE @dt datetime SET @dt=GETDATE() --1.短日期格式:yyyy-m-d SELECT REPLACE(CONVERT(varchar(10),@dt,120),N'-0','-') --2.长日期格式:yyyy年mm月dd日 --A. 方法1 SELECT STUFF(STUFF(CONVERT(char(8),@dt,112),5,0,N'年'),8,0,N'月')+N'日' --B. 方法2 SELECT DATENAME(Year,@dt)+N'年'+DATENAME(Month,@dt)+N'月'+DATENAME(Day,@dt)+N'日' --3.长日期格式:yyyy年m月d日 SELECT DATENAME(Year,@dt)+N'年'+CAST(DATEPART(Month,@dt) AS varchar)+N'月'+DATENAME(Day,@dt)+N'日' --4.完整日期+时间格式:yyyy-mm-dd hh:mi:ss:mmm SELECT CONVERT(char(11),@dt,120)+CONVERT(char(12),@dt,114)
日期推算处理.sql- SQL code
-
DECLARE @dt datetime SET @dt=GETDATE() DECLARE @number int SET @number=3 --1.指定日期该年的第一天或最后一天 --A. 年的第一天 SELECT CONVERT(char(5),@dt,120)+'1-1' --B. 年的最后一天 SELECT CONVERT(char(5),@dt,120)+'12-31' --2.指定日期所在季度的第一天或最后一天 --A. 季度的第一天 SELECT CONVERT(datetime, CONVERT(char(8), DATEADD(Month, DATEPART(Quarter,@dt)*3-Month(@dt)-2, @dt), 120)+'1') --B. 季度的最后一天(CASE判断法) SELECT CONVERT(datetime, CONVERT(char(8), DATEADD(Month, DATEPART(Quarter,@dt)*3-Month(@dt), @dt), 120) +CASE WHEN DATEPART(Quarter,@dt) in(1,4) THEN '31'ELSE '30' END) --C. 季度的最后一天(直接推算法) SELECT DATEADD(Day,-1, CONVERT(char(8), DATEADD(Month, 1+DATEPART(Quarter,@dt)*3-Month(@dt), @dt), 120)+'1') --3.指定日期所在月份的第一天或最后一天 --A. 月的第一天 SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+'1') --B. 月的最后一天 SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1') --C. 月的最后一天(容易使用的错误方法) SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt)) --4.指定日期所在周的任意一天 SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt) --5.指定日期所在周的任意星期几 --A. 星期天做为一周的第1天 SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt) --B. 星期一做为一周的第1天 SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)