SQL SERVER 2005 提示 对象名 'MASTER.DBO.SYSSERVERS' 无效

panxiaosen 2009-11-05 03:42:12
代码如下,真晕,操作系统是2003

-- 变量定义
DECLARE @DBName VARCHAR(32)
DECLARE @DBUser VARCHAR(32)
DECLARE @DBPassword VARCHAR(32)
DECLARE @DBSourceAddr VARCHAR(32)
DECLARE @LinkServerName VARCHAR(32)

-- 设置变量
SET @LinkServerName='QPGameUserDBLink'
SET @DBSourceAddr='(local)'
SET @DBName='QPGameUserDB'

-- 删除连接服务器
IF EXISTS(SELECT SrvName FROM MASTER.DBO.SYSSERVERS WHERE SrvName=@LinkServerName)
BEGIN
EXEC SP_DROPSERVER @LinkServerName,'DropLogins'
END

-- 建立链接服务器
EXEC SP_ADDLINKEDSERVER
@Server=@LinkServerName,
@SrvProduct=@LinkServerName,
@Provider='SQLOLEDB',
@DataSrc=@DBSourceAddr,
@Location='',
@ProvStr='',
@Catalog=@DBName

-- 用户映射
EXEC SP_ADDLINKEDSRVLOGIN @RmtSrvName=@LinkServerName,@Useself='true',@LocalLogin=NULL,@RmtUser=NULL,@RmtPassword=NULL

-- 设置链接服务器
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='RPC',@OptValue='true'
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='RPC OUT',@OptValue='true'
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='Data Access',@OptValue='true'
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='Collation CompaTible',@OptValue='true'
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='Use Remote Collation',@OptValue='true'

-- 链接服务器状态
EXEC SP_HELPSERVER @LinkServerName
...全文
1438 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
藏猫猫 2010-07-27
  • 打赏
  • 举报
回复
panxiaosen 2009-11-05
  • 打赏
  • 举报
回复
用 SETUP 搞定了..

start /wait setup.exe /qb INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=123


谢谢楼上的各位
pbsh 2009-11-05
  • 打赏
  • 举报
回复
基本上重裝比較好
xman_78tom 2009-11-05
  • 打赏
  • 举报
回复
原来如此。。。

修改整个实例的排序规则需要重建 master 数据库,重建所有的用户数据库。整个过程会很麻烦。
panxiaosen 2009-11-05
  • 打赏
  • 举报
回复
难道为了这个要重装吗??
panxiaosen 2009-11-05
  • 打赏
  • 举报
回复
我晕,我知道怎么回事了,
刚才执行了 select * from master.dbo.sysservers 可以,但是执行
SELECT * FROM MASTER.DBO.SYSSERVERS 却不行,才恍然大悟,原来是我在安装的时候选择了,大小写敏感...晕 谢谢楼上的各位,现在新的问题是,master库不让更改大小写敏感选项了,提示他是系统数据库,不能更改这个选项
panxiaosen 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xman_78tom 的回复:]
执行下列语句,检查当前的登陆账户是否具有配置链接服务器的权限。
select HAS_PERMS_BY_NAME(SUSER_SNAME(),'SERVER','ALTER ANY LINKED SERVER')
如果为 1,说明可以配置链接服务器。说明楼主的问题不是权限问题。

另外,select * from master.dbo.sysservers 语句即使一般用户都可以运行,不需要特别权限。


[/Quote]

返回的是1
xman_78tom 2009-11-05
  • 打赏
  • 举报
回复
执行下列语句,检查当前的登陆账户是否具有配置链接服务器的权限。
select HAS_PERMS_BY_NAME(SUSER_SNAME(),'SERVER','ALTER ANY LINKED SERVER')
如果为 1,说明可以配置链接服务器。说明楼主的问题不是权限问题。

另外,select * from master.dbo.sysservers 语句即使一般用户都可以运行,不需要特别权限。

chkaka 2009-11-05
  • 打赏
  • 举报
回复
在新建查询中选中你所运行的数据库名,或者是在代码写set(数据库名),看一下可不可以啊
panxiaosen 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xman_78tom 的回复:]
当前在什么帐户下运行。配置链接服务器至少需要是 setupadmin 服务器角色成员。

sp_addsrvrolemember 'loginame', 'setupadmin'

[/Quote]

用sa登陆进去的...是不是就是以这个帐户来运行的?
xman_78tom 2009-11-05
  • 打赏
  • 举报
回复
当前在什么帐户下运行。配置链接服务器至少需要是 setupadmin 服务器角色成员。

sp_addsrvrolemember 'loginame', 'setupadmin'
panxiaosen 2009-11-05
  • 打赏
  • 举报
回复
一样的
对象名 'MASTER.SYS.SYSSERVERS' 无效

好像是权限问题,但是在哪里设置呢??因为把那句出错的代码屏蔽之后,
SP_ADDLINKEDSERVER 这些也不能调用
xman_78tom 2009-11-05
  • 打赏
  • 举报
回复
master.sys.sysservers
在 sql server 2005 中是兼容视图,为了兼容 sql 2000 的 sysservers 系统表。
panxiaosen 2009-11-05
  • 打赏
  • 举报
回复
是用sa登陆进去的,而且我也没改过sa的权限,是sysadmin
bancxc 2009-11-05
  • 打赏
  • 举报
回复
权限问题 确认一下
panxiaosen 2009-11-05
  • 打赏
  • 举报
回复
是用sa进去的
--小F-- 2009-11-05
  • 打赏
  • 举报
回复
没有sysadmin权限啊 用SA帐户登陆试下
Rotel-刘志东 2009-11-05
  • 打赏
  • 举报
回复
应该是权限问题吧!!
sdhdy 2009-11-05
  • 打赏
  • 举报
回复
权限问题吧,是不是你那个用户的权限不够,用SA试试。
SQL77 2009-11-05
  • 打赏
  • 举报
回复
'MASTER.DBO.SYSSERVERS'

你的用户是SA高级用户么?
用什么用户进去的

MASTER.DBO.SYSSERVERS

对象名无效,奇怪

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