您的位置:首页 > 数据库

sql server 2005发布订阅遇到的问题

2013-04-27 23:59 197 查看
以前搞过,这次按照印象去做,可总提示失败,首先遇到的问题是,无法发布订阅,这个问题从来没遇到过,网上找了下,说是下面的解决办法,

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

然后重启sql服务,

select @@servername --取得Windows NT 服务器和与指定的 SQL Server 实例关联的实例信息(已经关联的服务器名)

select serverproperty('servername') --返回运行 Microsoft SQL Server 的本地服务器名称 (实际服务器名)

然后就一致了,可我上面的删除添加方法总是失败 提示以前的计算机名还在连接中,而现在的计算机已存在,百思不得其解,最后无意中用sp_helpserver 这个命令查询出来 repl-distributor 有这个东西,从名字上看像是分布式,从而我联想到我之前有发布订阅,可能这个导致以前的连接存在而上面命令执行无法删除,于是要删除已有的发布,可怎么删了,网上找了下,执行这个命令可解决问题:use master EXEC sp_dropdistributor @no_checks = 1 ,于是然后执行上面的代码,成功。问题解决,现在数据库实例名就是改后的计算机名字了。《提示以前的计算机名还在连接中是因为,有发布订阅占用连接,而无法添加现在的服务器,提示已存在,是因为sql server实例只能关联一个服务器名,所以添加任何名字都提示已存在,只有把以前关联的服务器名删除后才会正常添加

还有因为我把默认的端口号改掉了,所以发布订阅时,一直提示我错误,无法连接到服务器,不支持通过服务器别名,ip地址,或任何其他备用名称进行连接,一直没发现是端口的问题,所以网上找了很多没有解决办法,突然我想起以前的服务器,于是在以前的服务器进行发布订阅发现没问题,然后我对比区别,才发现不同的是我把新服务器的端口号给改了,然后又在网上找这方面的问题,大量查找,虽没有直接的问题,但发现这个,http://blog.sina.com.cn/s/blog_6452c6b40100nbwt.html,看似应该能行的,可我在我服务器上,试了试不行(其实是因为服务器名字里有个0由于都大写我看成了O,因为电脑上显示的确实没区别,这点也希望微软以后能有所区别)浪费了大半天时间,最后下班时才发现,然后按照前面网址的说法,通过打开SQL Server Configuration Manager,在客户端 里配置别名为发布服务器的名字,并把ip和端口号填上,变可实现发布和订阅了。注意:别名一定要是发布服务器的名字《因为发布订阅就必须根据服务器名,否则无法发布订阅的,有了这个别名,sql会根据ip和端口查找该计算机,并默认把这个别名作为该计算机的服务器名,从而实现根据服务器名来发布订阅,否则就会提示不支持通过服务器别名,ip地址,或任何其他备用名称进行连接,这点务必要注意的》,我就是因为0和O看错导致一致失败,把这个字符换一下就立马成功了,坑爹的微软,浪费了我一天的时间!

以上是我遇到的问题,记下来供遇到同样问题的人参考!

接下来补充一下建立发布订阅的过程的准备工作(非域账户登录)。

1.把两台服务器的sql和sql代理服务把本地登录改为Administrator帐户登录。

2.建一个共享文件夹,保证两台服务器都能访问。

然后按提示操作即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: