SQL创建linkserver

----------------------------------------------------------------------------------

-- Author : htl258(Tony)

-- Date : 2010-06-25 22:23:18

-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)

-- Jul 9 2008 14:43:34

-- Copyright (c) 1988-2008 Microsoft Corporation

-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)

-- Blog : http://blog.csdn.net/htl258(转载保留此信息)

-- Subject: SQL不同服务器数据库之间数据操作整理

----------------------------------------------------------------------------------

--1. 创建链接服务器

--1.1 创建一个链接名

EXEC sp_addlinkedserver ‘LinkName‘,‘‘,‘SQLOLEDB‘,‘远程服务器名或ip地址‘ --有自定义实例名还要加上"/实例名"

/*例如:EXEC sp_addlinkedserver ‘TonyLink‘,‘‘,‘SQLOLEDB‘,‘192.168.58.208‘ */

--1.2 创建登录信息(或叫创建链接服务器登录名映射)(只需选择一种方式)

--1.2.1 以windows认证的方式登录

EXEC sp_addlinkedsrvlogin ‘LinkName‘ --或EXEC sp_addlinkedsrvlogin ‘LinkName‘,‘true‘

/*例如:EXEC sp_addlinkedsrvlogin ‘TonyLink‘ */

--1.2.2 以SQL认证的方式登录

EXEC sp_addlinkedsrvlogin ‘LinkName‘,‘false‘,NULL,‘用户名‘,‘密码‘

/*例如:EXEC sp_addlinkedsrvlogin ‘TonyLink‘,‘false‘,null,‘sa‘,‘123‘ */

--2. 链接服务器相关数据操作

--2.1 查询示例

SELECT * FROM LinkName.数据库名.架构名.表名

/*例如:SELECT * FROM TonyLink.Mydb.dbo.tb */

--2.2 导入示例

SELECT * INTO 表名 FROM LinkName.数据库名.架构名.表名

/*例如:SELECT * INTO Newtb FROM TonyLink.Mydb.dbo.tb */

--2.3 更新示例

UPDATE LinkName.数据库名.架构名.表名 SET 字段=‘值‘ WHERE 字段=‘条件‘

/*例如:UPDATE TonyLink.Mydb.dbo.tb SET Persons=‘g‘ WHERE Persons=‘a‘ */

--2.4 删除示例

DELETE LinkName.数据库名.架构名.表名 WHERE 字段名=‘条件‘

/*例如:DELETE TonyLink.Mydb.dbo.tb WHERE Persons=‘g‘ */

--3. 通过行集函数(OPENQUERY/OPENROWSET/OPENDATASOURCE)操作方法

--3.1 OPENQUERY 方法(需要借助刚创建的链接服务器):

--3.1.1 查询示例

SELECT * FROM OPENQUERY(LinkName,‘SELECT * FROM 数据库名.架构名.表名‘)

/* 例如:SELECT * FROM OPENQUERY(TonyLink,‘SELECT * FROM Mydb.dbo.tb‘) */

--3.1.2 导入示例

--3.1.2.1 导入所有列

INSERT OPENQUERY(LinkName, ‘SELECT * FROM 数据库名.架构名.表名‘) SELECT * FROM 本地表

/* 例如:INSERT OPENQUERY(TonyLink,‘SELECT * FROM Mydb.dbo.tb‘) SELECT * FROM tb */

--3.1.2.2 导入指定列

INSERT OPENQUERY(LinkName, ‘SELECT * FROM 数据库名.架构名.表名‘) (列,列...)

SELECT 列,列... FROM 本地表

/* 例如:INSERT OPENQUERY(TonyLink,‘SELECT * FROM Mydb.dbo.tb‘)(RANGE,LEVEL,Persons)

SELECT RANGE,LEVEL,Persons FROM tb

*/

--3.1.3 更新示例

UPDATE OPENQUERY(LinkName, ‘SELECT * FROM 数据库名.架构名.表名‘) SET 字段=‘值‘ WHERE 字段=‘条件‘

/*例如:UPDATE OPENQUERY(TonyLink, ‘SELECT * FROM Mydb.dbo.tb‘) SET Persons=‘g‘ WHERE Persons=‘a‘ */

--3.1.4 删除示例

DELETE OPENQUERY(LinkName, ‘SELECT * FROM 数据库名.架构名.表名‘) WHERE 字段名=‘条件‘

