SQL Server 链接服务器

简介

在 SQL Server 中,链接服务器是一种允许访问其他数据库服务器的方法。可以使用链接服务器来访问其他 SQL Server 实例、Oracle 数据库、MySQL 等。通过链接服务器,可以在 SQL Server 中查询和操作其他数据库中的数据,以便进行数据整合和分析。

链接服务器的概念可以理解为在一个数据库服务器上创建一个外部链接,用于访问另一个数据库服务器。通过链接服务器,可以执行远程查询、导入导出数据、执行分布式事务等操作。

创建链接服务器

在 SQL Server 中,可以通过以下代码创建链接服务器:

EXEC sp_addlinkedserver
    @server = 'LinkedServerName',
    @srvproduct = 'ProviderName',
    @provider = 'ProviderName',
    @datasrc = 'ServerName'
  • LinkedServerName:链接服务器的名称,可以自定义。
  • ProviderName:链接服务器的提供程序名称。不同的数据库服务器有不同的提供程序名称,例如 SQL Server 提供程序的名称是 SQLNCLI
  • ServerName:要链接的服务器名称或 IP 地址。

创建链接服务器后,可以通过以下代码添加登录凭据:

EXEC sp_addlinkedsrvlogin
    @rmtsrvname = 'LinkedServerName',
    @useself = 'false',
    @locallogin = 'LocalLoginName',
    @rmtuser = 'RemoteLoginName',
    @rmtpassword = 'RemotePassword'
  • LinkedServerName:链接服务器的名称。
  • LocalLoginName:本地登录账号。
  • RemoteLoginName:远程登录账号。
  • RemotePassword:远程登录密码。

使用链接服务器

创建链接服务器后,可以使用以下方法访问和操作链接服务器中的数据。

查询链接服务器中的数据

可以使用以下代码查询链接服务器中的数据:

SELECT *
FROM LinkedServerName.DatabaseName.SchemaName.TableName
  • LinkedServerName:链接服务器的名称。
  • DatabaseName:链接服务器上的数据库名称。
  • SchemaName:数据库中的模式名称。
  • TableName:数据库中的表名称。

插入链接服务器中的数据

可以使用以下代码在链接服务器中插入数据:

INSERT INTO LinkedServerName.DatabaseName.SchemaName.TableName (Column1, Column2)
VALUES (Value1, Value2)
  • LinkedServerName:链接服务器的名称。
  • DatabaseName:链接服务器上的数据库名称。
  • SchemaName:数据库中的模式名称。
  • TableName:数据库中的表名称。
  • Column1, Column2:表中的列名称。
  • Value1, Value2:要插入的值。

更新链接服务器中的数据

可以使用以下代码更新链接服务器中的数据:

UPDATE LinkedServerName.DatabaseName.SchemaName.TableName
SET Column1 = Value1
WHERE Condition
  • LinkedServerName:链接服务器的名称。
  • DatabaseName:链接服务器上的数据库名称。
  • SchemaName:数据库中的模式名称。
  • TableName:数据库中的表名称。
  • Column1:要更新的列名称。
  • Value1:要更新的值。
  • Condition:更新条件。

删除链接服务器中的数据

可以使用以下代码删除链接服务器中的数据:

DELETE FROM LinkedServerName.DatabaseName.SchemaName.TableName
WHERE Condition
  • LinkedServerName:链接服务器的名称。
  • DatabaseName:链接服务器上的数据库名称。
  • SchemaName:数据库中的模式名称。
  • TableName:数据库中的表名称。
  • Condition:删除条件。

示例

以下是一个使用链接服务器查询 Oracle 数据库中数据的示例:

-- 创建链接服务器
EXEC sp_addlinkedserver
    @server = 'OracleServer',
    @srvproduct = 'Oracle',
    @provider = 'OraOLEDB.Oracle',
    @datasrc = 'OracleServerName'

-- 添加登录凭据
EXEC sp_addlinkedsrvlogin
    @rmtsrvname = 'OracleServer',
    @useself = 'false',
    @locallogin = 'SQLServerLogin',
    @rmtuser = 'OracleUsername',
    @rmtpassword = 'OraclePassword'

-- 查询链接服务器中的数据
SELECT *
FROM OracleServer.DatabaseName.SchemaName.TableName

以上示例中,创建了一个名为 OracleServer 的链接服务器,链接到一个 Oracle 数据库服务器。然后添加了登录凭据,指定了本地登录账号和远程登录账号。最后,使用链接服务器查询了链接服务器中的