9 个解决方案
#1
我建议还是改回来吧.
或者看看下面的内容对你是否有帮助?
/*
标题:更改机器名后@@servername为NULL如何处理
作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开)
时间:2009-07-17
地点:*乌鲁木齐
*/
/*
问题描述:
虚拟机里装了SQL 2005,原来机器名是VMSERVER,后改成BSSSERVER,配制复制不成功.
执行Select @@servername返回值为NULL,不知道怎么回事。
*/
或者看看下面的内容对你是否有帮助?
/*
标题:更改机器名后@@servername为NULL如何处理
作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开)
时间:2009-07-17
地点:*乌鲁木齐
*/
/*
问题描述:
虚拟机里装了SQL 2005,原来机器名是VMSERVER,后改成BSSSERVER,配制复制不成功.
执行Select @@servername返回值为NULL,不知道怎么回事。
*/
USE master
GO
DECLARE @serverproperty_servername varchar(100), @servername varchar(100)
SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))
SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)
--如果@serverproperty_servername和@servername不同(因为你改过计算机名字),再运行下面的
EXEC sp_dropserver @server=@servername
EXEC sp_addserver @server=@serverproperty_servername, @local='local'
#2
还有这个:
解决计算机名修改或作业移植导致的服务器名问题
解决计算机名修改或作业移植导致的服务器名问题
USE msdb
--获取当前SQL Server的实例名
DECLARE @servername sysname
SET @servername=CAST(SERVERPROPERTY('servername') as nvarchar(128))
--检查是否存在作业的源服务器与当前实例名不同名的作业,如果存在,则更新
IF EXISTS(SELECT * FROM sysjobs WHERE originating_server<>@servername)
BEGIN
--因为要修改系统表,所以设置允许更新系统表
EXEC sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
--将作业的来源服务器设置为当前实例
UPDATE sysjobs SET originating_server=@servername
WHERE originating_server<>@servername
--关闭系统表更新功能
EXEC sp_configure 'allow updates',0
RECONFIGURE WITH OVERRIDE
END
#3
谢谢楼上的:)实验了下,好象不管用:)继续顶...
#4
把计算机名重命名回来吧,要不然重装好了
#5
重装 改名字本来就有可能有问题
#6
改完要重启服务的。
#7
在SQL SERVER2000中实验了一下,发现只需要删除原有注册,再重新注册一下就可以了,但不知这样在实际使用中是否会有什么问题,因为我打开sysservers表,发现服务器名还是原来的名字
#8
继续顶
#9
一般不会有问题,但是数据库复制的时候会有问题。
也可以按下边的方法修改成一致的。(不做数据库复制的话也没必要)
也可以按下边的方法修改成一致的。(不做数据库复制的话也没必要)
检查相关的几台SQL Server服务器是否改过名称(需要srvid=0的本地机器上srvname和datasource一样)
在查询分析器里执行:
use master
select srvid,srvname,datasource from sysservers
如果没有srvid=0或者srvid=0(也就是本机器)但srvname和datasource不一样, 需要按如下方法修改:
USE master
GO
-- 设置两个变量
DECLARE @serverproperty_servername varchar(100),
@servername varchar(100)
-- 取得Windows NT 服务器和与指定的 SQL Server 实例关联的实例信息
SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))
-- 返回运行 Microsoft SQL Server 的本地服务器名称
SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)
-- 显示获取的这两个参数
select @serverproperty_servername,@servername
--如果@serverproperty_servername和@servername不同(因为你改过计算机名字),再运行下面的
--删除错误的服务器名
EXEC sp_dropserver @server=@servername
--添加正确的服务器名
EXEC sp_addserver @server=@serverproperty_servername, @local='local'
修改这项参数,需要重新启动MSSQLserver和Sqlserveragent服务才能生效。
#1
我建议还是改回来吧.
或者看看下面的内容对你是否有帮助?
/*
标题:更改机器名后@@servername为NULL如何处理
作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开)
时间:2009-07-17
地点:*乌鲁木齐
*/
/*
问题描述:
虚拟机里装了SQL 2005,原来机器名是VMSERVER,后改成BSSSERVER,配制复制不成功.
执行Select @@servername返回值为NULL,不知道怎么回事。
*/
或者看看下面的内容对你是否有帮助?
/*
标题:更改机器名后@@servername为NULL如何处理
作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开)
时间:2009-07-17
地点:*乌鲁木齐
*/
/*
问题描述:
虚拟机里装了SQL 2005,原来机器名是VMSERVER,后改成BSSSERVER,配制复制不成功.
执行Select @@servername返回值为NULL,不知道怎么回事。
*/
USE master
GO
DECLARE @serverproperty_servername varchar(100), @servername varchar(100)
SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))
SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)
--如果@serverproperty_servername和@servername不同(因为你改过计算机名字),再运行下面的
EXEC sp_dropserver @server=@servername
EXEC sp_addserver @server=@serverproperty_servername, @local='local'
#2
还有这个:
解决计算机名修改或作业移植导致的服务器名问题
解决计算机名修改或作业移植导致的服务器名问题
USE msdb
--获取当前SQL Server的实例名
DECLARE @servername sysname
SET @servername=CAST(SERVERPROPERTY('servername') as nvarchar(128))
--检查是否存在作业的源服务器与当前实例名不同名的作业,如果存在,则更新
IF EXISTS(SELECT * FROM sysjobs WHERE originating_server<>@servername)
BEGIN
--因为要修改系统表,所以设置允许更新系统表
EXEC sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
--将作业的来源服务器设置为当前实例
UPDATE sysjobs SET originating_server=@servername
WHERE originating_server<>@servername
--关闭系统表更新功能
EXEC sp_configure 'allow updates',0
RECONFIGURE WITH OVERRIDE
END
#3
谢谢楼上的:)实验了下,好象不管用:)继续顶...
#4
把计算机名重命名回来吧,要不然重装好了
#5
重装 改名字本来就有可能有问题
#6
改完要重启服务的。
#7
在SQL SERVER2000中实验了一下,发现只需要删除原有注册,再重新注册一下就可以了,但不知这样在实际使用中是否会有什么问题,因为我打开sysservers表,发现服务器名还是原来的名字
#8
继续顶
#9
一般不会有问题,但是数据库复制的时候会有问题。
也可以按下边的方法修改成一致的。(不做数据库复制的话也没必要)
也可以按下边的方法修改成一致的。(不做数据库复制的话也没必要)
检查相关的几台SQL Server服务器是否改过名称(需要srvid=0的本地机器上srvname和datasource一样)
在查询分析器里执行:
use master
select srvid,srvname,datasource from sysservers
如果没有srvid=0或者srvid=0(也就是本机器)但srvname和datasource不一样, 需要按如下方法修改:
USE master
GO
-- 设置两个变量
DECLARE @serverproperty_servername varchar(100),
@servername varchar(100)
-- 取得Windows NT 服务器和与指定的 SQL Server 实例关联的实例信息
SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))
-- 返回运行 Microsoft SQL Server 的本地服务器名称
SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)
-- 显示获取的这两个参数
select @serverproperty_servername,@servername
--如果@serverproperty_servername和@servername不同(因为你改过计算机名字),再运行下面的
--删除错误的服务器名
EXEC sp_dropserver @server=@servername
--添加正确的服务器名
EXEC sp_addserver @server=@serverproperty_servername, @local='local'
修改这项参数,需要重新启动MSSQLserver和Sqlserveragent服务才能生效。