您好,欢迎访问三七文档
本地远程数据库访问1、execsp_addlinkedserver'TestServer','','SQLOLEDB','sqlexpress的ip,有端口写端口,默认1433不需要'execsp_addlinkedsrvlogin'TestServer','false',null,'用户名','密码'前面两句在bingxuemeng.gnway.net的服务器中执行,bingxuemeng.gnway.net的数据库的“服务器对象”的“链接服务器”下创建了一个名为“TestServer的服务器链接。select*fromTestServer.数据库.dbo.表名,可以查询了,插入语句就是insertinto数据库名.dbo.表名(字段)select字段fromTestServer.数据库.dbo.表名where条件2、insertintoreportsSELECT*FROMOPENDATASOURCE('SQLOLEDB','DataSource=192.168.8.2;UserID=sa;Password=sa').TP.dbo.reportswherecode='20060001ABC'含有自增列的insert的时候得写出列名setIDENTITY_INSERToninsertintoreports(col1,col2....)select...setIDENTITY_INSERToff利用sp_addlinkedserver实现远程数据库链接-----------------------------------------------------------------------------------------------本文为个人笔记,仅供参考,希望对您的疑问有所帮助。欢迎转载,转载请注明出处。谢谢!-------------------------------------------------------------------------------------------------查看当前链接情况:select*fromsys.servers;--使用sp_helpserver来显示可用的服务器Execsp_helpserver--删除已经存在的某个链接Execsp_droplinkedsrvlogin服务器别名,NullExecsp_dropserver服务器别名--使用sp_addlinkedserver来增加链接EXECsp_addlinkedserver@server='192.168.2.66',--被访问的服务器别名(习惯上直接使用目标服务器IP,或取个别名如:JOY)@srvproduct='',@provider='SQLOLEDB',@datasrc='192.168.2.66'--要访问的服务器--使用sp_addlinkedsrvlogin来增加用户登录链接EXECsp_addlinkedsrvlogin'192.168.2.66',--被访问的服务器别名(如果上面sp_addlinkedserver中使用别名JOY,则这里也是JOY)'false',NULL,'sa',--帐号'test123'--密码使用举例(访问目标服务器上的数据库Music,查看其中表test的内容):如果建立链接时的别名是目标服务器IP,即192.168.2.66则:select*from[192.168.2.66].[Music].dbo.test如果建立链接时的别名是JOY,则:select*from[JOY].[Music].dbo.test可能会遇到的问题:execsp_dropserver'JOY'执行失败,报错信息:仍有对服务器'JOY'的远程登录或链接登录。解决方法:execsp_droplinkedsrvlogin'JOY',nullexecsp_dropserver'JOY'SQLSERVER本地查询更新操作远程数据库?123456789101112--PKselect*fromsys.key_constraintswhereobject_id=OBJECT_ID('TB')--FKselect*fromsys.foreign_keyswhereparent_object_id=OBJECT_ID('TB')--创建链接服务器execsp_addlinkedserver'ITSV','','SQLOLEDB','远程服务器名或ip地址'execsp_addlinkedsrvlogin'ITSV','false',null,'用户名','密码'--查询示例select*fromITSV.数据库名.dbo.表名1314151617181920212223242526272829303132333435363738394041424344454647484950515253545556--导入示例select*into表fromITSV.数据库名.dbo.表名--以后不再使用时删除链接服务器execsp_dropserver'ITSV','droplogins'--连接远程/局域网数据(openrowset/openquery/opendatasource)--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用法需要创建一个连接--首先创建一个连接创建链接服务器execsp_addlinkedserver'ITSV','','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--3、opendatasource/openrowsetSELECT*FROMopendatasource('SQLOLEDB','DataSource=ip/ServerName;UserID=登陆名;Password=密码').test.dbo.roy_ta用SQL语句将远程SQLServer数据库中表数据导入到本地数据库相应的表中怎样用SQL语句将一个远程SQLServer数据库中各个表的数据导入到本地数据库相应的表中发表时间:2005-7-18怎样用SQL语句将一个远程SQLServer数据库中各个表的数据导入到本地数据库相应的表中?表结构完全相同,听说DTS比较方便,但是不会用一、方法一1、远程数据库注册到本地的方法:execsp_addlinkedserver‘名称’,”,’SQLOLEDB’,’远程数据库的地址’execsp_addlinkedsrvlogin‘名称’,’false’,’本地用户名称’,’远程用户名称’,’远程用户密码’2、倒入表insert数据库.dbo.表select*from远程名称.dbo.表建立了连接后,试试看二、方法二访问不同电脑上的数据库(远程访问,只好联好网就一样),如果经常访问或数据量较大,建议用链接服务器方法。1、创建链接服务器execsp_addlinkedserver‘srv_lnk’,”,’SQLOLEDB’,’远程服务器名或IP地址’execsp_addlinkedsrvlogin‘srv_lnk’,’false’,null,’用户名’,’密码’execsp_serveroption‘srv_lnk’,’rpcout’,’true’–这个允许调用链接服务器上的存储过程go2、使用示例–查询示例select*fromsrv_lnk.数据库名.dbo.表名–导入示例select*into表fromsrv_lnk.数据库名.dbo.表名go3、若不再使用时,删除链接服务器execsp_dropserver‘srv_lnk’,’droplogins’三、方法三如果只是临时访问,可以直接使用openrowset。1、示例1–查询示例select*fromopenrowset(‘SQLOLEDB’,’sql服务器名’;’用户名’;’密码’,数据库名.dbo.表名)–导入示例select*into表fromopenrowset(‘SQLOLEDB’,’sql服务器名’;’用户名’;’密码’,数据库名.dbo.表名)2、示例2(此示例使用测试正常)insert数据库名称.dbo.表select*fromfromopenrowset(‘MSDASQL’,‘DRIVER={SQLServer};SERVER=远程服务器地址;UID=用户名;PWD=密码’,表)ASa四、相关问题问:当导入的数据量很大,而网络突然中断,会不会出现问题?答:中断的话,就等于什么也没做,也就是事务回滚,重新运行。五、随后的问题问:由于在表中,通常都定义了自增量列及主键,而自增量列还进行了关连。由于在倒表时,自增量列不随原表变化,就造成了关联关系的丢失,通常的做法是:SETIDENTITY_INSERT表名ONinsertinto表名(字段,字段,字段)values(64,’han’,’guo’)SETIDENTITY_INSERT表名OFF即使用“SETIDENTITY_INSERT表名ON”将自增量关闭,但是,需要注意的是,当该表中没有自增量字段时,使用该命令会产生一个错误。因此,在没有自增量字段的表中进行“插入”操作时,请不要使用“SETIDENTITY_INSERT表名ON”。
本文标题:本地远程数据库访问
链接地址:https://www.777doc.com/doc-2323659 .html