一个看起来很简单的数据库发布订阅,自己在虚机部署的时候还是遇到了一些问题,在这里分享一下,希望后来的人不要踩坑。
1. 新建发布
准备新建发布时,报错SQL Server replication requires the actual server name to make a connection to the server. 是因为连接数据库时没有使用计算机名。
使用计算机名连接后依然报错,于是查select @@servername
,发现机器名是最开始建虚机时的机器名。小白的我尝试用此原始机器名连接,未果后又各种关闭防火墙,开通各种端口,都无果。后来数据库同事看了眼,给出了答案:
在安装数据库之后如果改变计算机的机器名,在数据库中是不会自动改变的,需要手动更改:
--修改@@servername
if serverproperty('servername')<>@@servername
begin
declare @server sysname
set @server=@@servername
exec sp_dropserver @server=@server
set @server=cast(serverproperty('servername') as sysname)
exec sp_addserver @server=@server,@local='LOCAL'
end
修改之后用现在的机器名连接,成功。
2. 50000 sp_add_jobstep_internal
在设置完新建发布后,新建失败,详细信息中提示sp_add_jobstep_internal的错误,开始时以为是sql agent的问题,找来找去,发现是自己没有用发布账号进行登录(在此我在设置中设置的为db-publisher),重新以db-publisher的身份连接数据库后,新建发布成功。