/*例如:DELETE OPENQUERY(TonyLink, ‘SELECT * FROM Mydb.dbo.tb‘) WHERE Persons=‘g‘ */

--3.2 OPENROWSET方法(不需要用到创建好的链接名。如果连接的实例名不是默认的,需要在"sql服务器名或IP地址"后加上"/实例名")

--3.2.1 查询示例

--3.2.1.1 Windows认证方式查询(以下方法之一即可)

SELECT * FROM OPENROWSET(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;Trusted_Connection=yes‘,数据库名.架构名.表名)

SELECT * FROM OPENROWSET(‘SQLNCLI‘, ‘server=sql服务器名或IP地址;Trusted_Connection=yes‘,数据库名.架构名.表名)

SELECT * FROM OPENROWSET(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;Trusted_Connection=yes‘,‘SELECT * FROM 数据库名.架构名.表名‘)

SELECT * FROM OPENROWSET(‘SQLNCLI‘, ‘server=sql服务器名或IP地址;Trusted_Connection=yes‘,‘SELECT * FROM 数据库名.架构名.表名‘)

/* 例如:SELECT * FROM OPENROWSET(‘SQLOLEDB‘,‘Server=192.168.58.208;Trusted_Connection=yes‘,Mydb.dbo.tb)

或:SELECT * FROM OPENROWSET(‘SQLNCLI‘,‘Server=192.168.58.208;Trusted_Connection=yes‘,Mydb.dbo.tb)

或:SELECT * FROM OPENROWSET(‘SQLOLEDB‘,‘Server=192.168.58.208;Trusted_Connection=yes‘,‘SELECT * FROM Mydb.dbo.tb‘)

或:SELECT * FROM OPENROWSET(‘SQLNCLI‘,‘Server=192.168.58.208;Trusted_Connection=yes‘,‘SELECT * FROM Mydb.dbo.tb‘)

*/

--3.2.1.2 SQL认证方式查询(以下方法之一即可)

SELECT * FROM OPENROWSET(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘,数据库名.架构名.表名)

SELECT * FROM OPENROWSET(‘SQLNCLI‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘,数据库名.架构名.表名)

SELECT * FROM OPENROWSET(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘,‘SELECT * FROM 数据库名.架构名.表名‘)

SELECT * FROM OPENROWSET(‘SQLNCLI‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘,‘SELECT * FROM 数据库名.架构名.表名‘)

SELECT * FROM OPENROWSET(‘SQLOLEDB‘, ‘sql服务器名‘;‘用户名‘; ‘密码‘,数据库名.架构名.表名)

SELECT * FROM OPENROWSET(‘SQLNCLI‘, ‘sql服务器名‘;‘用户名‘; ‘密码‘,数据库名.架构名.表名)

SELECT * FROM OPENROWSET(‘SQLOLEDB‘, ‘sql服务器名‘;‘用户名‘; ‘密码‘,‘SELECT * FROM 数据库名.架构名.表名‘)

SELECT * FROM OPENROWSET(‘SQLNCLI‘, ‘sql服务器名‘;‘用户名‘; ‘密码‘,‘SELECT * FROM 数据库名.架构名.表名‘)

/* 例如:SELECT * FROM OPENROWSET(‘SQLOLEDB‘,‘server=192.168.58.208;uid=sa;pwd=123‘,mydb.dbo.tb)

或:SELECT * FROM OPENROWSET(‘SQLNCLI‘,‘server=192.168.58.208;uid=sa;pwd=123‘,mydb.dbo.tb)

或:SELECT * FROM OPENROWSET(‘SQLOLEDB‘,‘server=192.168.58.208;uid=sa;pwd=123‘,‘SELECT * FROM Mydb.dbo.tb‘)

或:SELECT * FROM OPENROWSET(‘SQLNCLI‘,‘server=192.168.58.208;uid=sa;pwd=123‘,‘SELECT * FROM Mydb.dbo.tb‘)

或:SELECT * FROM OPENROWSET(‘SQLOLEDB‘,‘192.168.58.208‘;‘sa‘;‘123‘,mydb.dbo.tb)

或:SELECT * FROM OPENROWSET(‘SQLNCLI‘,‘192.168.58.208‘;‘sa‘;‘123‘,mydb.dbo.tb)

或:SELECT * FROM OPENROWSET(‘SQLOLEDB‘,‘192.168.58.208‘;‘sa‘;‘123‘,‘SELECT * FROM Mydb.dbo.tb‘)

或:SELECT * FROM OPENROWSET(‘SQLNCLI‘,‘192.168.58.208‘;‘sa‘;‘123‘,‘SELECT * FROM Mydb.dbo.tb‘)

*/

