sql如何连接其他服务器

不及物动词 其他 50

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在SQL中连接其他服务器,通常使用的是Linked Server特性。Linked Server允许在一个数据库服务器上访问另一个数据库服务器上的数据。下面我们来介绍如何在SQL中连接其他服务器。

    首先,要创建一个Linked Server,可以使用SQL Server Management Studio (SSMS)或者使用T-SQL命令。下面分别介绍这两种方法。

    方法一:使用SSMS创建Linked Server

    1. 打开SSMS,连接到要创建Linked Server的数据库服务器;
    2. 在“服务器对象”下找到“链接服务器”文件夹,右键单击,选择“新建链接服务器”;
    3. 在“常规”选项卡上,输入Linked Server的名称;
    4. 在“服务器类型”下拉列表中选择需要连接的服务器类型,如SQL Server;
    5. 在“远程服务器”中输入需要连接的服务器名称;
    6. 在“安全性”选项卡中,根据需要配置认证方法;
    7. 在“服务帐户”选项卡中,输入连接到远程服务器时使用的登录名和密码;
    8. 点击“确定”,完成Linked Server的创建。

    方法二:使用T-SQL命令创建Linked Server

    1. 打开SQL Server Management Studio (SSMS),连接到要创建Linked Server的数据库服务器;
    2. 打开一个新的查询窗口,在窗口中执行以下T-SQL命令:
    EXEC sp_addlinkedserver
        @server = N'LinkedServerName',
        @srvproduct=N'SQL Server'
        , @provider=N'SQLNCLI'
        , @datasrc=N'RemoteServerName';
    
    EXEC sp_addlinkedsrvlogin
        @rmtsrvname = N'LinkedServerName',
        @useself = N'False'
        , @locallogin=NULL
        , @rmtuser=N'RemoteServerUsername'
        , @rmtpassword='RemoteServerPassword';
    

    其中,将LinkedServerName替换为您想要创建的Linked Server的名称,将RemoteServerName替换为要连接的远程服务器的名称,将RemoteServerUsernameRemoteServerPassword替换为在远程服务器上访问的登录名和密码。

    无论是使用SSMS还是T-SQL命令,完成Linked Server的创建后,即可在SQL中使用该Linked Server连接到远程服务器上的数据。例如:

    SELECT * FROM RemoteServerName.DatabaseName.SchemaName.TableName;
    

    其中,将RemoteServerName替换为要连接的远程服务器的名称,DatabaseName替换为要访问的数据库名称,SchemaName替换为要访问的模式名称,TableName替换为要访问的表名称。

    总结起来,连接到其他服务器的关键是创建一个Linked Server,并在连接时使用正确的名称和凭据。连接成功后,即可在SQL中像访问本地数据库一样访问远程服务器上的数据。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在SQL中连接其他服务器可以使用外部表、链接服务器、OPENROWSET等方式。下面将对这三种方式进行详细介绍。

    一、外部表(External Table)
    外部表是一种将外部数据作为SQL Server中的表来访问的方法。使用外部表时,需要先在SQL Server中创建一个外部数据源,然后创建外部表来引用该数据源。外部数据源可以是另一个SQL Server实例、Excel文件、CSV文件等。

    创建外部表的步骤如下:

    1. 创建数据源:使用CREATE EXTERNAL DATA SOURCE语句来创建一个外部数据源。语法如下:
      CREATE EXTERNAL DATA SOURCE data_source_name
      WITH (
      TYPE = {SQL Server | HADOOP | BLOB_STORAGE | …},
      LOCATION = {'location_string'},
      CREDENTIAL = credential_name
      );

    2. 创建外部表:使用CREATE EXTERNAL TABLE语句来创建一个外部表。语法如下:
      CREATE EXTERNAL TABLE table_name
      (
      column1 data_type [COLLATE collation_name],
      column2 data_type [COLLATE collation_name],

      )
      WITH
      (
      LOCATION = {'location_string'},
      DATA_SOURCE = data_source_name
      );

    创建了外部表之后,可以像访问普通表一样对外部表进行查询、更新等操作。

    二、链接服务器(Linked Server)
    链接服务器是一种在SQL Server上建立一个与另一个SQL Server实例的连接的方法。链接服务器使得可以通过SQL Server访问其他服务器上的表、视图、存储过程等。链接服务器可以是同一台机器上的SQL Server实例,也可以是不同机器上的SQL Server实例。

    创建链接服务器的步骤如下:

    1. 在本地服务器上创建外部服务器:使用sp_addlinkedserver存储过程来创建链接服务器。
      EXEC sp_addlinkedserver
      @server = 'ServerName',
      @srvproduct = '',
      @provider = 'SQLNCLI',
      @datasrc = 'ServerName\InstanceName';

    2. 在本地服务器上创建登录:如果需要在链接服务器上使用Windows身份验证方式登录,需要在本地服务器上创建一个登录。
      EXEC sp_addlinkedsrvlogin
      @rmtsrvname = 'ServerName',
      @useself = 'true',
      @locallogin = NULL;

    创建链接服务器之后,可以像访问本地表一样对链接服务器上的对象进行查询、更新等操作。

    三、OPENROWSET函数
    OPENROWSET是一种使用完整的连接字符串直接访问其他服务器上的表的方法。可以在SELECT、INSERT、UPDATE等语句中使用OPENROWSET函数来引用远程服务器上的表。

    使用OPENROWSET函数的语法如下:
    — SELECT语句
    SELECT *
    FROM OPENROWSET('Provider=SQLOLEDB;Data Source=ServerName;Initial Catalog=DatabaseName;User ID=Username;Password=Password',
    'SELECT * FROM TableName')

    — INSERT语句
    INSERT INTO TableName(column1, column2, …)
    SELECT column1, column2, …
    FROM OPENROWSET('Provider=SQLOLEDB;Data Source=ServerName;Initial Catalog=DatabaseName;User ID=Username;Password=Password',
    'SELECT * FROM TableName')

    — UPDATE语句
    UPDATE TableName
    SET column1 = value1, column2 = value2, …
    FROM OPENROWSET('Provider=SQLOLEDB;Data Source=ServerName;Initial Catalog=DatabaseName;User ID=Username;Password=Password',
    'SELECT * FROM TableName')
    WHERE condition;

    OPENROWSET函数与链接服务器类似,也可以使用Windows身份验证登录。需要注意的是,OPENROWSET函数需要在SQL Server配置管理器中启用“Ad Hoc Distributed Queries”选项。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在SQL中,可以通过使用链接服务器(Link Servers)来连接其他服务器,使得我们可以在一个数据库上执行查询,访问另一个服务器上的表和数据。下面是连接其他服务器的操作流程:

    1. 配置链接服务器:首先,需要在SQL Server中配置链接服务器。可以通过SQL Server Management Studio (SSMS)或者使用T-SQL语句来完成。以下是使用T-SQL语句来创建链接服务器的示例:
    EXEC sp_addlinkedserver
       @server='LinkedServerName',
       @srvproduct=' ',
       @provider='SQLOLEDB',
       @datasrc='ServerName\InstanceName'
    

    这里的LinkedServerName是你想要为链接服务器指定的名称,ServerName\InstanceName是指定的服务器名和实例名。

    1. 配置登陆凭据:如果需要在连接到链接服务器之前进行身份验证,则需要配置登陆凭据。我们可以使用以下语句创建登录帐户信息:
    EXEC sp_addlinkedsrvlogin
       @rmtsrvname='LinkedServerName',
       @useself='false',
       @locallogin=NULL,
       @rmtuser='RemoteUsername',
       @rmtpassword='RemotePassword'
    

    这里的LinkedServerName是你在第一步中为链接服务器指定的名称,RemoteUsernameRemotePassword分别是远程服务器上的用户名和密码。

    1. 执行查询:现在连接到远程服务器并执行查询。以下是一些示例查询:
    -- 选择链接服务器中的表
    SELECT * FROM LinkedServerName.database.schema.table
    
    -- 更新链接服务器上的数据
    UPDATE LinkedServerName.database.schema.table SET column = value WHERE condition
    
    -- 删除链接服务器上的数据
    DELETE FROM LinkedServerName.database.schema.table WHERE condition
    
    -- 向链接服务器插入数据
    INSERT INTO LinkedServerName.database.schema.table (column1, column2, ...) VALUES (value1, value2, ...)
    

    其中,LinkedServerName是你在第一步中为链接服务器指定的名称,database是链接服务器上的数据库名,schema.table是链接服务器上的表名。

    1. 删除链接服务器:如果不再需要链接服务器,可以使用以下语句将其从SQL Server中删除:
    EXEC sp_dropserver 'LinkedServerName', 'droplogins'
    

    这里的LinkedServerName是你在第一步中为链接服务器指定的名称。

    总结:
    通过上述方法,我们可以在SQL中连接到其他服务器。首先需要配置链接服务器,然后配置登录凭据,最后在查询中使用链接服务器的名称来执行操作。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部