SQL 订阅发布备注
单个用户问题
use master
go
declare @SQL varchar(max)
set @SQL=''
select @SQL=@SQL+';kill '+RTRIM(spid)
from master..sysprocesses
where dbid=DB_ID('DBNAME')
exec (@SQL)
go
alter database DBNAME set multi_user
分离数据提示 "正在复制无法分离" 错误的时候处理
use master
sp_removedbreplication SuperDatabase
创建sql数据库复制的发布、订阅的问题处理
操作使用的一些技巧(事务复制类型):
1.如何修改一个已经发布的表的属性?
将发布所有订阅删除,(发布不用删除),就可以在发布属性的项目中取消表,然后就
可以修改该表了,修改后,再将表加入发布内就可以了.
2.常用的操作界面:
(1)一般都在监视器--发布项目,可以看到快照 分发和订阅的即时信息.
(2)另外一个操作地方是发布的属性,(在属性--状态里可以启动代理)
(3)还有一个是工具--复制--配置发布、订阅服务器和分发,需要订阅的服务器必
须在这里指定授权后订阅才能成功.
============
问题:
数据库无法登陆的老问题:数据库属性-安全里面,不要选仅windows登陆,换另外一
个模式.
0.订阅一个快照发布(不是事务复制)出错,"21776 名称xxx在TransPublication集
合上没有找到",在企业管理器中,将发布数据库和订阅数据库都停止或者断开,再
启动,重新连接就可以订阅快照发布了.真是奇怪,有莫名其妙的问题可以尝试重启
服务器试试,有时后一台机器上可以正常控制订阅操作,而另外一台机器上却订阅
操作出错,也重新连接服务器试试.
1.一开始遇到的问题是,注册的local服务器不能用,删除后重新命名搞定,
2.sql server代理正在使用系统帐户,它会导致复制失败,. 这个提示点确定后,
本账户的选项为灰色,
原来是配置发布的服务器不是本机,到本机上操作发布,就可以选"本账户"了.
3.又遇到不能署名订阅,"不允许请求的署名订阅",明明发布和订阅服务器双方都
注册了,也双方都建立了
订阅的用户帐号,原因:在这步,点注册服务器,然后不能选默认的模拟sql登陆,而
是要选"使用sql 身份验证",然后输入名称和密码.
如果始终弹出"不允许请求的署名订阅",不能进到选择登陆模式的界面,退出订阅
向导,在企业管理器中,进入发布服务器,复制-右键-"配置发布、订阅服务器和分
发"-订阅服务器-添加订阅服务器机器名和帐号,如果已经有了,直接确定下.再在
进订阅服务器订阅就不会显示不能署名订阅了.
以上过程可能发现明明订阅服务器名字已经在发布服务器添加了,还是出现这个问
题,就一定要在订阅服务器进入发布服务器,然后添加订阅服务器的名字,为什么会
这样,可能是在发布服务器指定了改订阅服务器的名字后,但订阅服务器没有刷新,
可以断开一次订阅服务器和发布服务器,再来订阅,也可以解决.
4.请求订阅已经建立好了,但订阅状态显示"正在重试", 上次动作"进程未能连接
到subscriber SHD-SHD",
原因是我安装sql后,曾经改过电脑的名字,改回SHD-SHD.(有的人是因为sql服务器
端口修改过造成).还有可能是MSSQLserver和Sqlserveragent服务没有用域用户身
份启动并运行,
(于是我把B加到A所在的域,并且把A的管理员用户加到B的SQLServerAgent服务的
登陆用户中,)
5.但订阅状态显示"请求共享代理程序失败", "进程未能连接到distributor
...",怀疑是订阅设置时,连接
发布数据库的帐号有问题,在订阅(右键)的历史记录中查看具体的错误原因.帐号
正确后,历史记录又说
订阅端机器没有配置,于是全部删除订阅和发布来试,结果发布确无法删除发布,出
现20015错误,原来是订阅
的机器通过局域网,打开了快照的共享目录没有关闭,关闭后,成功删除发布.
如果还无法删,干脆把共享的快照目录取消共享,再删,然后重新配置快照目录共享
.
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\SQLPUB\unc”,到该文件夹重新配置sql的帐号对该文
件夹权限为"完全".
10.订阅端产生 "快照尚不可用 发生操作系统错误 53",订阅服务器帐号访问快照
文件
夹出权限不够,分配权限,还有检查防火墙,被禁止了访问.
11.有个表无法发布,选择框显示红叉,没有主键的表无法发布.
12.进程未能从表“[dbo].[syncobj_0x3745373834413345]”向外大容量复制。
在写 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约束.不能在
对象'#7EB71BA1'中插入重复键.
(源:zzb_stockserver(数据源);错误代码:2627)
这是因为在建发布时,数据库数据正在执行插入或修改动作引起的,只要该
发布的快照重新运行一下即可。
15、对某些大型数据表无法生成快照的问题,数据库报如下错误:
进程未能从表"[dbo].[syncobj_0x3436383044343035]"向外大容量复制
,在写 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 subscriber has schema and data already" option when
we create the
subion, those three system auto created stored procedures will not be
created
in the subscribing database side, they are
"sp_MSins_***"/"sp_MSupd_***"/"sp_MSdel_***".
Soltuion :
======
We could use the system command "sp_publicationcustomprocs
'pulication_name'"
to create the s of those three system stored procedures. Then we run
these
s in the subscribing database. The problem will be resolved.
解决方案:
在发布服务器上运行如下命令:sp_publicationcustomprocs 'xxxx', 其中
xxxx为发布名称,该命令会生成创建上述三个存贮过程的脚本,然后在订阅服务
器运行生成三个存贮过程即可。
17、在订阅数据时,发生如下错误:
该订阅已标记为不活动,必须重新初始化该订阅。需要删除并重新创建 NoSync
订阅。
(源: zzb_stockserver (数据源); 错误代码: 21074)
解决方案:
在发布服务器上,选择某项发布,在属性-》订阅-》重新初始化。可以解决上
述问题
18、在数据发布时,发生如下错误:
不能在具有唯一索引 'PK_tbMeetingMemo' 的对象 'tbMeetingMemo' 中插入
重复键的行。
(源: ZZB-XHSTOCK (数据源); 错误代码: 2601)
原因:可能是在发布该表时,在不同的发布中存在多次发布该表的情况.
解决方法:
a、查明是否有多次发布该表的情况.
在发布服务器的发布数据库中用运行如下SQL语句:select * from sysarticles
order by dest_table
查看在dest_table列中是否出现多次该表的信息,如是,则说明该表已被多次
发布,可以用下一步中说明的方法来查看是哪些发布发布了该表。
b、运行语句:select * from syspublications,查看pubid与上述信息相同的
pubid的内容,则就能确定是何种发布发布了相同的数据表。
c、找到了发布后,如果是增加数据表,则不用删除该发布下的所有订阅,如果是
去除发布的数据表,则需删除该发布下的所有的订阅信息,修改相应的发布内容
,重新制定相应的订阅.
19.创建发布,14294错误,"请提供@job_id标识作业",
是因为你删除了以前系统自动生成的作业。方法:工具-复制--禁用发布,重新配置
发布、订阅服务器和分发,完成后,发布的数据库显示为一个手型的共享图标,再创
建发布
20.订阅和发布都删除完了,但禁用发布不成功,提示:无法除去分发数据
库'distribution',该数据库正在使用.停止数据库,再启动数据库,再禁止发布.
21.配置发布和分发向导,最后完成时错误18481:配置分发服务器:未能连接到
服务器,因为distributor_admin未在该服务器上定义为远程登录
你肯定在装完SQL SERVER以后,改了计算机名,虽然sql server 还可以用,但一用
复制时,SQL SERVER读取了旧的计算机实例名,不信,你试试
select @@SERVERNAME
显示出来的,肯定不是你现在的计算机名.
于是,你用
sp_dropserver <(用select @@SERVERNAME显示出来的旧名)>
go
sp_addserver <你现在的计算机名>, LOCAL
go
例如:sp_dropserver 'E0184D34429345F\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]
SQL 订阅发布备注的更多相关文章
- Sql订阅发布注意事项
1.做订阅发布的2台Sql服务器最好要版本一致,不能出现类似如下情况: Sql2008 R2[发布] - Sql2008[订阅]: Sql2008 R2[发布] - Sql2012[订阅] 2.订阅发 ...
- SQL Server发布订阅功能研究
前提: 发布订阅只能是同一个内网的机器上才能使用,其实这个可以用配置管理器的别名功能设置之后就可以了,外网的也能通过这样的方式来搞. 配置过程参考老D的文章:http://www.cnblogs.co ...
- SQL SERVER发布与订阅 [原创]
一.配置分发 1.配置分发服务器,注:配置发布与订阅,连接SQLSERVER必须用服务器名登录 2.配置分发 3.选择分发服务器 4.选择快照文件夹 5.设置此文件夹的读写权限为everyone 6. ...
- SQL SERVER发布与订阅
一.配置分发 1.配置分发服务器,注:配置发布与订阅,连接SQLSERVER必须用服务器名登录 2.配置分发 3.选择分发服务器 4.选择快照文件夹 5.设置此文件夹的读写权限为everyone 6. ...
- 【转】sql server 订阅发布、快照发布(一)
原文链接:https://blog.csdn.net/tiandi_5000/article/details/11646023 SQL SERVER 2012 使用订阅发布同步数据库(一) 2013年 ...
- SQL SERVER 使用订阅发布同步数据库(转)
一.数据库复制涉及 1.发布服务器: 数据的来源服务器,维护源数据,决定哪些数据将被分发,检测哪些数据发生了修改,并将这些信息提交给分发服务器. 2.分发服务器: 分发服务器负责把从发布服务器拿 ...
- sql数据库发布、订阅同步方式操作
Sql数据库发布订阅分为两个步骤:1.发布.2.订阅.首先在数据源数据库服务器上对需要同步的数据进行发布,然后在目标数据库服务器上对上述发布进行订阅. 一.发布. 发布需要用实际的服务器名称,不能使用 ...
- 解决SQL订阅过程中找不到已经创建的订阅
原文:解决SQL订阅过程中找不到已经创建的订阅 之前有写过一篇博客,主要是图解SQL复制技术:图解SQL 2008数据库复制,当时的测试环境是在我本地同一个服务器上面,所以测试的时候可谓是一帆风顺,最 ...
- Impala源码之订阅发布系统的实现
本文由 网易云发布. 作者:冯宇 本篇文章仅限内部分享,如需转载,请联系网易获取授权. 本文是Impala源码笔记的第一篇,本文主要根据源代码学习一下statestored模块的实现,众所周知,Im ...
随机推荐
- 利用循环播放dataurl的视频来防止锁屏:NoSleep.js
mark下. 地址:http://www.open-open.com/lib/view/open1430796889882.html
- JavaScript校验图片格式及大小
<!DOCTYPE html> <html> <head> <title>JavaScript校验图片格式及大小</title> <s ...
- 如何在java中拟合正态分布
前言 最近在工作中需要拟合高斯曲线,在python中可以使用 scipy,相关代码如下: #!/usr/bin/env python # -*- coding=utf-8 -*- %matplotli ...
- 传说中的requestAnimFrame
//让浏览器以10ms绘制 兼容写法 window.requestAnimFrame = (function() { return ...
- WEB框架
WEB框架本质 一.WEB请求流程 所有的web应用,都 ...
- IOS学习之路--OC的基础知识
1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...
- oracle 几个不常用的关键字
ntile (n)是分析函数,n是吧窗体的数据分成几组. sys_connect_by_path 用来列转行 connect_by_isleaf 判断层级查询是否为叶子节点. siblings 用来层 ...
- spring mvc 第四天【注解实现springmvc 配合使用Exception Resolver 的配置】
Tips:这里使用具体springmvc的异常处理只是拿一个简单的案例来说明问题,并不做实用,如有需求可做更改: 这里演示的仅是能够实现service验证的一种方案,如有更好的请留言我会努力学习!! ...
- HTTPS (HTTP Secure)
what is HTTPS HTTPS = HTTP + TSL Hypertext Transfer Protocol Secure (HTTPS) is acommunications proto ...
- dataguru(炼数成金)大数据培训基地印象
dataguru访问地址:http://f.dataguru.cn/?fromuid=99611 课程优惠码:C4B6 这段时间一直在dataguru(炼数成金)上学习<hadoop数据分析平 ...