zoukankan      html  css  js  c++  java
  • Microsoft® SQL Server 实现分布式查询

    分布式查询可以访问来自多种异类数据源的数据,而这些数据可存储在相同或不同的计算机上。
     
    Microsoft SQL Server 通过使用 OLE DB(Microsoft 通用数据访问应用程序接口 (API) 规范)支持分布式查询。
     
    此"分布式查询"部分讨论一般的分布式查询概念,并描述如何在分布式查询中使用 Transact-SQL 语句访问单独的 SQL Server 实例上的数据或非 SQL Server 数据源。
     
    分布式查询支持 SQL Server 用户访问: 存储在多个 SQL Server 实例中的分布式数据。存储在各种可使用 OLE DB 提供程序访问的关系和非关系数据源中的异类数据。
     
    OLE DB 提供程序将数据表现在称为行集的表格格式对象中。SQL Server 2000 允许在 Transact-SQL 语句中象引用 SQL Server 表一样引用 OLE DB行集。
     
    可以在 SELECT、INSERT、UPDATE 和 DELETE Transact-SQL 语句中直接引用外部数据源中的表和视图。因为分布式查询使用 OLE DB 作为基础接口,所以它们不仅可以访问使用   SQL 查询处理器的传统关系数据库管理系统 (DBMS),而且还能访问由不同功能和完善度的数据源所管理的数据。只要拥有数据的软件通过 OLE DB 提供程序在表格格式行集中表现其数据,就可在分布式查询中使用该数据。
     
    SQL Server 支持以下用于实现和管理分布式查询的系统存储过程:
     
      创建链接服务器。链接服务器让用户可以对 OLE DB 数据源进行分布式异类查询。在使用 sp_addlinkedserver 创建链接服务器后,可对该服务器运行分布式查询。如果链接服务器定义为 SQL Server 实例,则可执行远程存储过程。
      语法:
    sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]
    [ , [ @provider= ] 'provider_name' ]
    [ , [ @datasrc= ] 'data_source' ]
    [ , [ @location= ] 'location' ]
    [ , [ @provstr= ] 'provider_string' ]
    [ , [ @catalog= ] 'catalog' ]
     

      创建或更新 SQL Server 本地实例上的登录名与远程服务器中安全帐户之间的映射。

      语法:

    sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'
    [ , [ @useself = ] 'TRUE' | 'FALSE' | NULL ]
    [ , [ @locallogin = ] 'locallogin' ]
    [ , [ @rmtuser = ] 'rmtuser' ]
    [ , [ @rmtpassword = ] 'rmtpassword' ]
     
      删除运行 SQL Server 的本地服务器上的登录与链接服务器上的登录之间的现有映射。
      语法:
    sp_droplinkedsrvlogin [ @rmtsrvname= ] 'rmtsrvname' ,
    [ @locallogin= ] 'locallogin'
     
     
      从本地 SQL Server 实例中的已知远程服务器和链接服务器的列表中删除服务器。
      语法:
    sp_dropserver [ @server = ] 'server'
    [ , [ @droplogins = ] { 'droplogins' | NULL} ]
     
    使用示例:
    -- 判断本地 SQL Server 实例中 ITSV_EWangOA 链接服务器是否存在
    IF EXISTS (SELECT * FROM [sys].[servers] WHERE ([name] = N'ITSV_EWangOA'))
    BEGIN
    	-- 删除默认的登录映射,最初在本地服务器 ITSV_EWangOA 上通过执行 sp_addlinkedserver 而创建了这个默认的登录映射
    	EXEC [sys].[sp_droplinkedsrvlogin]
    		@rmtsrvname = ITSV_EWangOA,
    		@locallogin = NULL
    	
    	-- 从本地 SQL Server 实例删除链接服务器 ITSV_EWangOA 以及所有关联的远程登录名
    	EXEC [sys].[sp_dropserver] 
    		@server = ITSV_EWangOA
    END
    GO
    
    -- 使用 SQL Server Native Client OLE DB 访问接口在 SQL Server 实例中创建链接服务器 ITSV_EWangOA。
    EXEC [sys].[sp_addlinkedserver] 
    	@server = ITSV_EWangOA,
    	@srvproduct = N'',
    	@provider = N'SQLOLEDB',
    	@datasrc = N'192.168.0.200,45124'
    GO
    	
    -- 创建一个映射,以确保使用登录名 MaryP 和密码 d89q3w4u 连接到链接服务器 ITSV_EWangOA。
    EXEC [sys].[sp_addlinkedsrvlogin]
    	@rmtsrvname = ITSV_EWangOA,
    	@useself = N'false',
    	@rmtuser = N'MaryP',
    	@rmtpassword = N'd89q3w4u'
    GO
    
    -- 设置 ITSV_EWangOA 链接服务器启用 RPC
    EXEC [sys].[sp_serveroption]
    	@server = ITSV_EWangOA,
    	@optname = N'rpc',
    	@optvalue = N'true'
    GO
    
    -- 设置 ITSV_EWangOA 链接服务器启用 RPC
    EXEC [sys].[sp_serveroption]
    	@server = ITSV_EWangOA,
    	@optname = N'rpc out',
    	@optvalue = N'true'
    GO
    
    -- 返回本地服务器中定义的链接服务器列表
    EXEC [sys].[sp_linkedservers]
    GO
    
    -- 在链接服务器上执行一个简单的 SELECT 语句
    EXEC(
    	'SELECT * FROM [EWangOA].[dbo].[OA_User] WHERE ([uid] = ?) AND ([username] = ?)', 10001, N'solitary'
    ) AT [ITSV_EWangOA]
    GO
    
  • 相关阅读:
    DGA域名可以是色情网站域名
    使用cloudflare加速你的网站隐藏你的网站IP
    167. Two Sum II
    leetcode 563. Binary Tree Tilt
    python 多线程
    leetcode 404. Sum of Left Leaves
    leetcode 100. Same Tree
    leetcode 383. Ransom Note
    leetcode 122. Best Time to Buy and Sell Stock II
    天津Uber优步司机奖励政策(12月28日到12月29日)
  • 原文地址:https://www.cnblogs.com/solitary/p/1969756.html
Copyright © 2011-2022 走看看