大三-sql-课后习题答案_第1页
大三-sql-课后习题答案_第2页
大三-sql-课后习题答案_第3页
大三-sql-课后习题答案_第4页
大三-sql-课后习题答案_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章

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

提交评论