1、客户端查找相关的Hosts文件,若客户端遗忘主机名对应的IP地址,则需把主机名解析成对应的IP地址,然后客户端才能够与服务器连接,若要解析主机名,可以通过Host文件或者DNS服务器来完成。通常情况下,客户端是先查询本机上的Host文件,查看是否有对应的纪录,若没有,则去寻找网络中存在的DNS服务器要求解析。
2、客户端联系服务器,当客户端获得服务器的IP地址后,将会跟服务器进行联系,客户端会把用户名与密码发送给服务器,默认情况下,服务器上只会安装一个应用服务。故客户端只需把用户名与
介绍四个办法:
效率低,但是操作简单用OpenRowSet方法直接在SQL上建立查询
效率低,但是方便,用ACCESS的ODBC库
效率高,编程要使用逻辑性强一点,遍历两个数据库的数据表,使用临时表作为连接池
效率高,操作简单,利用ACCESS连接表
OpenRowset用法(例连接两表查询):
Select * from 表A Inner Join 表B OpenRowSet [Driver={SQL Server};Server=IP;UID=...;PWD=...;DataBase=...] On 条件; ODBC方法,把C#连接ACCESS空数据库,利用ACCESS的ODBC驱动去连接外部SQL远程表
Select * from 表A Inner JOIN 表B IN ODBC[ODBC:Driver={SQL Server};Server=...;uid=...;pwd=...;DataBase=...] as 查询2 On 表A.字段=查询2.字段; 遍历数据集合是最常用的办法,建立一个临时表在本地数据库也好在异地数据库也好,先去查询Server表,查询出来循环遍历他,遍历过程中把遍历的变量去作为另一个查询的参数,最后把另一个查询出来的数据逐条插入到临时表中,每一次操作都先删除临时表再重新插入初始化他,这样就达到了用连接池来分析大量数据的目的,例(用Server1上的表A去匹配查询Server2上的表B,再插入Server3上的表C)
using System.Data;
using System.SqlClient;
...
//插入数据的过程
void charu(string ID) //用ID去查询Server2的表B,插入到Server3的表C
{
SqlConnection cnn=new SqlConnection();
cnn.ConnectionString="连接Server2的字符串";
try
{
cnn.Open();
DataSet ds=new DataSet;
SqlDataAdapter sda=new SqlDataAdapter("Select * from 表B where ID='"+ID+"'",cnn);
sda.Fill(ds); //查出单条数据
SqlConnection cnn1=new SqlConnection();
cnn1.ConnectionString="连接Server3的字符串";
cnn1.Open();
//...插入查询出来的数据到Server3的表C
DataSet ds1=new DataSet;
SqlDataAdapter sda1=new SqlDataAdapter("Insert Into 表C(字段)values('"+ds.Tables[0].Rows[0]["插入的字段"].ToString()+"')",cnn1);
sda1.Fill(ds1);
}
catch
{
//..错误信息
}
finnaly
{
cnn.Close();
}
}
}
void lianjiechaxun()
{
SqlConnection cnn=new SqlConnection();
cnn.ConnectionString="连接Server1的字符串";
try
{
cnn.Open();
DataSet ds=new DataSet;
SqlDataAdapter sda=new SqlDataAdapter("Select * from 表A",cnn);
sda.Fill(ds);
for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
charu(ds.Tabels[0].Rows[i]["ID"].ToString());
//把表A的ID作为参数
}
}
catch
{
//..错误信息
}
finnaly
{
cnn.Close();
}
}
用ACCESS连接表是最简单的,但是比上面的速度要慢一点,最重要的数据不安全,ACCESS密码是可以破解的。上面的如果用三层结构写,反编译也破解不了。在网上看一下ACCESS怎么建立SQL Server远程连接表,这些表将当作ACCESS表可以在ACCESS里直接使用,建立好查询,可以直接调用。
若想利用此方法达到反向同步则可能出现问题,比如想在parkfee数据库有新数据插入时让当前数据库也同时插入一条记录,建立一个触发器,则形成了一个循环触发,当插入数据时会报大于最大递归次数错。因此因避免这样的触发循环,若要达到类似效果还须想别的方法。(待续)
补充:
若两个库处于不同的数据库服务器则应先进行以下操作:
在 server1 上创建连接服务器,以便在 server1 中操作 server2,实现同步
exec sp_addlinkedserver 'server2','','SQLOLEDB','server2的数据库实例名或ip'
exec sp_addlinkedsrvlogin 'server2','false',null,'用户名','密码'
go
声明: 我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本站部分文字与图片资源来自于网络,转载是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:daokedao3713@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
本站内容仅供参考,不作为诊断及医疗依据,如有医疗需求,请务必前往正规医院就诊
祝由网所有文章及资料均为作者提供或网友推荐收集整理而来,仅供爱好者学习和研究使用,版权归原作者所有。
如本站内容有侵犯您的合法权益,请和我们取得联系,我们将立即改正或删除。
Copyright © 2022-2023 祝由师网 版权所有
邮箱:daokedao3713@qq.com