--3.2.2 导入示例

--3.2.2.1 导入所有列

INSERT OPENROWSET(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘,数据库名.架构名.表名)

SELECT * FROM 本地表

/* 例如:INSERT OPENROWSET(‘SQLOLEDB‘,‘server=192.168.58.208;uid=sa;pwd=123‘,mydb.dbo.tb)

SELECT * FROM tb

*/

--3.2.2.2 导入指定列

INSERT OPENROWSET(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘,数据库名.架构名.表名)(列,列...)

SELECT 列,列... FROM 本地表

/* 例如:INSERT OPENROWSET(‘SQLOLEDB‘,‘server=192.168.58.208;uid=sa;pwd=123‘,mydb.dbo.tb)(RANGE,LEVEL,Persons)

SELECT RANGE,LEVEL,Persons FROM tb

*/

--注:更多替代方法参考.2.1查询示例,只需替换行集函数(OPENROWSET)内的内容即可。

--3.2.3 更新示例

UPDATE OPENROWSET(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘,数据库名.架构名.表名)

SET 字段=‘值‘

WHERE 字段=‘条件‘

/*例如:UPDATE OPENROWSET(‘SQLOLEDB‘,‘server=192.168.58.208;uid=sa;pwd=123‘,mydb.dbo.tb)

SET Persons=‘g‘

WHERE Persons=‘a‘

*/

--注:更多替代方法参考.2.1查询示例,只需替换行集函数(OPENROWSET)内的内容即可。

--3.2.4 删除示例

DELETE OPENROWSET(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘,数据库名.架构名.表名)

WHERE 字段名=‘条件‘

/*例如:DELETE OPENROWSET(‘SQLOLEDB‘,‘server=192.168.58.208;uid=sa;pwd=123‘,mydb.dbo.tb)

WHERE Persons=‘g‘

*/

--注:更多替代方法参考.2.1查询示例,只需替换行集函数(OPENROWSET)内的内容即可。

--3.3 OPENDATASOURCE方法(不需要用到创建好的链接名。如果连接的实例名不是默认的,需要在"sql服务器名或IP地址"后加上"/实例名")

--3.3.1 查询示例

--3.3.1.1 Windows认证方式查询(以下方法之一即可)

SELECT * FROM OPENDATASOURCE(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;Trusted_Connection=yes‘).数据库名.架构名.表名

SELECT * FROM OPENDATASOURCE(‘SQLNCLI‘, ‘server=sql服务器名或IP地址;Trusted_Connection=yes‘).数据库名.架构名.表名

/* 例如:SELECT * FROM OPENDATASOURCE(‘SQLOLEDB‘,‘Server=192.168.58.208;Trusted_Connection=yes‘).Mydb.dbo.tb

或:SELECT * FROM OPENDATASOURCE(‘SQLNCLI‘,‘Server=192.168.58.208;Trusted_Connection=yes‘).Mydb.dbo.tb

*/

--3.3.1.2 SQL认证方式查询(以下方法之一即可)

SELECT * FROM OPENDATASOURCE(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘).数据库名.架构名.表名

SELECT * FROM OPENDATASOURCE(‘SQLNCLI‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘).数据库名.架构名.表名

SELECT * FROM OPENDATASOURCE(‘SQLOLEDB‘, ‘Data Source=sql服务器名或IP地址;uid=用户名;pwd=密码‘).数据库名.架构名.表名

SELECT * FROM OPENDATASOURCE(‘SQLNCLI‘, ‘Data Source=sql服务器名或IP地址;uid=用户名;pwd=密码‘).数据库名.架构名.表名

