![大三-sql-课后习题答案_第1页](http://file4.renrendoc.com/view14/M0B/22/3A/wKhkGWYybvOAJfPvAADlS-7Bz68054.jpg)
![大三-sql-课后习题答案_第2页](http://file4.renrendoc.com/view14/M0B/22/3A/wKhkGWYybvOAJfPvAADlS-7Bz680542.jpg)
![大三-sql-课后习题答案_第3页](http://file4.renrendoc.com/view14/M0B/22/3A/wKhkGWYybvOAJfPvAADlS-7Bz680543.jpg)
![大三-sql-课后习题答案_第4页](http://file4.renrendoc.com/view14/M0B/22/3A/wKhkGWYybvOAJfPvAADlS-7Bz680544.jpg)
![大三-sql-课后习题答案_第5页](http://file4.renrendoc.com/view14/M0B/22/3A/wKhkGWYybvOAJfPvAADlS-7Bz680545.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章
3.上机练习题
02程序代码如下:
CREATEDATABASESTUDENT1
ONPRIMARY
(NAMESTUDENTl_data,
F工LENAME='E:\DATA\STUDENT1.mdfI
SIZE=3,
MAXSIZE=unlimited,
FILEGROWTH15%)
LOGON
(NAMESTUDENTl_logA
FILENAME='E:\DATA\STUDENT1.Idf
S1ZE=2,
MAXSIZE=30,
FILEGROWTH2)
03程序代码如下:
createdatabasestudents
onprimary
(name=studentsi,
filename*E:\DATA\studentsl.mdf,,
size-5,
maxsize75,
filegrowth=10%),
(namestudentsl2,
filename=*E:\DATA\students2.ndf,,
size10,
maxsize=75z
filegrowth1)
logon
(namestucientslogl,
filename=*E:\DATA\studentslogl.Idf',
size5,
maxsize=30,
filegrowth1),
(name=studentslog2z
filename*E:\DATA\studentslog2.Idf*,
size=5z
maxsize30,
filegrowth=l)
第三章:
3上机练习题
01程序代码如下:
一一创建表book的Transact-SQL语句:
USEtestOl
GO
CREATETABLEbook(
book_idnchar(6)NOTNULL,
book_namenchar(30)NULL,
pricenumeric(10,2)NULL,
CONSTRAINTPK_bookPRIMARYKEYCLUSTERED
(
book_idASC)
)ONPRIMARY
--创建表uthor的Transact-SQL语句:
CREATETABLEdbo.author(
anthor_namenchar(4)NOTNULL,
book_idnchar(6)NOTNULL,
addressnchar(30)NOTNULL
)ON[PRIMARY]
--设置book中的book_id为主键,author表中的book_id为夕卜键
ALTERTABLEdbo.authorWITHCHECK
ADDCONSTRAINTFK_book_authorFOREIGNKEY(book_id)
REFERENCESdbo.book(book_id)
02程序代码如下:
一一利用Transact-SQL语句仓ij建表booksales的代码。
USEtestOl
GO
CREATETABLEbooksales(
book_idnchar(6)NOTNULL,
sellnumintNOTNULL,
selldatedatetimeNOTNULL
)ONPRIMARY
一一利用insert语句为表booksalQs添力口数据:
f1
INSERTINTObooksalesVALUES(m00011z7,20/12/2008)
INSERTINTObooksales(book_id,sellnum,selldate)VALUES
(50001713,17/11/2008)
--利用update语句为表booksales更新数据:
UPDATEbooksalesSETsellnum=11
WHEREbook_id='mOOGll,
--利用delete语句删除表booksales的数据:
DELETEFROMbooksales
WHEREbook_id=,mOOOll'
03程序代码如下:
USEtestOl
GO
CREATERULEsellnum_rule
AS^sellnum>=0
EXECsp_bindrule'sellnum_rule1,1booksales.sellnum1
04程序代码如下:
一删除年以前的数据
DELETEFROMbooksales
WHEREselldate<'1/1/20091
—删除所有数据
TruncateTablebooksales
第四章
3上机练习题
01程序代码如下:
DECLARE@booknamenchar(16)
set@bookname=*SQLServer数据库编程'
02程序代码如下:
USEtestOl
GO
SETNOCOUNTON
DECLAREGstartdatedatetime,Qenddatedatetime
SET©startdate='1/7/200812:12AM'
SET©enddate=,11/10/200912:00AM1
SELECTDATEDIFF(year,Qstartdate,eenddate)
SELECTDATEDIFF(month,Gstartdate,Qenddate)
SELECTDATEDIFF(day,@startdate,@enddate)
SELECTDATEDIFF(minute,gstartdate,,1/8/200712:17AM')
SELECTDATEDIFF(minute,@startdate,GETDATE())
SETNOCOUNTOFF
GO
03程序代码如下:
DECLARE@count工NT,@SUM工NT
SET©count51
SETeSUM=0
WHILEecount<=100
BEGIN
IF(CEILING(@count/3.0)<=FLOOR(@count/3.0))
BEGIN
SET@SUM@SUM+@count
END
SET@count@count+2
END
PRINT,50到之间的所有能被整除的奇数之和,+CAST(@SUMASNCHAR(4))
第五章
3上机练习题
01程序代码如下:
一查询course表中的所有记录。
useteaching
go
select*fromcourse
go
02程序代码如下:
--查询student表中的女生的人数。
useteaching
go
select*fromstudent
wheresex'女'
go
03程序代码如下:
--查询teacher表中每一位教授的教师号、姓名和专业名称。
useteaching
go
selectteacherno,tname,majorfromteacher
whereprof।教授,
g。
04程序代码如下:
―按性别分组,求出student表中的每组学生的平均年龄。
useteaching
g。
selectsexas'学生性别'ravg(DATEDIFF(year,birthday,getdate()))as
平均年龄,
fromstudent
groupbysex
g。
05程序代码如下:
—利用现有的表生成新表,新表中包括学号、学生姓名、课程号和总评成绩。
—其中:总评成绩=£]说1*0.8+usually*0.2
useteaching
go
select
student.studentno,student.sname,score.courseno,final*。•8+usually*0,2
as,总评,
intostu_sorse
fromstudent,score
wherestudent.studentnoscore.studentno
go
select*fromstu_sorse
go
06程序代码如下:
一统计每个学生的期末成绩平均分。
useteaching
go
selectstudentno,sname,avg(总评)
fromstu_sorse
groupbystudentno,sname
go
07程序代码如下:
—输出stud㊀nt表中年龄最大的男生的所有信息。
useteaching
go
select*fromstudent
wherebirthday=
(selectmin(birthday)
fromstudent)
go
08程序代码如下:
一查询teacher表中没有职称的职工的教师号、姓名、专业和部门。
useteaching
g。
selectteacherno,tname,major,department
fromteacher
whereprofisNULL
go
第八早
3上机练习题
01程序代码如下:
―查询每一位教授的教师号、姓名和讲授的课程名称。
useteaching
go
selectteacher.teacherno,tnamermajor,ame
fromteacher,course,teach_class
whereprof='教授'andteacher.teacherno-teach_class.teacherno
andteach_class.courseno-course.courseno
g。
02程序代码如下:
一利用现有的表生成新表,新表中包括学号、学生姓名、课程名称和总评成绩。
—其中:总评成绩=:£inal*0.9+usually*0.1
useteaching
g。
selectDISTINCT
student.studentno,student.sname,ame,score.final*0.9+score.us
ually*0.1as'总评,
intostu_course
fromstudent,course,teach_class,score
wherestudent.studentno=score.studentno
andcourse.coursenoscore.courseno
go
03程序代码如下:
—统计每个学生的期末成绩高于分的课程门数。
useteaching
g。
selectstudent.studentno,student.sname,count(*)as'课程门数'
fromstudent,score
wherescore.final>75
andstudent.studentno=score.studentno
groupbystudent.studentno,student.sname
g。
04程序代码如下:
--输出student表中年龄大于女生平均年龄的男生的所有信息。
useteaching
g。
select*fromstudent
wheresex='男1
andDATEDIFF(yearzbirthdayzgetdate())>(
selectavg(DATEDIFF(year,birthday,getdate()))
fromstudent
wheresex=,女’)
go
05程序代码如下:
一计算每个学生获得的学分。
useteaching
go
selectstudent.studentno,student.snamezsum(credit)
fromstudentINNERJOINscore
ONstudent.studentnoscore.studentno
INNERJOINcourse
ONcourse.coursenoscore.courseno
wherescore.final>60
groupbystudent.studentno,student.sname
go
06程序代码如下:
―获取入学时间在年到年的所有学生中入学年龄小于岁的学号、姓名及所修课程的课程名称。
useteaching
g。
selectstudent.studentno,student.sname,stu_ame
fromstudentinnerjoinstu_course
onstudent.studentnostu_course.studentno
11
where(substring(student.studentno,lz2)=08and
(datediff(year,birthday,,2008-01-01')<19))
or(substring(student.studentno,1,2)=’09'and
(datediff(year,birthday,f2009-01-011)<19))
go
07程序代码如下:
―查询级学生的学号、姓名、课程名及学分。
useteaching
g。
selectstudent.studentno,student.sname,stu_ame
fromstudentinnerjoinstu_course
onstudent.studentnostu_course.studentno
wheresubstring(student.studentno,1,2)=’09'
go
08程序代码如下:
一查询选修课程的少于门、或期末成绩含有分以下课程的学生的学号、姓名、电话和Email。
useteaching
g。
selectstudentno,count(*)as*countNUM'
intocountl
fromscore
groupbystudentno
GO
selectstudent.studentno,snamerphone,Email
fromstudentinnerjoinscore
onstudent.studentno=score.studentno
innerjoincountl
onstudent.studentno=countl.studentno
wherescore.final<60andcountNUM<3
go
第七章
3上机题练习
01程序代码如下:
一一在course表的cname歹!J上仓!J建非聚集索弓I工DX_cname。
USEteaching
GO
CREATENONCLUSTEREDINDEXIDXcnameONcourse(cname)
GO
02程序代码如下:
USEteaching
GO
IFEXISTS(SELECTnameFROMsysindexesWHEREname=1UQ_stu1)
DROPINDEXstudent.UQ_stu
GO
CREATENONCLUSTEREDINDEXUQ_stuONstudent(studentno,classno)
GO
SELECT*FROMstudent
03程序代码如下:
USEteaching
GO
ALTERINDEXUQ_stuONstudentREBUILD
WITH(PAD_INDEX-ON,FILLFACTOR=80)
GO
04程序代码如下:
—创建一个视图v_teacher,查询所有''计算机学院”教师的信息。
USEteaching
GO
CREATEVIEWv_teacher
AS
SELECT*
FROMteacher
WHEREdepartment=1计算机学院,
GO
SELECT*FROMv_teacher
05程序代码如下:
―创建一个视图v_avgstu,查询每个学生的学号、姓名及平均分,并且按照平均分降序排序。
USEteaching
GO
CREATEVIEWv_avgstu
AS
SELECTTOP(100)PERCENTstudent.studentno,student.sname,
AVG(score.final)ASTaverage,
FROMstudent,score
WHEREstudent.studentnoscore.studentnoANDscore.finalISNOTNULL
GROUPBYstudent.studentno,student.sname
ORDERBYAVG(score.final)DESC
GO
SELECT*FROMv_avgstu
06程序代码如下:
--修改v_teacher的视图定义,添加WITHCHECKOPTION选项。
USEteaching
GO
ALTERVIEWv_teacher
AS
SELECT*
FROMteacher
WHEREdepartment='计算机学院,
WITHCHECKOPTION
GO
07程序代码如下:
--通过视图v_teacher向基本表teacher中分别插入数据「050391,,张馨月,,,计算机应
用I,讲师I,计算机学院,)和「060181,李诚I,机械制造I,副教授I,机械学院
D,并查看插入数据情况。
USEteaching
GO
INSERTINTOv_teacherVALUES「05039I,张馨月I,计第机应用I,讲师,J计算机
学院D
INSERTINTOv_teacherVALUES(106018I,李诚I,机械制造,J副教授I1机械学院
I
GO
SELECT*FROMv_teacher
SELECT*FROMteacher
08程序代码如F:
一通过视图v_teacher将基本表teacher中教师编号为,050391的教师职称修改为,副教授
USEteaching
GO
UPDATEv_teacher
SETprof-,副教授,
WHEREteacherno=*050391
GO
SELECT*FROMteacher
第八章
3上机练习题
01程序代码如下:
—创建一个名称为Stu工nf。的存储过程,要求完成以下功能:
一在student表中查询级学生的学号、姓名、性别、出生日期和电话个字段的内容
USEteaching
一查询是否已存在此存储过程,如果存在,就删除它
IFEXISTS(SELECTnameFROMsysobjects
WHEREname1Stulnfo1ANDtype,P1)
DROPPROCEDUREStulnfo
GO
一创建存储过程
CREATEPROCEDUREStulnfo
AS
Selectstudentno,sname,sex,birthday,phone
FROMstudent
WHEREsubstring(studentno,1,2)1081
GO
02程序代码如下:
--创建一个存储过程Score工nfo,
一完成的功能是在表student、表course和表score中查询以F字段:学号、姓名、性别、课
程名称、期末分数。
USEteaching
一查询是否已存在此存储过程,如果存在,就删除它
IFEXISTS(SELECTnameFROMsysobjects
WHEREnameScoreinfo*ANDtype='P1)
DROPPROCEDUREScoreinfo
GO
―创建存储过程
CREATEPROCEDUREScoreinfo
AS
Select
student.studentno,student.sname,student.sexzame,Score.final
FROMstudent,course,score
WHEREstudent.studentnoscore.studentno
andscore.courseno=course.courseno
GO
03程序代码如下:
一创建一个带有参数的存储过程Stu_Age,
―该存储过程根据输入的学号,在student表中计算此学生的年龄,
一并根据程序的执行结果返回不同的值,程序执行成功,返回整数,如果执行出错,则返回错
误号。
一删除已存在的存储过程
USEteaching
IFEXISTS(SELECTnameFROMsysobjects
WHEREname-'Stu_Age'ANDtype='P')
DROPPROCEDUREStu_Age
GO
一创建存储过程
USEteaching
GO
CREATEPROCEDUREStu_Age
@studentNOnvarchar(10)f@AgeintOUTPUT
AS
一定义并初始化局部变量,用于保存返回值
DECLARE@ErrorValueint
SET@ErrorValue=0
―求此学生的年龄
SELECT@Age=YEAR(GETDATE())YEAR(birthday)
FROMstudent
WHEREstudentno=@studentNO
―根据程序的执行结果返回不同的值
IF(@@ERROR<>0)
SET@ErrorValue=e0ERROR
RETURN@ErrorValue
GO
04程序代码如下:
——TemplategeneratedfromTemplateExplorerusing:
——CreateTrigger(NewMenu).SQL
——UsetheSpecifyValuesforTemplateParameters
--command(Ctrl-Shift-M)tofillintheparameter
——valuesbelow.
——SeeadditionalCreateTriggertemplatesformore
——examplesofdifferentTriggerstatements.
--Thisblockofcommentswillnotbeincludedin
——thedefinitionofthefunction.
SETANSI_NULLSON
GO
SETQUOTED.IDENTIFIERON
GO
--Author:Name
一一Createdate:
——Description:
CREATETRIGGERdbo.TR_Stu_Insert
ONdbo.student
AFTERINSERT
AS
BEGIN
DECLARE@msgnchar(30)
SET@msg=1你插入了一条新记录!,
PRINT@msg
END
GO
05程序代码如下:
--创建一个AFTER触发器,要求实现以卜功能:
--在score表上创建—t•插入、更新类型的触发器TR_ScoreCheck,
一当在score字段中插入或修改考试分数后,触发该触发器,检查分数是否在-100之间。
USEteaching
GO
CREATETRIGGERTR_ScoreCheck
ONscore
FORINSERT,UPDATE
AS
IFUPDATE(final)
PRINT,AFTER触发器开始执行…1
BEGIN
DECLARE©ScoreValuereal
SELECT@ScoreValue=(SELECTfinalFROMinserted)
IF@ScoreValue>100OR@ScoreValue<0
PRINT,输入的分数有误,请确认输入的考试分数!,
END
GO
06程序代码如下:
一创建一个INSTEADOF触发器,要求实现以下功能:
--在course表上创建,个删除类型的触发器TR_NotAllowDelete,
一当在course表中删除记录时,触发该触发器,显示不允许删除表中数据的提示信息。
USEteaching
GO
IFEXISTS(SELECTnameFROMsysobjects
WHEREname=*TR_NotAllowDelete*ANDtype='TR1)
DROPTRIGGERTR_NotAllowDelete
GO
CREATETRIGGERTR_NotAllowDelete
ONcourse
INSTEADOFDELETE
AS
PRINT'INSTEADOF触发器开始执行,
PRINT,本表中的数据不允许被删除!不能执行删除操作!,
GO
第九章
3上机练习题
01程序代码如卜:
--仓ij建在score表」:执行UPDATE语句的事务UP_score,并执行。
USEteaching
GO
BEGINTRAN
UPDATEdbo.score
SETusually77zfinal88
WHEREstudentno^*0824113307*ANDcourseno1c05109
COMMITTRAN
GO
02程序代码如下:
一练习使用ROLLBACKTRANSACT工ON语句回滚事务,并查看。
USEteaching
GO
BEGINTRAN
INSERTINTOcourse
VALUES('cO5133l'国际贸易’3必修132,2.0);
SAVETRANsavel;
DELETEFROMcourse
WHEREcourseno1C051371;
ROLLBACKTRANsavel;
COMMITTRAN
GO
03程序代码如下:
―练习在student表上创建嵌套事务,分别在内层和外层设置回滚点,检测回滚对表数据的影
响。
USEteaching
GO
BEGINTRANtranl
SAVETRANsavel;
BEGINTRANtran2
UPDATEstudent
SETsname=’赵平茵Ipoint=997,phone…53179372727'
WHEREstudentno'08282613671;
SELECT*FROMstudentWHEREstudentno=108282613671;
SAVETRANsave2;
COMMITTRANtran2;
UPDATEstudent
SETsname='#Wjffi',point=987,phone='053179372727
WHEREstudentno-108282613671;
ROLLBACKTRANsavel;
COMMITTRANtran2;
SELECT*FROMstudentWHEREstudentno=108282613671;
GO
04程序代码如下:
―练习在student表上创建嵌套事务,并利用系统变编程,
一检测嵌套事务的执行情况。
USEteaching
GO
BEGINTRANTRI
PRINTf1stBEGINTRAN:@@TRANCOUNT=1+CAST(@eTRANCOUNTAS
NVARCHAR(10));
SAVETRANsavel;
BEGINTRANTR2
PRINT12ndBEGINTRAN:@@TRANCOUNT='
+CAST(@@TRANCOUNTASNVARCHAR(10));
UPDATEstudent
SETsname-赵平茵',point=997,phone,'053179372727,
WHEREstudentno="0828261367,;
COMMITTRANTR2;
PRINT11stCOMMITTRAN:0@TRANCOUNT=1
+CAST(@@TRANCOUNTASNVARCHAR(10));
--ROLLBACKTRANsavel;
PRINTfROLLBACKTRAN:@@TRANCOUNT='
+CAST(@@TRANCOUNTASNVARCHAR(10));
COMMITTRANTRI;
PRINTfAFTERCOMMITTRANTRI:@@TRANCOUNT='
+CAST(@@TRANCOUNTASNVARCHAR(10));
SELECT*FROMstudentWHEREstudentno=10828261367,;
GO
05程序代码如下:
--练习在student表上进行查询、插入和更新,然后使用sys.dm_tran_locks视图查看锁的
信息。
USEteaching;
GO
BEGINTRAN
SELECTstudentno,sname
FROMstudent
--WITH(holdlock^rowlock)
WHEREstudentno*08282613671;
INSERTINTOstudent
VALUES(,1028261001','孙释远l'女
I,1989-09-091’090512I777,,1328909876‘3sdqd@163.com.);
UPDATEstudent
SETsnam㊀='孙释嘉'
WHEREstudentno-108282613671;
--为了查看事务中使用的锁的信息,使用动态管理视图sys.dm_tran_lockso在查询窗口中
键入并执行以下SELECT语句来获取锁信息并提交事务。
SELECTresource_type,resource_associated_entity_id<
request_status,request_mode,request_session_id,
resource_description
FROMsys.dm_tran_locks
WHEREresource_database_id=DB_ID('teaching');
一提交事务
COMMITTRAN
第十章
3上机练习题
01程序代码如下:
USEmaster
GO
CREATELOGINUSERIWITHPASSWORD1Abc!@#213,
03程序代码如下:
一练习在teaching数据库中为SQLServer登录名USER1添力口数据库用户,并取名为USER2,
默认架构为TEAC。
USEteaching
GO
CREATEUSERUSER2FORLOGINUSERI
WITHDEFAULT_SCHEMATEAC
GO
05程序代码如下:
--练习将teaching数据库中创建表的权限授予用户USER2。
USEteaching
GO
GRANTCREATETABLETOUSER2
GO
第十一章
3上机练习题
01程序代码如下:
—完整数据库备份
USEteaching
GO
BACKUPDATABASEteaching
TODISK二N'F:\sqlprogram_ex\第章\backteaching'
WITHEXPIREDATE=N*12/22/200900:00:00',
NAMEN,teaching-完整数据库备份I
STATS=10
GO
一差异备份
BACKUPDATABASEteaching
TODISK=NfF:\sqlprogram_ex\55^Abackteaching1
WITHDIFFERENTIAL,
EXPIREDATE=N*12/22/200900:00:001,
NOFORMAT,NOINIT,
NAME=N,teaching-差异数据库备份I
SKIP,NOREWIND,NOUNLOAD,STATS=10
GO
declare@backupSetIdasint
select@backupSetId=position
frommsdb..backupset
wheredatabase_name=N*teaching,andbackup_set_id=(select
max(backup_set_id)frommsdb..backupsetwhere
database_name=N'teaching1)
if0backupSetIdisnull
begin
raiserror(N,验证失败。找不到数据库、'teaching〃的备份信息。I16,1)
end
RESTOREVERIFYONLY
FROMDISK=N'F:\sqlprogram_ex\第章\backteaching'
WITHFILE二@backupSetIdzNOUNLOAD,NOREWIND
GO
02程序代码如下:
--对数据库teaching进行恢复
RESTOREDATABASEteaching
FROMDISKN'F:\sqlprogram_ex\第章\backteaching'
WITHFILE=2ZNORECOVERY,NOUNLOAD,
STATS=10
GO
RESTOREDATABASEteaching
FROMDISK=N*F:\sqlprogram__ex\M¥\backteachingf
WITHFILE=3,NOUNLOAD,
STATS=10
GO
03程序代码如下:
一创建备份设备
USEmaster
GO
EXECmaster.dbo.sp_addumpdevice
@devtype=Nfdisk',
GlogicalnameN1devicel,,
@physicalname=N*F:\sqlprogram_ex\\back_devicel.bak
GO
一备份t㊀aching数据库的事务日志
BACKUPLOGteaching
TOdevicel
WITHRETAINDAYS=3,NOFORMAT,NO工N工T,
NAME=N'teaching-事务日志备份I
SKIP,NOREWIND,NOUNLOAD,
STATS=10
GO
第十二章
3上机练习题
02程序代码如下:
USEmsdb
GO
DECLAREGjobldBINARY(16)
EXECmsdb.dbo.sp_add_job@job_nameN'student,,
@category_name=N,[Uncategorized(Local)]',
@owner_login_name=N1JIANG-N9VJWXJll\Administrator*,@job_id
0jobldOUTPUT
GO
EXECmsdb.dbo.sp_add_jobserver@job_nameN*student\@server_name
NfJIANG-N9VJWXJ11'
GO
DECLARE@schedule_idint
EXECmsdb.dbo.sp_add_jobschedule0job_name'student',OnameN1planlT,
@active_start_date=20091222z
@active_end_date99991231,
@active_star100000,
@active_end_time235959,0schedule_id@schedule_idOUTPUT
GO
03程序代码如下:
USEmsdb
GO
EXECmsdb.dbo.sp_add_alert@nameN*alert1,,
@message_id=0,
(^severity8,
@enabled=l,
@delay_between_responses30,
@include_event_description_in=lr
@notification_messageN1交易时间即将结束,请及时处理数据,,
@job_id=N,db8abb83-8552-49b0-a613-0c223a0bbfdd,
GO
1
EXECmsdb.dbo.sp_add_notification@alert_name=N'alert1f
@operator_nameN*jiang*zQnotification_method1
GO
04程序代码如下:
USEmsdb
GO
EXECmsdb.dbo.sp_add_operator@name:N1operator,,
@enabled=l,
@weekday_pager_start_time80000,
@weekday_pager_end_time=180000,
@pager_days62z
@email_address=N'jiang44680'
GO
EXECmsdb.dbo.sp_add_notification@alert_name=N'alert1*,
@operator_nameNToperator1,@notification_method1
GO
EXECmsdb.dbo.sp_add_notification@alert_nameN'testAlert11,
0operator_name=Nfoperator*,@notification_method=1
GO
05程序代码如下:
USEmsdb
GO
一创建事务
BEGINTRANSACTION
DECLARE@ReturnCode工NT
SELECTQReturnCode0
--创建维护计划maintain1
DECLARE@jobldBINARY(16)
EXEC@ReturnCode=msdb.dbo.sp_add_job@job_name=N'maintainl,,
©enabled1,
@notify_level_eventlog=2,
@notify_level_email=2,
@notify_level_netsend-0z
@notify_level_page0,
@delete_level=0,
©description=N1无描述。I
@category_name=N'DatabaseMaintenance,,
@owner_login_nameN1JIANG-N9VJWXJ11'Administrator
@notify_email_operator_name=N*jiang*,@job_id二@jobldOUTPUT
IF(@@ERROR<>0OR©ReturnCode<>0)GOTOQuitWithRollback
-一仓U建子计戈ljday_plan
EXEC0ReturnCodemsdb.dbo.sp_add_jobstep0job_id0jobld,@step_nameN'
子计划I
@step_id=lz
@cmdexec_success_code=0z
@on_success_action1,
@on_success_step_id=0z
@on_fail_action:2,
@on_fail_step_id=0,
@retry_attempts0,
@retry_interval=0,
@os_run_priority0,©subsystem;N'SS工S
@command=N*/ServerJIANG-N9VJWXJ11/SQL'Maintenance
1
Plans\maintainl”/set"'Package、子计戈U.Disable;false"z
@flags=0
IF(@@ERROR<>0OR@ReturnCode<>0)GOTOQuitWithRollback
EXECQReturnCode=msdb.dbo.sp_update_job@job_id;@jobld,
0start_step_id1
IF(@eERROR<>0OR@ReturnCode<>0)GOTOQuitWithRollback
EXEC@ReturnCodemsdb.dbo.sp_add_jobschedule@job_id@jobld,
@name=N'day_plan
©enabled1,
@freq_type-4,
@freq_interval1,
@freq_subday_type-lz
@freq_subday_interval=0,
@freq_relative_intervalr0,
@freq_recurrence_factor0,
@active_start_date=20091223z
0active_end_date20091225,
@active_start_time=0z
0active_end_time235959
IF(@@ERROR<>0OR@ReturnCode<>0)GOTOQuitWithRollback
EXECQReturnCodemsdb.dbo.sp_add_jobserver@job_id@jobld,
@server_name=N1(local)’
IF(@@ERROR<>0OR@ReturnCode<>0)GOTOQuitWithRollback
COMMITTRANSACTION
GOTOEndSave
QuitWithRollback:
IF(@eTRANCOUNT>0)ROLLBACKTRANSACTION
EndSave:
第十三章
3上机练习题
01程序代码如下:
--练习对teaching数据库进行创建事务性发布。
—启用复制数据库
usemaster
execsp_replicationdboption@dbname=N*teaching,,
QoptnameNfpublish',SvalueN1true1
GO
exec[teaching].sys.sp_addlogreader_agent@job_login=null,
@job_passwordnull,@publisher_security_mode1
GO
exec[teaching].sys.sp_addqreader_agent@job_login;null,
@job_password=null,@frompublisher=1
GO
—添加事务性发布
use[teaching]
execsp_addpublication(^publication=N*teac_pub*,
@descriptionN,来自发布服务器、'JIANG-N9VJWXJ11”的数据库"teaching”的事
务性发布。I
@sync_niethodN1concurrent1,^retention0,
@allow_push=N'true',@allow_pull=N*true1,
@allow_anonymousN'true',
@enabled_for_internet=N'false’,
@snapshot_in_defaultfolderN1true',
@compress_snapshot=N'false1,
@ftp_port21,@ftp_loginN1anonymous',
@allow_subscription_copy=N*false',
@add_to_active_directoryN'false,,
@repl_freq=N1continuous,,
1
@statusN'activer
@independent_agent=N1true,,
@immediate_sync=N*true*z
@allow_sync_tran=N'false,,
^autogen_sync_procsN'false',
@allow_queued_tran=N*false,,
1
@allow_dtsNfalse',@replicate_ddllz
@allow_initialize_from_backup:N'false’,
@enabled_for_p2pN'false1,
@enabled_for_het_sub=N1false1
GO
execsp_addpublication_snapshot^publication=N1teac_pub1,
@frequency_type1,0frequency_interval0,
@frequency_relative_interval=0,
requency_recurrence_factor0,
@frequency_subday=0,@frequency_subday_interval=0,
@active_start_time_of_day0,
@active_end_time_of_day=235959,
@active_start_date0,@active_end_date0,
@job_login=null,@job_password=nullf
@publisher_security_mode1
execsp_grant_publication_access©publicationN1teac_pub@login二
N1sa1
GO
execsp_grant_publication_access^publicationN1teac_pub©login
N'NTAUTHORITYXSYSTEM'
GO
execsp_grant_publication-access^publicationN1teac_pub*,@login二
N1BUILTIN\Administrators1
GO
execsp_grant_publication_access^publicationN*teac_pub©login
N»JIANG-N9VJWXJll\SQLServer2005SQLAgentUser$JIANG-N9VJWXJll$MSSQLSERV
ER'
GO
execsp_grant_publication_access(^publication=N'teac_pub*r@login
N*JIANG-N9VJWXJll\SQLServer2005MSSQLUser$JIANG-N9VJWXJll$MSSQLSERVER,
GO
execsp_grant_publication_access^publication=N*teac_pub*,@login二
N'distributor_admin'
GO
—添加事务性项目
use[teaching]
execsp_addarticle(^publication=N*teac_pub*,
@articleN'student',@source_ownerN'db。',
@source_object=N1student*,@type=N1logbased,,
(5descriptionN'l@creation_scriptN'
@pre_creation_cmd=N1drop',
@schema_option0x000000000803509F,
@identityrangemanagementoption=N*noneT,
@destination_tableN1student,,
@destination_owner=N1dbo1,^status=24,
@vertical_partitionN1false1,
@ins_cmd=N1CALL[sp_MSins_dbostudent]
@del_cmdN1CALL[sp_MSdel_dbostudent],,
@upd_cmd=N'SCALL[sp_MSupd_dbostudent]1
GO
use[teaching]
execsp_addarticle(^publ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论