当前位置:Gxlcms > 数据库问题 > SQL Server 创建水平分布式数据库尝试

SQL Server 创建水平分布式数据库尝试

时间:2021-07-01 10:21:17 帮助过:2人阅读

TABLE [dbo].[Person] ( [PersonID] [int] NOT NULL, [PersonType] [nchar](2) NOT NULL, [FirstName] [sysname] NOT NULL, [MiddleName] [sysname] NOT NULL, [LastName] [sysname] NOT NULL )


step1,打开Win10 MSDTC

参考《Win10 打开MSDTC》,不再赘述

step2,分别在两台Server上创建数据库和表,数据库分别是DBtest1 和 DBTest2,将DBTest1作为Master DB,将DBTest2作为Slave DB。

--default instance
CREATE TABLE [dbo].[Person](
    [PersonID] [int] NOT NULL,
    [PersonType] [nchar](2) NOT NULL,
    [FirstName] sysname,
    [MiddleName] sysname ,
    [LastName] sysname,
    constraint   chk__Person_PersonType check([PersonType] in (IN,EM,SP)) 
);

--named instance
CREATE TABLE [dbo].[Person](
    [PersonID] [int] NOT NULL,
    [PersonType] [nchar](2) NOT NULL,
    [FirstName] sysname,
    [MiddleName] sysname ,
    [LastName] sysname,
    constraint   chk__Person_PersonType check([PersonType] in (SC,VC,GC)) 
);


Step3,在Master DB中,添加Linked Server

--add linked server
exec sys.sp_addlinkedserver @server= Ndb1
    ,@srvproduct= NRemoteServerDB
    ,@provider= NSQLNCLI
    ,@datasrc=  NLJHPC\NamedInstance1  
    ,@location= null
    ,@provstr= null 
    ,@catalog= Ndbtest2

--check 
select *
from sys.servers
where is_linked=1

--drop linked server
--EXEC sys.sp_dropserver @server=N‘db1‘, @droplogins=‘droplogins‘

--add login
exec sp_addlinkedsrvlogin @rmtsrvname = db1 
     ,@useself=false
     ,@locallogin=null
     ,@rmtuser =sa
     ,@rmtpassword=sa


step4,创建分布式水平分区视图

create view dbo.view_Person
as
    select [PersonID]
          ,[PersonType]
          ,[FirstName]
          ,[MiddleName]
          ,[LastName]
    from [dbo].[Person]  with(nolock)
    where [PersonType] in(IN,EM,SP)
    union all
    select [PersonID]
          ,[PersonType]
          ,[FirstName]
          ,[MiddleName]
          ,[LastName]
    from db1.[DBTest2].[dbo].[Person] with(nolock)
    where [PersonType] in(SC,VC,GC)
    with check OPTION;

Step5,查询分布式数据,查看执行计划

SELECT *
from dbo.view_Person p 
where p.PersonType in (em,sc)

技术分享

 

Appendix

--SQL Server 阻止了对组件 ‘Ad Hoc Distributed Queries‘  
exec sp_configure show advanced options,1 
reconfigure 
exec sp_configure Ad Hoc Distributed Queries,1 
reconfigure 
--    使用完成后,关闭Ad Hoc Distributed Queries: 
exec sp_configure Ad Hoc Distributed Queries,0 
reconfigure 
exec sp_configure show advanced options,0 
reconfigure 

 

SQL Server 创建水平分布式数据库尝试

标签:

人气教程排行