将发布所有订阅删除,(发布不用删除),就可以在发布属性的项目中取消表,然后就
可以修改该表了,修改后,再将表加入发布内就可以了.
2.常用的操作界面:
(1)一般都在监视器--发布项目,可以看到快照 分发和订阅的即时信息.
(2)另外一个操作地方是发布的属性,(在属性--状态里可以启动代理)
(3)还有一个是工具--复制--配置发布、订阅服务器和分发,需要订阅的服务器必
须在这里指定授权后订阅才能成功.
============
问题:
数据库无法登陆的老问题:数据库属性-安全里面,不要选仅windows登陆,换另外一
个模式.
0.订阅一个快照发布(不是事务复制)出错," 名称xxx在TransP lication集
合上没有找到",在企业管理器中,将发布数据库和订阅数据库都停止或者断开,再
启动,重新连接就可以订阅快照发布了.真是希奇,有莫名其妙的问题可以尝试重启
服务器试试,有时后一台机器上可以正常控制订阅操作,而另外一台机器上却订阅
操作出错,也重新连接服务器试试.
1.一开始碰到的问题是,注册的local服务器不能用,删除后重新命名搞定,
2.sql server代理正在使用系统帐户,它会导致复制失败,. 这个提示点确定后,
本账户的选项为灰色,
原来是配置发布的服务器不是本机,到本机上操作发布,就可以选"本账户"了.
3.又遇到不能署名订阅,"不允许请求的署名订阅",明明发布和订阅服务器双方都
注册了,也双方都建立了
订阅的用户帐号,原因:在这步,点注册服务器,然后不能选默认的模拟sql登陆,而
是要选"使用sql 身份验证",然后输入名称和密码.
如果始终弹出"不允许请求的署名订阅",不能进到选择登陆模式的界面,退出订阅
向导,在企业管理器中,进入发布服务器,复制-右键-"配置发布、订阅服务器和分
发"-订阅服务器-添加订阅服务器机器名和帐号,如果已经有了,直接确定下.再在
进订阅服务器订阅就不会显示不能署名订阅了.
以上过程可能发现明明订阅服务器名字已经在发布服务器添加了,还是出现这个问
题,就一定要在订阅服务器进入发布服务器,然后添加订阅服务器的名字,为什么会
这样,可能是在发布服务器指定了改订阅服务器的名字后,但订阅服务器没有刷新,
可以断开一次订阅服务器和发布服务器,再来订阅,也可以解决.
4.请求订阅已经建立好了,但订阅状态显示"正在重试", 上次动作"进程未能连接
到s scriber SHD-SHD",
原因是我安装sql后,曾经改过电脑的名字,改回SHD-SHD.(有的人是因为sql服务器
端口修改过造成).还有可能是MSSQLserver和Sqlserveragent服务没有用域用户身
份启动并运行,减肥药哪个好
(于是我把B加到A所在的域,安利减肥产品并且把A的管理员用户加到B的SQLServerAgent服务的
登陆用户中,)
5.但订阅状态显示"请求共享代理程序失败", "进程未能连接到distributor
...",怀疑是订阅设置时,连接
发布数据库的帐号有问题,在订阅(右键)的历史记录中查看具体的错误原因.帐号
正确后,历史记录又说
订阅端机器没有配置,于是全部删除订阅和发布来试,结果发布确无法删除发布,出
现错误,原来是订阅
的机器通过局域网,打开了快照的共享目录没有封闭,封闭后,成功删除发布.
如果还无法删,干脆把共享的快照目录取消共享,再删,然后重新配置快照目录共享
.
6.订阅服务器上的订阅又无法删除了,提示"无法更新或删除从 MSX 服务器上
发起的作业",
这是因为:计算机更换名之后就出现这种错误,自己不能修改自己创建的作业。什么减肥产品最好
解决办法:
在msdb的sysjobs表中把originating-server中的值全部改为更改后的计算机名
update msdb..sysjobs set originating_server = '现服务器名'
有时可以到管理-sql server代理--作业,查看更多情况和操作.
7.全部重新创建发布和订阅成功,执行却又出现"发布内容 null"的提示,是因为订
阅服务器没有连接到分发服务器,(1)SQLSERVERAGENT没启动.(2)MSSQLserver和
Sqlserveragent服务必须以域用户身份启动并运行,
以上问题检查中随时留意SQLSERVERAGENT(控制面板-管理-服务)服务是否已经启
动,
8.订阅服务器已经登陆上发布服务器,但在建立订阅时看不见该服务器的发布,是
因为没有配置分发
服务器,工具-复制-"配置发布、订阅服务器和分发",再检查SQLSERVERAGENT是否
运行.
然后再在发布属性-发布访问列表,添加订阅服务器登陆的登陆名,订阅端终于看见
发布了.
9.发布 'xxx' 的初始快照尚不可用。
保证SQLSERVERAGENT已经运行,
复制=》发布内容=》发布项目mytab=》右击右侧的订阅=》重新初始化
如果还不行,
复制监视器--发布服务器--xxx--发布的项目--快照,看到
进程未能创建文件“\\XXZ\SQLP \unc”,到该文件夹重新配置sql的帐号对该文
件夹权限为"完全".
10.订阅端产生 "快照尚不可用 发生操作系统错误 53",订阅服务器帐号访问快照
文件
夹出权限不够,分配权限,还有检查防火墙,被禁止了访问.
11.有个表无法发布,选择框显示红叉,没有主键的表无法发布.
12.进程未能从表“[dbo].[syncobj_0x]”向外大容量复制。
在写 BCP 数据文件时发生 I/O 错误(源: ODBC SQL Server Driver (ODBC); 错
误代码: 0)
解决方法:就是字符类型全部改为n类型的解决问题(char-nchar,varchar-
nvarchar,ntext).
13、在数据发布时报如下错误信息:
在BCP数据文件中遇到意外的EOF(源:ODBC SQL Server Driver(ODBC):错误代码 :S1000)
这是因为数据库中含有TEXT或nTExt或Image字段引起的,只要在某项发布
属性页中选择<快照>-<快照格式>-<字符模式格式>,即可解决该问题.
14、另外,在建数据发布时,报如下错误:
违反了Primary Key约束'PK_@snapshot_seqnos_7fab3fda'.不能在
对象'#7EB71BA1'中插入重复键.
(源:zzb_stockserver(数据源);错误代码:2627)
这是因为在建发布时,数据库数据正在执行插入或修改动作引起的,只要该
发布的快照重新运行一下即可。
15、对某些大型数据表无法生成快照的问题,数据库报如下错误:
进程未能从表"[dbo].[syncobj_0x]"向外大容量复制
,在写 BCP 数据文件时发生 I/O 错误(源: ODBC SQL Server Driver (ODBC);
错误代码: 0)
这是因为该表有问题或表数据太大造成的,可用如下方法试着解决一下:
a、用DBCC checktable 对该表检查一下,数据表是否有问题,然后再试一
下重新生成数据快照。
b、如果上述问题仍无法解决,可以用数据导出功能将数据表导到订阅服务
器中。
c、然后重建一个针对该数据表的数据发布,选择不生成快照功能,然后运
行下述问题4的解决方法,解决出现的问题。
16、在建立订阅时,选择不初始化订阅方数据表,则在订阅服务器不产生相应的
复制存贮过程,运行该发布时,会报如下错误:
未能找到存贮过程'sp_MSupd_XXX'...
原因如下:
Problem Deion :
======
Replication Distribution Agent reports error. The error message is "It
could not
find the stored procedure sp_MSins_***".
Reason :
======
If we choose "the s scriber has schema and data already" option when
we create the
s ion, those three system auto created stored procedures will not be
created
in the s scribing database side, they are
"sp_MSins_***"/"sp_MSupd_***"/"sp_MSdel_***".
Soltuion :
======
We could use the system command "sp_p licationcustomprocs
'pulication_name'"
to create the s of those three system stored procedures. Then we run
these
s in the s scribing database. The problem will be resolved.
解决方案:
在发布服务器上运行如下命令:sp_p licationcustomprocs 'xxxx', 其中
xxxx为发布名称,该命令会生成创建上述三个存贮过程的脚本,然后在订阅服务
器运行生成三个存贮过程即可。
17、在订阅数据时,发生如下错误:
该订阅已标记为不活动,必须重新初始化该订阅。需要删除并重新创建 NoSync
订阅。
(源: zzb_stockserver (数据源); 错误代码: )
解决方案:
在发布服务器上,选择某项发布,在属性-》订阅-》重新初始化。可以解决上
述问题
18、在数据发布时,发生如下错误:
不能在具有唯一索引 'PK_tbMeetingMemo' 的对象 'tbMeetingMemo' 中插入
重复键的行。
(源: ZZB-XHSTOCK (数据源); 错误代码: 2601)
原因:可能是在发布该表时,在不同的发布中存在多次发布该表的情况.
解决方法:
a、查明是否有多次发布该表的情况.
在发布服务器的发布数据库中用运行如下SQL语句:select * from sysarticles
order by dest_table
查看在dest_table列中是否出现多次该表的信息,如是,则说明该表已被多次
发布,可以用下一步中说明的方法来查看是哪些发布发布了该表。
b、运行语句:select * from sysp lications,查看p id与上述信息相同的
p id的内容,则就能确定是何种发布发布了相同的数据表。
c、找到了发布后,如果是增加数据表,则不用删除该发布下的所有订阅,如果是
去除发布的数据表,则需删除该发布下的所有的订阅信息,修改相应的发布内容
,重新制定相应的订阅.
19.创建发布,错误,"请提供@job_id标识作业",
是因为你删除了以前系统自动生成的作业。方法:工具-复制--禁用发布,重新配置
发布、订阅服务器和分发,完成后,发布的数据库显示为一个手型的共享图标,再创
建发布
20.订阅和发布都删除完了,但禁用发布不成功,提示:无法除去分发数据
库'distribution',该数据库正在使用.停止数据库,再启动数据库,再禁止发布.
21.配置发布和分发向导,最后完成时错误:配置分发服务器:未能连接到
服务器,因为distributor_admin未在该服务器上定义为远程登录
你肯定在装完SQL SERVER以后,改了计算机名,虽然sql server 还可以用,但一用
复制时,SQL SERVER读取了旧的计算机实例名,不信,你试试
select @@SERVERNAME
显示出来的,肯定不是你现在的计算机名.
于是,你用
sp_dropserver <(用select @@SERVERNAME显示出来的旧名)>
go
sp_addserver <你现在的计算机名>, LOCAL
go
例如:sp_dropserver 'E0184DF\SQL2K'
go
sp_addserver 'deboywang\SQL2K', LOCAL
go
重启sql server服务,问题就可以解决了
除此之外,如果要修改@@Servername还可以使用下面的方法:
1. exec sp_helpserver 检查你的server名字
2. 如果不正确,用exec sp_setnetname修正
另外,当注册的名字改为其他名字后,注册登记是成功的(在客户端工具里添加
了匿名),发布时就会出现这个问题。
22.强制订阅无法删除:在发布服务器上先后删除订阅和发布后,订阅服务器上该强
制订阅始终存在,无法删除,问微软支持,得结论:
sp_removedbreplication 'job'
JOB为订阅复制的数据库名称。
其他问题:
=============
注:
0.不要去乱删 管理--sql server代理--作业的内容.严格按照先删订阅,再删发布
来进行.
1、如何忽略在分发中出现的报错
a、在发布服务器的管理-》SQL server代理->作业->中,找到该发布的发布
JOB,在属性->步骤->2运行代码程序-》编辑->命令->在命令语句最后添加 -
skiperrors xxxx(xxxx是分发时报的错误号) , 指的是忽略该错误的意思。
b、然后重新启动分发引擎.
2.如何输出出错的信息?
在待输出出错信息的JOB命令最后加入 -Output c:\temp\error.txt, -Output
是命令,后面是待输出的文件路径和文件夹名.
================
因为该发布不允许使用可更新的订阅,当 IDENTITY 列被传输到订阅服务器时,
不会传输 IDENTITY 属性。(例如,在发布服务器上定义为 INT IDENTITY 的列
在订阅服务器上将定义为 INT。)
如果想将 IDENTITY 属性传输到订阅表,则必须进行如下操作:
? 使用 IDENTITY 属性和 NOT FOR REPLICATION 选项手工创建订阅表。您
可以通过让 SQL Server 在应用快照之前执行自定义脚本来执行该操作。若要指
定自定义脚本,请先创建发布,再创建脚本,然后在发布属性的“快照”选项卡
上输入该脚本的名称。
? 设置名称冲突项目属性,以便 SQL Server 在订阅服务器上应用快照时不 会除去现有的表。该属性在项目属性的“快照”选项卡上。
下列已发布表包含“标识”列:
[dbo].[BookIndex]
===================
SQL Server 要求发布的存储过程所引用的所有对象(如表和用户定义函数)在订
阅服务器上都可用。如果引用的对象在此发布中未作为项目发布,则它们必须在
订阅服务器上手工创建。
在此发布中发布了下列存储过程:
[dbo].[getChaNameList]
[dbo].[setUpWebsite]