/* 例如:SELECT * FROM OPENDATASOURCE(‘SQLOLEDB‘,‘Server=192.168.58.208;uid=sa;pwd=123‘).mydb.dbo.tb

或:SELECT * FROM OPENDATASOURCE(‘SQLNCLI‘,‘Server=192.168.58.208;uid=sa;pwd=123‘).mydb.dbo.tb

或:SELECT * FROM OPENDATASOURCE(‘SQLOLEDB‘,‘Data Source=192.168.58.208;uid=sa;pwd=123‘).mydb.dbo.tb

或:SELECT * FROM OPENDATASOURCE(‘SQLNCLI‘,‘Data source=192.168.58.208;uid=sa;pwd=123‘).mydb.dbo.tb

*/

--3.3.2 导入示例

--3.3.2.1 导入所有列

INSERT OPENDATASOURCE(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘).数据库名.架构名.表名

SELECT * FROM 本地表

/* 例如:INSERT OPENDATASOURCE(‘SQLOLEDB‘,‘server=192.168.58.208;uid=sa;pwd=123‘).mydb.dbo.tb

SELECT * FROM tb

*/

--3.3.2.2 导入指定列

INSERT OPENDATASOURCE(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘).数据库名.架构名.表名(列,列...)

SELECT 列,列... FROM 本地表

/* 例如:INSERT OPENDATASOURCE(‘SQLOLEDB‘,‘server=192.168.58.208;uid=sa;pwd=123‘).mydb.dbo.tb(RANGE,LEVEL,Persons)

SELECT RANGE,LEVEL,Persons FROM tb

*/

--注:更多替代方法参考.3.1查询示例,只需替换行集函数(OPENDATASOURCE)内的内容即可。

--3.3.3 更新示例

UPDATE OPENDATASOURCE(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘).数据库名.架构名.表名

SET 字段=‘值‘

WHERE 字段=‘条件‘

/*例如:UPDATE OPENDATASOURCE(‘SQLOLEDB‘,‘server=192.168.58.208;uid=sa;pwd=123‘).mydb.dbo.tb

SET Persons=‘g‘

WHERE Persons=‘a‘

*/

--注:更多替代方法参考.3.1查询示例,只需替换行集函数(OPENDATASOURCE)内的内容即可。

--3.3.4 删除示例

DELETE OPENDATASOURCE(‘SQLOLEDB‘, ‘server=sql服务器名或IP地址;uid=用户名;pwd=密码‘).数据库名.架构名.表名

WHERE 字段名=‘条件‘

/*例如:DELETE OPENDATASOURCE(‘SQLOLEDB‘,‘server=192.168.58.208;uid=sa;pwd=123‘).mydb.dbo.tb

WHERE Persons=‘g‘

*/

--注:更多替代方法参考.3.1查询示例,只需替换行集函数(OPENDATASOURCE)内的内容即可。

--4. 删除链接服务器方法

--如果以后不再使用时可删除链接信息

--4.1 删除登录信息(或叫删除链接服务器登录名映射)

EXEC sp_droplinkedsrvlogin ‘LinkName‘,NULL

/*例如:EXEC sp_droplinkedsrvlogin ‘TonyLink‘,NULL */

--4.2 删除链接服务器名称

EXEC sp_dropserver ‘LinkName‘,‘droplogins‘ --如果指定droplogins,则在删除链接服务器之前要删除登录名映射

/*例如:EXEC sp_dropserver ‘TonyLink‘,‘droplogins‘ */

--附:获取Provider Name的方法(EXEC master..xp_enum_oledb_providers)

SELECT CAST([Provider Name] AS VARCHAR(30)) ProviderName,

CAST([Provider Description] AS VARCHAR(60)) ProviderDescription

FROM OPENROWSET(

‘SQLOLEDB‘,

‘Server=.;Trusted_Connection=yes‘,

‘SET FMTONLY OFF;

EXEC master..xp_enum_oledb_providers‘

)

/*

ProviderName ProviderDescription

------------------------------ ------------------------------------------------------------

SQLOLEDB Microsoft OLE DB Provider for SQL Server

DTSPackageDSO Microsoft OLE DB Provider for DTS Packages

SQLReplication.OLEDB SQL Server Replication OLE DB Provider for DTS

MSOLAP Microsoft OLE DB Provider for Analysis Services 10.0

MSDMine Microsoft OLE DB Provider For Data Mining Services

Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider

ADsDSOObject OLE DB Provider for Microsoft Directory Services

SQLNCLI10 SQL Server Native Client 10.0

MSDAIPP.DSO Microsoft OLE DB Provider for Internet Publishing

MSDASQL Microsoft OLE DB Provider for ODBC Drivers

Microsoft.Jet.OLEDB.4.0 Microsoft Jet 4.0 OLE DB Provider

MSDAOSP Microsoft OLE DB Simple Provider

MSDAORA Microsoft OLE DB Provider for Oracle

MSIDXS Microsoft OLE DB Provider for Indexing Service

(14 行受影响)

*/

