同事告知某现场SQL
Server2008R2数据库的DATA文件夹下audittrace开头的trc文件不断增多,占用较大空间,因此需要关停,尝试解决步骤如下:

设教学数据库中有三个基本表:

sql server2008数据库复制实现数据同步常见问题

在原作者基础上追加 sql
server2008数据库复制实现数据同步常见问题

1.查看是否有后台开启的trace

学生表
S(S#,SNAME,AGE,SEX),其属性表示学生的学号、姓名、年龄和性别;选课表
SC(S#,C#,GRADE),其属性表示学生的学号、所学课程的课程号和成绩;课程表
C(C#,CNAME,TEACHER),其属性表示课程号、课程名称和任课教师姓名。
下面的题目都是针对上述三个基本表操作的。

23.发布 ‘xx’ 的并发快照不可用,因为该快照尚未完全生成,或者日志读取器代理未运行,无法激活它。如果并发快照的生成过程中断,则必须重新启动用于该发布的快照代理,直到生成完整的快照。

  1. 删除相关的发布订阅
  2. 执行下列查询,如果还是存在’xx’相关的行

select * from msdb..MSdistpublishers
select * from distribution..MSpublisher_databases
select * from distribution..MSpublications
select * from distribution..MSarticles
select * from distribution..MSsubscriptions
  1. 删掉所有与’xx’先关的行(记得先备份表)

delete from distribution..MSarticles where publisher_db = '<NameOfDatabase>'
delete from distribution..MSsubscriptions where publisher_db = '<NameOfDatabase>'
  1. 重建分发

参考
stackoverflow

如果没有像22那样修改过密码,就是删除分发复制时由于某些原因没删干净(上边的那些表)
经测试,删除发布、订阅时MSsubscriptions表中的数据会自动被删掉,
如果还存在之前的‘xx’那就是未删除干净

dbcc traceon(3604)
go
dbcc tracestatus(-1)

(1)写出检索全是女同学选修的课程的课程号的SQL语句。

24. 错误号 MSSQL_REPL20011 错误号:15517

    进程无法在“WIN-XXX”上执行“sp_replcmds”。 (源: MSSQL_REPL,错误号  MSSQL_REPL20011) 
    获取帮助: http://help/MSSQL_REPL20011
    无法作为数据库主体执行,因为主体 "dbo    不存在、无法模拟这种类型的主体,或您没有所需的权限。 (源 MSSQLServer,错误号: 15517)
    获取帮助: http://help/15517
    进程无法在“WIN-XXX”上执行“sp_replcmds”。 (源: MSSQL_REPL,错误号  MSSQL_REPL22037)
    获取帮助: http://help/MSSQL_REPL22037 
  • 权限不够,解决方法

  ALTER AUTHORIZATION ON DATABASE::[数据库名] TO [sa]

  ALTER AUTHORIZATION ON DATABASE::[数据库名] TO [分发账户]

  USE 数据库名
  GO
  sp_changedbowner '分发账户'

参考

发现并没有……

 

25 错误信息:已将此(这些)订阅标记为不活动,必须将其重新初始化。需要删除 NoSync 订阅,然后重新创建它们

解决方法:
更改分发库中的一个表 MSsubscriptions 的状态字段(0 = 不活动;1 = 已订阅;2
= 活动),订阅中的每个已发布项目在MSsubscriptions表中占一行。

update sub set status = 2
from distribution.dbo.MSsubscriptions sub 
where status<>2 and publication_id='publicationID'

执行之后,重新关闭和启动该分发代理作业,很快,复制正常了!~

为了避免过期导致的问题,有两种方法设置:

  1. 禁用这几个清除的作业;
  2. 设置更长的保质期。

2.查看是否有人工开启的sqlprofiler。(一般生成在本地的trc都是本地的sqlprofiler窗口,查这个没报多大期望)

select C# 

26 添加新的分发表

1. 分发项-->右键属性-->项目-->勾选显示所有熟悉-->勾选分发表
2. 启动复制监视器-->选中分发项-->代理-->启动代理(等待代理完成,订阅会自动同步新的快照含新添加的项,期间耐心等待,可 F5 查看进度)
select * from sys.dm_exec_sessions where program_name like 'SQL Server%';

 

27 日志读取代理器未运行, 无法启动

结果果然为空……

from S,SC 

3.Google之,在一个9年前的网页上找到了解决办法,提示是开启了C2审计,关闭之。

 

where S.S#=SC.S# and S.SEX=’女’

图片 1

 

关于C2审计参考
最后一段。

(2)写出下列插入操作的SQL语句:把SC表中每门课程的平均成绩插入到另一个已存在的表SC_C(C#,CNAME,
AVG_GRADE)中,其中 AVG_GRADE
为每门课程的平均成绩。

 

insert into SC_C 

发表评论

电子邮件地址不会被公开。 必填项已用*标注