问题描述:

2台服务器均是Windows 2003 server sp2(主服务器计算机名为:sqlmirror1,备服务器计算机名为:sqlmirror2),均安装SQL Server 2005 Standard Edition SP3

配置过程如下:

确保2台服务器的administrator用户密码相同

2台服务器的hosts文件均添加了2台服务器的IP与计算机名映射

在主服务器上创建共享文件夹:logtrans,该文件夹的访问权限为everyone完全控制

通过MicroSoft SQL Server Management Studio配置日志传输报错:

SQL Server Management Studio 无法将“sqlmirror2”作为辅助服务器的配置保存

其他信息:

      执行Transact-SQL语句或批处理时发现了异常。(MicroSoft.SqlServer.connectionInfo)

      指定的@server_name('SQLMIRROR1')不存在。

      指定的@server_name('SQLMIRROR1')不存在。

      指定的@server_name('SQLMIRROR1')不存在。(Microsoft SQL Server,错误:14262)

什么原因导致的呢?

分别在两台服务器上执行select @@servername发现

SQLMIRROR1上的Servername为SQLMIRROR1

SQLMIRROR2上的Servername也为SQLMIRROR1(理论上应该是SQLMIRROR2啊)

奇了怪了...

修改备份服务器上的Servername为SQLMIRROR2:

删除服务

sp_dropserver 'SQLMIRROR1',null;

添加新的服务

sp_addserver 'SQLMIRROR2','LOCAL',null;

重启服务后,重新配置SQLServer事务日志传输成功。

 

附修改SQLServer的Servername的方法:

1.sp_dropserver
sp_dropserver [ @server = ] 'server'
     [ , [ @droplogins = ] { 'droplogins' | NULL} ]

参数:

[ @server = ] 'server'

要删除的服务器。server 的数据类型为 sysname,无默认值。server 必须存在。

[ @droplogins = ] 'droplogins' | NULL

指示如果指定了 droplogins,那么对于 server,还必须删除相关的远程服务器和链接服务器登录名。@droplogins 的数据类型为 char(10),默认值为 NULL。

注释:

如果运行 sp_dropserver 的服务器具有关联的远程服务器和链接服务器登录名项或被配置为复制发布服务器,系统将返回错误信息。若要在删除服务器时删除服务器的所有远程服务器和链接服务器登录名,请使用 droplogins 参数。

不能在用户定义的事务内执行 sp_dropserver

示例:

以下示例从本地 SQL Server 实例删除远程服务器 ACCOUNTS 以及所有关联的远程登录名。

sp_dropserver 'ACCOUNTS', 'droplogins';

2.sp_addserver

ms174411.note(zh-cn,SQL.100).gif注意:
远程服务器功能将在 SQL Server 的下一版本中删除。若要定义链接服务器,请改用 sp_addlinkedserver

 参数:

[ @server = ] 'server'

服务器的名称。服务器名称必须唯一且必须符合 Microsoft Windows 计算机名称的规则,但不允许包含空格。server 的数据类型为 sysname,无默认值。

如果计算机上安装了多个 SQL Server 实例,则实例将如同在一个独立服务器上运行。通过以下格式引用 server 来指定命名实例:servername\instancename

[ @local = ] 'LOCAL'

指定要添加的服务器是本地服务器还是远程服务器。@local 的数据类型为 varchar(10),默认值为 NULL。将 @local 指定为 LOCAL 会将 @server 定义为本地服务器的名称,并使 @@SERVERNAME 函数返回 server 的值。

SQL Server 安装程序会在安装过程中将此变量设置为计算机名称。建议您不要更改该名称。默认情况下,用户可通过计算机名连接到 SQL Server 的实例而无需额外的配置。

只有将服务器关闭然后重新启动后,本地的定义才会生效。每个服务器中只能定义一个本地服务器。

[ @duplicate_ok = ] 'duplicate_OK'

指定是否允许重复的服务器名。@duplicate_OK 的数据类型为 varchar(13),默认值为 NULL。@duplicate_OK 只能有 duplicate_OK 或 NULL 这两个值。如果指定了 duplicate_OK 且要添加的服务器名称已经存在,则不会发生错误。如果未使用命名参数,则必须指定 @local

注释:

若要在运行早期版本的 SQL Server 的远程服务器上执行存储过程(远程过程调用),请使用 sp_addserver 添加远程服务器。若要在运行 SQL Server 7.0 版或更高版本的远程服务器上执行存储过程或任何分布式查询,请使用 sp_addlinkedserver 添加服务器。

若要设置或清除服务器选项,请使用 sp_serveroption

在用户定义的事务内不能使用 sp_addserver

示例:

以下示例在本地服务器中为远程服务器 ACCOUNTS 创建一个条目。

sp_addserver 'ACCOUNTS';