Sqlserver:不可忽视的@@servername

系统抛出18483错误,未能连接服务器,因为’distributor_admin’未定义远程登陆
我在做分发服务器,进行快照复制设置的时候在最后出现如下错误:
错误18483,未能连接服务器,因为 ‘distributor_admin
‘未在该服务器上定义远程登录。
为什么会这样啊?该如何解决啊??急啊,还请各位指教! 解决方法:
我刚刚解决这种情况,你在EM中注册服务器的时候,一定要是你SQL
SERVER服务器启动的名字!如果是IP地址的注册服务器,就会出现此种情况!
另一种的解决方法如下: Try select @@servername . If different from the
actual server name, then use sp_dropserver ‘oldservername ‘ and after
that sp_addserver ‘actualservername ‘, ‘local ‘ followed by a restart
of the SQL service. 中文意思: 在查询分析器中运行 select @@servername
查看电脑名,如果跟当前电脑名不一样,则需要如下操作。
第一步:删除现在的服务名 oldservername为上面select
@@servername返回的名称。 sp_dropserver ‘oldservername’
第二步:添加当面电脑名其实sqlserver的名称跟电脑名是一样的。actualservername为电脑名。
sp_addserver ‘actualservername’, ‘local’
第三步:重启sqlserver即可。电脑名的查看方法:我的电脑右键属性

sqlserver2005在复制订阅时出现:** ** 

  “由于未在SqlServer的此实例上安装复制组件,Microsoft SQL server
无法访问这些组件,请参阅SQL Server……”

@@servername
  远程server:是为了sqlserver中的分布式查询和远程执行存储过程而存在的。但是这个技术估计Microsoft还是不十分完美,而且也没有说明他的具体使用细节和使用的地方!如果这里出现了问题,估计就会让人无从发现并解决问题!

解决方法:

  •       分布式查询
  •       执行远程服务器上存储过程

  由于需要需要配置一个发布订阅,可是一直报告:” sql server 复制需要有实际的服务器名称才能连接到服务器,不支持通过别名、ip地址或其他任何备用名称进行连接。请指定实际的服务器名称“xxxx”(Replication Utlities)。”

  @@servername是从sysservers中的“LOCAL”类的记录中查询出来的,也就是本实例自身的在远程server中的注册。该名称在安装时自动记录的,之后不会随着计算机名的修改而修改——从而会引起job类的错误,进而影响使用job技术的功能正常使用:复制、镜像、日志复制、普通作业。

       经过一番分析发现是在安装完sql server 后修改过机器名称,运行下面两条语句既可以看出来:

查询@@servername
  select @@servername

       use master

添加@@servername

      go

  sp_addserver [ @server = ] ‘server’
  –只能添加sqlserver数据库服务器。而sp_addlinkedserver完全可以替代它,所以Microsoft不建议使用它了
       [ , [ @local= ] ‘local’ ]
       [ , [ @duplicate_ok = ] ‘duplicate_OK’ ]

      select @@servername;
      select serverproperty(‘servername’)

  sp_addlinkedserver [ @server= ] ‘server’
    [ , [ @srvproduct= ] ‘product_name’ ]
       [ , [ @provider= ] ‘provider_name’ ]
       [ , [ @datasrc= ] ‘data_source’ ]
       [ , [ @location= ] ‘location’ ]
       [ , [ @provstr= ] ‘provider_string’ ]
       [ , [ @catalog= ] ‘catalog’ ]