SQL SERVER 当地查询更新操纵远程数据库的四种办法
用一个库#bak_database存放这些历史数据。一,利用链接服务器select*fromsys.key_constraintswhereobject_id=OBJECT_ID(TB)
select*fromsys.foreign_keyswhereparent_object_id=OBJECT_ID(TB)
--创立链接服务器
execsp_addlinkedserverITSV,,SQLOLEDB,远程服务器名或ip地点
execsp_addlinkedsrvloginITSV,false,null,用户名,暗码
--查询示例
select*fromITSV.数据库名.dbo.表名
--导进示例
select*into表fromITSV.数据库名.dbo.表名
--今后不再利用时删除链接服务器
execsp_dropserverITSV,droplogins
二,毗连远程/局域网数据(openrowset)
--1、openrowset
--查询示例
select*fromopenrowset(SQLOLEDB,sql服务器名;用户名;暗码,数据库名.dbo.表名)
--天生当地表
select*into表fromopenrowset(SQLOLEDB,sql服务器名;用户名;暗码,数据库名.dbo.表名)
--把当地表导进远程表
insertopenrowset(SQLOLEDB,sql服务器名;用户名;暗码,数据库名.dbo.表名)select*from当地表
--更新当地表
updatebsetb.列A=a.列Afromopenrowset(SQLOLEDB,sql服务器名;用户名;暗码,数据库名.dbo.表名)asainnerjoin当地表bona.column1=b.column1
三,openquery
--openquery用法必要创立一个毗连
--起首创立一个毗连创立链接服务器
execsp_addlinkedserverITSV,,SQLOLEDB,远程服务器名或ip地点
--查询
select*FROMopenquery(ITSV,SELECT*FROM数据库.dbo.表名)
--把当地表导进远程表
insertopenquery(ITSV,SELECT*FROM数据库.dbo.表名)
select*from当地表
--更新当地表
updatebsetb.列B=a.列BFROMopenquery(ITSV,SELECT*FROM数据库.dbo.表名)asainnerjoin当地表bona.列A=b.列A
四,opendatasource
--3、opendatasource/openrowset
SELECT*FROMopendatasource(SQLOLEDB,DataSource=ip/ServerName;UserID=上岸名;Password=暗码).test.dbo.roy_ta
在JOIN操作中(需要从多个数据表提取数据时),MySQL只有在主键和外键的数据类型相同时才能使用索引。 还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。 多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。 原来公司用过MYSQL自己也只是建个表写个SQL 每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。 如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。 这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。 两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书 只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。
页:
[1]