博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何方便的建立远程链接服务器
阅读量:6829 次
发布时间:2019-06-26

本文共 5537 字,大约阅读时间需要 18 分钟。

-- 很多朋友问局域网多数据库服务器访问该如何操作?下面简单说明如何配置远程链接访问。

/*********** 环境说明 ***********/

-- 源机器 IP  10. 0.0.211 ,在该机器所在数据库建立与目标机器的远程数据库链接。

-- 目标机器 IP  10. 0.0.222 

-- 步骤(一)是指直接用 IP 进行远程链接,个人觉得用 IP 链接虽然麻烦,但是直观而且在多服务器操作时不会出现误链接的情况。

-- 步骤(二)是指直接用别名进行远程链接,较方便;但在高压力,大脑暂时短路情况下容易出现误链接数据库情况发生。

 

/*********** 步骤(一) ***********/

-- 建立连接服务器

EXEC sp_addlinkedserver   '10.0.0.222' , 'SQL Server'

 

/*-- 如果数据库有架构名需要做远程登录之间的映射

-- 创建链接服务器上远程登录之间的映射

EXEC sp_addlinkedsrvlogin '10.0.0.222','false','SA',' 架构名 ',' 登录密码 '

*/

-- 查询数据

-- 含架构名

select top 10 * from [10.0.0.222]. 数据库名 . 架构名 . 表名

-- 不含架构名

select top 10 * from [10.0.0.222]. 数据库名 . dbo. 表名

 

 

-- 查看链接服务器信息

select name , product, provider, data_source, query_timeout, lazy_schema_validation, is_remote_login_enabled, is_rpc_out_enabled

  from sys.servers

where is_linked= 1

 

/*********** 建立步骤(二) ***********/

/*-- 如果用 IP 连接觉得麻烦,可以新建别名

-- 配置链接服务器属性

exec sp_serveroption '222','name','10.0.0.222'

*/

-- 查询数据

-- 含架构名

select top 10 * from 222. 数据库名 . 架构名 . 表名

-- 不含架构名

select top 10 * from 222. 数据库名 . dbo. 表名

 

 

-- 删除链接服务器登录名映射

exec sp_droplinkedsrvlogin '10.0.0.222' ,NULL

 

-- 删除链接服务器属性

exec sp_dropserver '222'

 

--注:如果执行 删除链接服务器时提示如下错误时,

消息 15190,级别 16,状态 1,过程 sp_dropserver,第 56 行

仍有对服务器 'XXXX' 的远程登录或链接登录。

执行

exec sp_dropserver ' 链接服务器 ' , 'droplogins'

 

 select * from [Form_016336CC-C7FA-43D2-9EA5-C3F9A5B47A50_0]

use
 库名 
go
SELECT
 objtype, objname, name, value
FROM
 fn_listextendedproperty(
default
default
default
default
default
default
default
);
select
 
*
 
from
 sys.extended_properties
SELECT
 objtype, objname, name, value 
FROM
 fn_listextendedproperty(
NULL
'
schema
'
'
dbo
'
'
table
'
'
form
'
'
column
'
default
);
select
 
*
 
from
 information_schema.columns 
where
 table_name
=
 
'
form
'
SELECT
 
DISTINCT
 
      
TOP
 
100
 
PERCENT
 
