SQLServer怎么实现跨数据库查询呢(sql跨服务器查询语句)
方式一:
语句知
SELECTFROM数据库道Adbo表专Aa,数据库Bdbo表Bb
WHEREafield=bfield
"DBO"可以省略如
SELECTFROM数据库A表Aa,数据库B表BbWHEREafield=bfield
祝好运,望属采纳
可以,但前提是227的服务器能够访问到228的数据库。
如果可以访问,你可以尝试修改227网站根目录下的webconfig文件。
用记事本打开webconfig
找到下面类似的语句
<add name="ConnectionString" connectionString="server=;database=;uid=;pwd="
或者
<add key="ConnectionString" value="server=;database=;uid=;pwd=" />
把里面的"server="后面的内容改为228数据库的ip地址,"database="后面的内容改为228数据库的名字,"uid="后面的内容改为登陆名,"pwd="后面的内容改为密码
如果方便的话,你可以把你的227和228两个网站的webconfig的对应位置的内容,去掉一些关键信息后,贴出来,帮你看看,因为这个字符串也有可能加密过的。
配置链接服务器
在服务器对象下面有,
按照提示,一步一步配置就好了,,,
例如跨库查询
select from[服务器地址]库名dbo表名
这样的格式,更新插入同理
跨服务器数据查询,服务器要处理rollback,log之类的操作,还是存储过程,会很慢。
可以这样解决1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要。
2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)。
3、升级硬件。
4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段。
5、提高网速。
1是局域网环境不?是/否
2收费软件通过什么方式访问数据库?配置还是软件写死了?
3收费岗亭有无对数据库主机的访问权限?有/无
4以上问题若都是第一个答案,在新机器上安装一个sql客户端后,那么只需要知道主机数据库的IP和端口,一般sql默认端口为1433,再开启远程访问服务即可。
用事物实现,具体比较麻烦。你可以用临时表来实现,首先从A数据库中查到数据放到某一个临时表1中,再从B数据库中查到数据放到某一个临时表2中,然后再进行第二次查询。中间注意事物的回滚,否则如果某个数据库连接错误就会导致数据不对。
如果你不明白什么是数据库的事务,你就去查一下,不是很难得。
http://tiebabaiducom/p/4857679839pid=100150994613&cid=0#100150994613
//第一步加载驱动
try{//微软公司数据库 (桥接)SQL数据库
ClassforName
("commicrosoftsqlserverjdbcSQLServerDriver");
} catch(ClassNotFoundException e) {
eprintStackTrace();//打印堆叠追踪
}
//定义连接对象
Connection conn=null;
//定义语句执行对象
Statement stmt=null;
try{
//第二步:获取连接的对象
//参数设置:连接字符串,数据库用命名,密码
conn=DriverManagergetConnection
("jdbc:sqlserver://localhost:1433;databasename=stuSys", "sa", "");
//本地主机↑ 数据库的编号
数据库文件夹名字
//第三步:获取语句创建对象 (结果集)
stmt=conncreateStatement();
//第四步:发送语句到数据库并执行 注意SQL插入内容用‘ ’ !
String sql="insert into StuInfo values('404','小东',20,'男','9527','xx工商学院',null,null,'S2SJ124')";
//执行sql语句
stmtexecuteUpdate(sql);//执行更新
} catch(SQLException e) {
eprintStackTrace();//打印堆叠追踪
} finally{
try{
//第五步:释放资源非空对象都要顺序进行关闭
if(stmt!=null) stmtclose();
if(conn!=null) connclose();
} catch(SQLException e) {
eprintStackTrace(); //打印堆叠追踪
}
}
Systemoutprintln("程序结束!");
}
}
如果是oracle的话,先建个数据库连接,这样对于a来说b上的表就是远程表了,这个时候就可以把b上的数据表作为基表来进行操作了。如果是sql
server就不清楚了,没进行过相关的研究
0条评论