时间: 2024-10-12 20:47:11

SQL创建linkserver的相关文章

SQL Server创建LinkServer

USE [master] GO /****** Object: LinkedServer [xxx_LNK] Script Date: 2014/7/7 17:04:13 ******/ EXEC master.dbo.sp_addlinkedserver @server = N'xxx_LNK', @srvproduct=N'xxx_LNK', @provider=N'SQLNCLI', @datasrc=N'xxx.xx.xxx.xx', @catalog=N'CMD' /* For sec

第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍

第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structured Query Language) SOL语句是和DBMS“交谈”专用的语言,不同的DBMS都认SQL语法. Sql中字符串使用单引号:通过写俩个单引号来转义一个单引号. Sql中的注释“——” 单行注释比较好 判断俩个数据是否相等使用=(单等号) 在sql语句中sql代码不区分大小写 SQL主要

SQL创建表脚本

<1>SQL Server设置主键自增长列 SQL Server设置主键自增长列 1.新建一数据表,里面有字段id,将id设为为主键 www.2cto.com create table tb(id int,constraint pkid primary key (id)) create table tb(id int primary key ) 2.新建一数据表,里面有字段id,将id设为主键且自动编号 create table tb(id int identity(1,1),constrai

SQL创建Oracle表空间、用户以及给用户赋权的方法

//创建表空间 Create tablespace examination//创建表空间examination datafile 'c:\Oracle\zhangwei\examination.dbf'//与表空间关联的文件存放位置(要预先手动建好文件夹) size 100m//文件初始大小,千万不要写成mb(这里以下可略) autoextend on//文件大小可自动拓展 next 30m//每次拓展30m maxsize unlimited//不限制文件大小的上限 logging//生成对于

MVC4 用Linq to SQL创建数据模型

LINQ to SQL 提供了一种非常简单的方法来与 Microsoft SQL Server 数据库交互. 1.创建新的 SQL Server 数据库 点击"视图"-->"服务器资源管理器" ,打开 "服务器资源管理器" 窗口,如下图: 右键"数据连接",选择"创建新的SQL Server 数据库",如下图: 在弹出的对话框填写下图的数据: 查看数据库,新的数据库已经好了. 2.创建 LINQ to

Navicat for SQL Server Mac 版 SQL 创建工具

Navicat for SQL Server 是一个全面的图形化方式管理数据库,可进行创建.编辑和删除全部数据库对象,例如表.视图.函数.索引和触发器,或运行 SQL查询和脚本,Navicat for SQL Server 是齐全的图形化管理器,建立图形关联式数据库.从 ODBC 导入数据.同步不同 SQL Server 之间的数据.批处理作业计划.设定用户和访问权限.本Navicat教程将详解 Navicat for SQL Server Mac 版 SQL 创建工具. SQL 创建工具或编辑

SQL 创建联合主键Table

CREATE TABLE [User_Instance]( [IntanceID] [int] NOT NULL, [StaffID] [char](10) NOT NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO ALTER TABLE [[User_Instance] WITH NOCHECK ADD CONSTRAINT [PK_User_Instance] PRIMARY KEY NONCLUSTERED ( IntanceID, StaffI

sql 创建表、删除表 增加字段 删除字段操作

[转]sql 创建表.删除表 增加字段 删除字段操作 下面是Sql Server 和 Access 操作数据库结构的常用Sql,希望对你有所帮助. 新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default \'默认值\' null ,[字段2] ntext null ,[字段3] datetime,[字段4] money null ,[字段5] int default 0,[

SQL 创建一个只读账户 .

1.进入sqlserver management studio 2.选择安全性->登录名->右键新建登录名 3.在常规里输入用户名和密码 4.在"用户映射"里“映射到此登录名的用户”选择该用户可以操作的数据库 5.在“数据库角色成员身份”里选择"db_datareader", 6.这样一个只读用户就创建完成了. 服务器角色参考 (可以对数据库的操作) bulkadmin 可以运行 bulk insert 语句  bulk insert 详细 http:/