2. 执行分布式查询(查询连接服务器)

  分布式查询指在一个查询中,可以包括对多个数据源数据的查询。

  (1) 分布式对象名字
  在执行分布式查询时,对于非本地查询对象,必须指明分布式查询对象的名字,以下格式说明具有四部分名字的连接对象:
  linked-server-name.catalog-name.schema-name.object-name
  其中,
  linked-server-name: 连接服务器名
  catalog-name: 对应一个数据库名
  schema-name: 对应于一个对象所有者
  object-name: 对应一个表名
  例如,corpserver.northwind.db_owner.authors,说明该分布式对象为corpserver服务器上的northwind数据库,数据库所有者是db_owner,表名是authors。


  (2) 允许在连接服务器上使用的Transact-SQL语句
  ● 带有WHERE子句或JOIN子句的SELECT语句;
  ● INSERT,UPCATE和DELETE语句。

  (3) 不允许在连接服务器上使用的Transact-SQL语句和动作
  ● CREATE,ALTER 或DROP语句等;
  ● READTEXT,WRITETEXT和UPDATETEXT等语句。

例1,本例把连接服务器AccountingServer上的northwindremote 数据库中的suppliers表与本地SQL Server上的products表进行连接查询,语句如下:
  USE northwind
  SELECT productname,companyname
  FROM products p JOIN
  AccountingServer.northwindremote.dbo.suppliers s
  ON p.supplierid = s.supplierid

例2,这个例子使用SELECT INTO语句,把从连接服务器AccountingServer上的northwindremote 数据库中的suppliers表中查出的数据,传输到本地SQL Server上的永久表PhoneList中。语句如下:
  USE northwind
  SELECT companyname,phone
  INTO PhoneList
  FROM AccountingServer.northwindremote.dbo.suppliers