sql达人进

海盗色色 2011-05-31 09:24:20
一条sql语句实现跨数据库查询

sql2005数据库A Access数据库B
通过B.tab1的id字段到A.tab2里查询tab2.id=tab1.id的一条数据

附实例最好 谢谢
...全文
159 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lisliefor 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 gaohaili4330508 的回复:]
引用 15 楼 lisliefor 的回复:
这里获得项目的根目录里的 mdb 该咋写?

不明白什么意思?
这里是要写mdb的文件系统的路径的,在建立link server时下,跟程序没有关系吧?

那我这个网站项目中有个a.mdb的数据库
我怎样知道我这个数据库的路径
网站项目上传到服务器可能要改变目录的啊
我这个路径不可能是绝对路径的啊
[/Quote]

建link server必须用绝对路径,这个是在sql server2005中,图形化界面操作的,你建一次,就知道了。
he_tego 2011-05-31
  • 打赏
  • 举报
回复
SELECT * FROM Master..SysDatabases
这个可以得到所有的库名以及它的文件目录
海盗色色 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lisliefor 的回复:]
这里获得项目的根目录里的 mdb 该咋写?

不明白什么意思?
这里是要写mdb的文件系统的路径的,在建立link server时下,跟程序没有关系吧?
[/Quote]
那我这个网站项目中有个a.mdb的数据库
我怎样知道我这个数据库的路径
网站项目上传到服务器可能要改变目录的啊
我这个路径不可能是绝对路径的啊
Lisliefor 2011-05-31
  • 打赏
  • 举报
回复
这里获得项目的根目录里的 mdb 该咋写?

不明白什么意思?
这里是要写mdb的文件系统的路径的,在建立link server时下,跟程序没有关系吧?
海盗色色 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lisliefor 的回复:]
引用 10 楼 gaohaili4330508 的回复:

引用 8 楼 lisliefor 的回复:
连接Access是选Microsoft Jet 4.0 OLE DB Provider,不是ODBC Drivers


是这个吗?
B. 使用 Microsoft OLE DB Provider for Microsoft Access
EXEC sp_addlinkedser……
[/Quote]

@datasrc = 'C:\MSOffice\Access\Samples\Northwind.mdb'
这里获得项目的根目录里的 mdb 该咋写?
Lisliefor 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 gaohaili4330508 的回复:]

引用 8 楼 lisliefor 的回复:
连接Access是选Microsoft Jet 4.0 OLE DB Provider,不是ODBC Drivers


是这个吗?
B. 使用 Microsoft OLE DB Provider for Microsoft Access
EXEC sp_addlinkedserver @server = 'SEATTLE Mktg'……
[/Quote]

是这样的,没错。

我写的那个sql可以有点问题,没有调试过,后面的Link server要不要加dbo,你试试看。
海盗色色 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 dianachen2 的回复:]
select * int [hz0012004].[dbo].[表名] from [ufmodel].[dbo].[accessaries]
同一台机器上面可以直接使用:
如果是建立在两台机器上,需要建立连接数据库。企业管理器-》安全性->连接服务器,新建一个
记得加中括号
[/Quote]
select * int 小d 你确定这里用 int 神马意思?
  • 打赏
  • 举报
回复
select * int [hz0012004].[dbo].[表名] from [ufmodel].[dbo].[accessaries]
同一台机器上面可以直接使用:
如果是建立在两台机器上,需要建立连接数据库。企业管理器-》安全性->连接服务器,新建一个
记得加中括号
海盗色色 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lisliefor 的回复:]
连接Access是选Microsoft Jet 4.0 OLE DB Provider,不是ODBC Drivers
[/Quote]

是这个吗?
B. 使用 Microsoft OLE DB Provider for Microsoft Access
EXEC sp_addlinkedserver @server = 'SEATTLE Mktg', @provider = 'Microsoft.Jet.OLEDB.4.0', @srvproduct = 'OLE DB Provider for Jet', @datasrc = 'C:\MSOffice\Access\Samples\Northwind.mdb'
海盗色色 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lisliefor 的回复:]
一句话是可以的,先在sql 2005下创建Link Server,使用ODBC驱动,写连接字符串,Link server至access。

然后,查询就简单了,比普通查询多指定一项数据库名和表名的owner就好了。
[/Quote]

好复杂... T.T
Lisliefor 2011-05-31
  • 打赏
  • 举报
回复
连接Access是选Microsoft Jet 4.0 OLE DB Provider,不是ODBC Drivers
Lisliefor 2011-05-31
  • 打赏
  • 举报
回复
select * from dbName.dbo.A.tab1 as t1 inner join linkServerName.B.tab2 as t2
on t1.id=t2.id
houyanjun 2011-05-31
  • 打赏
  • 举报
回复
只能程序上,连接两个数据库,循环查询检录,判断tab2.id=tab1.id

其他法,并不知
Lisliefor 2011-05-31
  • 打赏
  • 举报
回复
Lisliefor 2011-05-31
  • 打赏
  • 举报
回复
一句话是可以的,先在sql 2005下创建Link Server,使用ODBC驱动,写连接字符串,Link server至access。

然后,查询就简单了,比普通查询多指定一项数据库名和表名的owner就好了。
xpcxpy 2011-05-31
  • 打赏
  • 举报
回复
这个要实现也只能由VS等外部工具实现,或者程序实现
zell419 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wxr0323 的回复:]

跨数据库....那这条数据库运行在哪个数据啊

你可以在后台把两个数据库里的值取出来

进行合并。
[/Quote]
只能这样 。
不然sql里 use [xxx] 有什么用 。
子夜__ 2011-05-31
  • 打赏
  • 举报
回复
跨数据库....那这条数据库运行在哪个数据啊

你可以在后台把两个数据库里的值取出来

进行合并。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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