接手的老项目,其中有一条sql是 'select * from a库.dbo.b库的表' 这个条sql在原库上是可以查询的。
现在有一台新的服务器要迁移数据,我同样创建了两个库 但我执行 'select * from a库.dbo.b库的表'这个sql时,提示找不到。
这说明原库上做了某些设置,不知道如何解决了。
同时a库能查询b库的所有表 ,b库不能查询a库的表。 求助
(a库是没有b库的表的)
想知道怎么设置一下,如何设置。
碰到的问题如下
a库有aa表 b库有bb表
select * from a.dbo.bb 结果:可以查到
select * from b.dbo.bb 结果:当然可以查到
select * from b.dbo.aa 结果:不行 [42S02] Microsoft[SQL Server]对象名 'b.dbo.aa' 无效。 (208)
所以a库 指定是设置了什么配置
这个功能叫大概率是叫 链接服务器
baidu给你找了一张图片
找到了 解决方法了 之前那个前辈用了sqlserver的同义词,博主这个链接服务器是两台sqlserver服务的情况吧 当时查了下 感谢博主的回复
两个库啊,自然要连接两个库服务先。。。然后才能进行查询。。。
根据您提供的信息,看起来在原始库上执行 "select * from a库.dbo.b库的表" 是有效的,但在新服务器上执行该语句时出现了错误。此外,您还提到在a库中可以查询b库的所有表,但在b库中无法查询a库的表。
对于这种情况,可能原始库中设置了跨数据库查询的权限,而在新服务器上还没有进行相应的设置。要解决这个问题,您可以尝试以下步骤来设置权限和配置:
GRANT SELECT ON a.dbo.bb TO [user];
GRANT SELECT ON b.dbo.aa TO [user];
这些语句将授予用户在a库中查询b库的权限,以及在b库中查询a库的权限。
3. 确认连接字符串和数据库引用:如果您正在使用应用程序或脚本连接到数据库,请确保连接字符串中指定了正确的数据库名称,并检查代码中引用数据库的方式是否正确。在查询中使用类似 "a.dbo.bb" 或 "b.dbo.aa" 的引用只适用于正确设置和权限配置的情况。
请注意,在进行任何更改之前,建议您在测试环境中进行,并确保已备份数据以防止意外情况。如果您在设置过程中遇到任何问题,最好与您的数据库管理员或技术支持团队联系,他们将能够提供特定于您的环境和要求的准确帮助。