isnull
(p.name,
''
AS
 父对象, o.xtype, 
      
CASE
 o.xtype 
WHEN
 
'
C
'
 
THEN
 
'
CHECK 约束
'
 
WHEN
 
'
D
'
 
THEN
 
'
默认值或DEFAULT约束
'
       
WHEN
 
'
F
'
 
THEN
 
'
FOREIGNKEY约束
'
 
WHEN
 
'
L
'
 
THEN
 
'
日志
'
 
WHEN
 
'
FN
'
 
THEN
 
'
标量函数
'
       
WHEN
 
'
IF
'
 
THEN
 
'
内嵌表函数
'
 
WHEN
 
'
P
'
 
THEN
 
'
存储过程
'
 
WHEN
 
'
PK
'
 
THEN
 
'
PRIMARYKEY约束
'
       
WHEN
 
'
RF
'
 
THEN
 
'
复制筛选存储过程
'
 
WHEN
 
'
S
'
 
THEN
 
'
系统表
'
 
WHEN
 
'
TF
'
 
THEN
 
'
表函数
'
       
WHEN
 
'
TR
'
 
THEN
 
'
触发器
'
 
WHEN
 
'
U
'
 
THEN
 
'
用户表
'
 
WHEN
 
'
UQ
'
 
THEN
 
'
UNIQUE 约束
'
       
WHEN
 
'
V
'
 
THEN
 
'
视图
'
 
WHEN
 
'
X
'
 
THEN
 
'
扩展存储过程
'
 
WHEN
 
'
R
'
 
THEN
 
'
规则
'
 
ELSE
 
NULL
       
END
 
AS
 类型, o.name 
AS
 对象名, o.crdate 
AS
 创建时间, o.refdate 
AS
 更改时间, 
      c.
text
 
AS
 声明语句,
OBJECTPROPERTY
(o.id, N
'
IsMSShipped
'
)
FROM
 dbo.sysobjects o 
Left
 
JOIN
      dbo.sysobjects p 
ON
 o.parent_obj 
=
 p.id 
LEFT
 
OUTER
 
JOIN
      dbo.syscomments c 
ON
 o.id 
=
 c.id
WHERE
 
--
(o.xtype IN ('C','D','F','PK','UQ','L','FN','IF','TF','TR','P','R','RF','X','S','U','V')) AND 
      (
OBJECTPROPERTY
(o.id, N
'
IsMSShipped
'
=
 
0
AND
 (
isnull
(p.name,
''
<>
 N
'
dtproperties
'
and
 o.xtype 
=
 
'
U
'
ORDER
 
BY
 o.xtype 
DESC
if
 
exists
(
select
 
1
 
from
 sysobjects  
where
     id   
=
   
object_id
'
BarCode
'
and
 type   
=
   
'
'
      
drop
 
table
 BarCode 
go
 
/*
==============================================================
*/
 
/*
   Table:   BarCode                                                                                               
*/
 
/*
==============================================================
*/
 
create
   
table
   BarCode   ( 
      ID    
int
    
not
   
null
      Style   
char
(
18
null
      Content 
varchar
(
512
null
      Height  
int
  
null
      Wdith   
int
  
null
      Remark 
varchar
(
512
null
      
constraint
   PK_BARCODE   
primary
   
key
   (ID) 
go
 
select
 
*
 
from
 Form 
where
 id 
=
 
'
016336CC-C7FA-43D2-9EA5-C3F9A5B47A50
'
select
 
*
 
from
 
[
Form_016336CC-C7FA-43D2-9EA5-C3F9A5B47A50_0
]
select
 o.name,c.
text
,
'
N
'
 
from
 
[
InsulationExpertSystem_CD_2010-02-16_backup
]
.dbo.sysobjects o ,dbo.syscomments c 
     
where
 o.id 
=
 c.id 
and
 o.xtype 
=
 
'
V
'
 
and
 o.name 
=
 
'
View_1
'
--
创建链接服务器:
exec
 master.sys.sp_addlinkedserver 
'
srv_lnk
'
,
''
,
'
SQLOLEDB
'
,
'
DEVELOPPC-PC
'
exec
 master.sys.sp_addlinkedsrvlogin 
'
srv_lnk
'
,
'
false
'
,
null
,
'
sa
'
,
'
sa
'
exec
 master.sys.sp_serveroption 
'
srv_lnk
'
,
'
rpc out
'
,
'
true
'
 
--
这个允许调用链接服务器上的存储过程
go
--
exec master.sys.sp_dropserver 'srv_lnk','droplogins' --不用就删除
--
go

用SQL语句将远程SQL Server数据库中表数据导入到本地数据库相应的表中

 怎样用SQL语句将一个远程SQL Server数据库中各个表的数据导入到本地数据库相应的表中

发表时间:2005-7-18

  怎样用SQL语句将一个远程SQL Server数据库中各个表的数据导入到本地数据库相应的表中?
  表结构完全相同,听说DTS比较方便,但是不会用

  一、方法一

  1、远程数据库注册到本地的方法

 

exec sp_addlinkedserver '名称','','SQLOLEDB','远程数据库的地址'

exec sp_addlinkedsrvlogin '名称','false','本地用户名称','远程用户名称','远程用户密码'

 

  2、倒入表

 

insert 数据库.dbo.表
select * from 远程名称.dbo.表 

 

  建立了连接后,试试看

  二、方法二

  访问不同电脑上的数据库(远程访问,只好联好网就一样),如果经常访问或数据量较大,建议用链接服务器方法。

  1、创建链接服务器

 

exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或IP地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
exec sp_serveroption 'srv_lnk','rpc out','true'  --这个允许调用链接服务器上的存储过程
go 


   2、使用示例

 

 

--查询示例
select * from srv_lnk.数据库名.dbo.表名

--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名

go 

 

   3、若不再使用时,删除链接服务器

 

exec sp_dropserver 'srv_lnk','droplogins' 

 


  三、方法三

  如果只是临时访问,可以直接使用openrowset。 

  1、示例1

 

--查询示例
select * from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码',数据库名.dbo.表名) 

--导入示例
select * into 表 from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码',数据库名.dbo.表名)


  2、示例2(此示例使用测试正常)

 

 

insert 数据库名称.dbo.表
select * from 
from  openrowset('MSDASQL',
'DRIVER={SQL Server};SERVER=远程服务器地址;UID=用户名;PWD=密码',表) AS a 


  四、相关问题

 

  问:当导入的数据量很大,而网络突然中断,会不会出现问题?

  答:中断的话,就等于什么也没做,也就是事务回滚,重新运行。

  五、随后的问题

  问:由于在表中,通常都定义了自增量列及主键,而自增量列还进行了关连。由于在倒表时,自增量列不随原表变化,就造成了关联关系的丢失,通常的做法是:

 

SET IDENTITY_INSERT 表名 ON
insert into 表名(字段,字段,字段) values (64,'han','guo')
SET IDENTITY_INSERT 表名OFF

 

即使用“SET IDENTITY_INSERT 表名 ON”将自增量关闭,但是,需要注意的是,当该表中没有自增量字段时,使用该命令会产生一个错误。

因此,在没有自增量字段的表中进行“插入”操作时,请不要使用“SET IDENTITY_INSERT 表名 ON”。

 

 

 

 

转载于:https://www.cnblogs.com/zhangtao/archive/2011/04/26/2029153.html

你可能感兴趣的文章
oracle单词
查看>>
从头开始db-oracle
查看>>
Python3学习笔记25-logging模块
查看>>
RHEL6.5 LVM使用解析
查看>>
Windows 8 应用商店正式面向全部开发者开放
查看>>
lamp系列-MySQL主从复制原理视频(老男孩出品)
查看>>
如何撰写优秀系统运维架构方案及推动实施案例分享
查看>>
Centos5.6 x86_64下安装DRBD+Heartbeat+NFS
查看>>
Cocos2d-x Eclipse下程序运行产生错误Effect initCheck() returned -1
查看>>
Lync Server 2010的部署系列(四) outlook无法加入联机会议
查看>>
Windows Server 2012安装SQL 2012
查看>>
MS UC 2013-0-虚拟机-标准化-部署-2-模板机-制作-5
查看>>
准备重新回归信息安全产业
查看>>
向DBA致敬~
查看>>
RHEL6基础二十七之quota磁盘配额管理
查看>>
Bundle 小镇中由 EasyUI 引发的“血案”
查看>>
USB启动盘制作详解 (一) ISOTOUSB软件
查看>>
MongoDB 计划缓存的影响
查看>>
让linux服务器支持https(安全http协议)
查看>>
Django 笔记 模型数据的读取
查看>>