【发布时间】:2016-10-31 23:30:29
【问题描述】:
我一直在大量服务器上运行查询,但仅在其中三个(SQL2000、SQL2005 和 SQL2008)上查询失败。我把它归结为引用另一个数据库中的表。
SELECT * FROM MASTER.dbo.syslogins AS syslogins
这适用于 99% 的服务器,但适用于三个:
Invalid object name 'MASTER.dbo.syslogins'
如果我切换到主数据库并运行
SELECT * FROM dbo.syslogins AS syslogins
然后就可以了。我还通过运行检查了我是否有权限
SELECT IS_SRVROLEMEMBER('sysadmin');
返回 1。 那么为什么引用 MASTER.dbo.syslogins 表会失败呢?
【问题讨论】:
-
小写调用MASTER是否有效? ie.SELECT * FROM master.dbo.syslogins
-
我不敢相信这有效。谢谢。
-
对于那些仍然使用 Sql Server 2000 的服务器... Sql Server 2000 已经过时了。它不再获得任何补丁,即使是针对关键的安全问题,并且现在已经有一段时间没有了。继续使用它是非常不负责任的。升级这些数据库是工作 1。
-
@JoelCoehoorn 您的评论无益且毫无价值。我不拥有这些系统,我的客户有很多理由仍然保留旧版 SQL 版本。通常有许多昂贵的原因表明“仅升级”不是一个可行的解决方案,无论是成本还是风险,或两者兼而有之。大多数拥有如此古老基础设施的客户都非常了解风险并制定了长期计划,同时业务必须继续进行。请考虑将来您的 cmets 是否会增加价值,因为“老兄,这真的很老!”什么都不加。
标签: sql sql-server sql-server-2008 sql-server-2005 sql-server-2000