http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 9445|回复: 12

[咨询站长] C#如何在一个语句中操作两个SQL数据库呢?

[复制链接]
发表于 2014-5-20 00:48:59 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 西域情怀2010 于 2014-5-20 00:50 编辑

遇到一个数据合并的问题,恳请大家帮忙。
下级单位将数据库(mdf及ldf文件)通过光盘上交给上级单位后,上级单位需要将下级的数据与自身数据进行合并。(数据库使用sql server2008,C#做的winform)
计划使用merge into进行,在数据库的新建查询中使用如下语句是没有问题的。
MERGE INTO [数据库A].[dbo].[表1] [a]
USING [数据库B].[dbo].[表1]
ON [a].[guid]=
.[guid]
WHEN MATCHED  AND [a].[uptime]<>.[uptime] THEN
UPDATE SET [a].[aa]=.[aa],[a].[uptime]=
.[uptime]
WHEN NOT MATCHED BY TARGET THEN
INSERT ([aa],[uptime],[guid]) VALUES (
.[aa],.[uptime],.[guid])
WHEN NOT MATCHED BY SOURCE THEN
DELETE;


问题是,这个语句中同时使用了两个数据库A与B,请教下,在C#中应该如何使用这个语句来处理这两个数据库呢?



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2014-5-20 00:51:44 | 显示全部楼层
奇怪,为什么数据库.前面的[b]全部丢失了呢?
回复

使用道具 举报

发表于 2014-5-20 01:31:41 | 显示全部楼层
这个需求比较畸形。。。换个思路
回复

使用道具 举报

发表于 2014-5-20 01:33:10 | 显示全部楼层
你换个思路看看
回复

使用道具 举报

发表于 2014-5-20 08:31:29 | 显示全部楼层
直接写在数据库前缀就行了,就是在表名前面加上数据库的名称
回复

使用道具 举报

 楼主| 发表于 2014-5-20 10:15:11 | 显示全部楼层
加了呀,不知论坛什么原因。总是把数据库b自动去掉
回复

使用道具 举报

发表于 2014-5-20 10:17:34 | 显示全部楼层
加了之后是什么提示,不行吗?
回复

使用道具 举报

 楼主| 发表于 2014-5-20 10:21:23 | 显示全部楼层
对象名'数据库B'无效
回复

使用道具 举报

发表于 2014-5-20 11:25:39 | 显示全部楼层
西域情怀2010 发表于 2014-5-20 10:21
对象名'数据库B'无效

两个数据库在同一个实例下吧,就是同一个Sql服务器上。不过确实不建议这样写,有权限问题。建议先读一个数据库的数据然后再取另外一个的,或者写成存储过程 就没有问题了。
回复

使用道具 举报

 楼主| 发表于 2014-5-20 11:42:36 | 显示全部楼层
看来只能先将数据库B中的数据先复制到A库中了。但时感觉本质上还是没有变化啊

1. 在SQL Server数据库之间进行数据导入导出
(1).使用SELECT INTO导出数据  
    在SQL Server中使用最广泛的就是通过SELECT INTO语句导出数据,SELECT INTO语句同时具备两个功能:根据SELECT后跟的字段以及INTO后面跟的表名建立空表(如果SELECT后是*, 空表的结构和FROM所指的表的结构相同);将SELECT查出的数据插入到这个空表中。在使用SELECT INTO语句时,INTO后跟的表必须在数据库不存在,否则出错,下面是一个使用SELECT INTO的例子。
    假设有一个表table1,字段为f1(int)、f2(varchar(50))。

    SELECT * INTO table2 FROM table1

    这条SQL语的在建立table2表后,将table1的数据全部插入到table1中的,还可以将*改为f1或f2以便向适当的字段中插入数据。
    SELECT INTO不仅可以在同一个数据中建立表,也可以在不同的SQL Server数据库中建立表。

    USE db1
    SELECT * INTO db2.dbo.table2 FROM table1

    以上语句在数据库db2中建立了一个所有者是dbo的表table2,在向db2建表时当前登录的用户必须有在db2建表的权限才能建立table2。     使用SELECT INTO要注意的一点是SELECT INTO不可以和COMPUTE一起使用,因为COMPUTE返回的是一组记录集,这将会引起二意性(即不知道根据哪个表建立空表)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-2 22:08

© 2014-2021

快速回复 返回顶部 返回列表