如何方便的建立远程链接服务器
2011-04-26 12:35 观海看云 阅读(1547) 评论(0) 编辑 收藏 举报-- 很多朋友问局域网多数据库服务器访问该如何操作?下面简单说明如何配置远程链接访问。
/*********** 环境说明 ***********/
-- 源机器 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 = 'U ')
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.表 |
建立了连接后,试试看
二、方法二
访问不同电脑上的数据库(远程访问,只好联好网就一样),如果经常访问或数据量较大,建议用链接服务器方法。
1、创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或IP地址' |
2、使用示例
--查询示例 --导入示例 go |
3、若不再使用时,删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins' |
三、方法三
如果只是临时访问,可以直接使用openrowset。
1、示例1
--查询示例 --导入示例 |
2、示例2(此示例使用测试正常)
insert 数据库名称.dbo.表 |
四、相关问题
问:当导入的数据量很大,而网络突然中断,会不会出现问题?
答:中断的话,就等于什么也没做,也就是事务回滚,重新运行。
五、随后的问题
问:由于在表中,通常都定义了自增量列及主键,而自增量列还进行了关连。由于在倒表时,自增量列不随原表变化,就造成了关联关系的丢失,通常的做法是:
SET IDENTITY_INSERT 表名 ON |
即使用“SET IDENTITY_INSERT 表名 ON”将自增量关闭,但是,需要注意的是,当该表中没有自增量字段时,使用该命令会产生一个错误。
因此,在没有自增量字段的表中进行“插入”操作时,请不要使用“SET IDENTITY_INSERT 表名 ON”。
出处:http://www.cnblogs.com/zhangtao/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器