信息技术

当前位置: 主页 > 数据库 > MSSQL >

修改机器名后SQLSERVER数据库不能发布的解决办法

时间:2010-06-04 12:05来源:未知 作者:admin 点击:
最近使用SQL SERVER 2008,在做一个项 目时,需要发布数据库 内的几张表,但在使用 中遇到了问题,不能发 布。 查阅网上帖子,解决了 故障,原文写的很清楚 ,照搬如下。希望能给 遇到相同问题的人帮助 。 1,故障 在测试东莞交

最近使用SQL SERVER 2008,在做一个项目时,需要发布数据库内的几张表,但在使用中遇到了问题,不能发布。

查阅网上帖子,解决了故障,原文写的很清楚,照搬如下。希望能给遇到相同问题的人帮助


1,故障
在测试东莞交易系统时,遇到数据不能发布了,出错信息如下:

SQL Server 复制需要有实际的服务器名称才能连接到服务器。不支持通过服务器别名、IP 地址或任何其他备用名称进行连接。请指定实际的服务器名称“XX”。 (Replication.Utilities)

2,分析
根据出错信息,可以分析出原来核心库的服务器名并不是"XX"。不支持服务器别名,IP地址或任何其他备用名称进行连接这是微软对发布的强制限定。

在核心库MASTER库下执行

SELECT @@SERVERNAME ,serverproperty('servername')

结果2个结果并不相同



可以看见系统默认实例名和现在系统实际的实例名并不相同,这是由于该SQL SERVER作为服务器上唯一的SQL SERVER实例,其默认实例名为改服务器的机器名,但是后来服务器改名后,系统默认实例名并没有改变,但是对于我们目前的实际情况是,机器名并没有修改,只是我们采用的是从原来机器名和现有机器名不一样的服务器上备份还原在SQL SERVER之后的版本,改服务器机器名不会给7.0之后的SQL SERVER版本使用带来很大影响,但是因为复制的要求严格,所以必须要求系统实例名必须同实际实例名相同

SQL SERVER帮助文档中对@@@@SERVERNAME的描述;

SQL Server 安装程序在安装时将服务器名设置为计算机名。若要更改服务器的名称,请使用 sp_addserver,然后重新启动 SQL Server。

安装了多个 SQL Server 实例时,如果本地服务器名自安装后未发生更改,则 @@SERVERNAME 返回以下本地服务器名信息。

实例
服务器信息

默认实例
'servername'

命名实例
'servername\instancename'

故障转移群集实例 - 默认实例
'virtualservername'

故障转移群集实例 - 命名实例
'virtualservername\instancename'



尽管 @@SERVERNAME 函数和 SERVERPROPERTY 函数的 SERVERNAME 属性可能返回相似格式的字符串,但信息会有所不同。SERVERNAME 属性自动报告计算机网络名的更改。

相比之下,@@SERVERNAME 不报告此更改。@@SERVERNAME 报告使用 sp_addserver 或 sp_dropserver 存储过程对本地服务器名所做的更改。

3,解决办法
为了发布必须修改服务器的名称,让系统实例名和实际实例名相同,在该数据库MASTER库下执行如下语句:

use master

go

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

在本地数据试验,更改后可以正确的进行配置分发。对于系统定义的sp_addserver 存储过程用于定义SQL Server 本地实例的名称。此存储过程也定义远程服务器。相当于7.0之前版本用于添加链接服务器的存储过程。修改后不会对数据库的正常使用带来影响。

(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容