• SQL Server跨库跨服务器访问实现


      我们经常会遇到一个数据库要访问另一个数据库,或者一台服务器要访问另一台服务器里面的数据库。 那么这个如何实现的呢? 相信看完这篇文章你就懂了!

      同一台服务器跨库访问实现

      1. 首先创建两个数据库CrossLibraryTable1,CrossLibraryTable2

       --创建CrossLibraryTable1脚本:

      use master --打开master数据库,一般的创建语句都在master中执行.
    go
    if exists (select * from sysdatabases where name='CrossLibraryTable1')
      drop database CrossLibraryTable1  /*检查有没有这个数据库,如果有就删除它。*/
    go
    create database CrossLibraryTable1
    on primary
    (
    name='CrossLibraryTable1_data',  ------------ 养成好习惯,数据文件加_data
    filename='F:代码存放数据库CrossLibraryTable1_data.mdf',  ------------ 一定要是.mdf的文件,代表主数据文件
    size=5mb, --默认数据库大小
    maxsize=100mb, --最大容量
    filegrowth=1mb --增长量
    )
    log on
    (
    name='CrossLibraryTable1_log',   ------------ 养成好习惯,日志文件加_log
    filename='F:代码存放数据库CrossLibraryTable1_log.ldf',  ------------ 一定要是.ldf的文件,代表日志文件
    size=1mb, --默认数据库大小
    filegrowth=10% --增长量
    )
     

      --创建CrossLibraryTable2脚本:

      use master --打开master数据库,一般的创建语句都在master中执行.
    go
    if exists (select * from sysdatabases where name='CrossLibraryTable2')
      drop database CrossLibraryTable2  /*检查有没有这个数据库,如果有就删除它。*/
    go
    create database CrossLibraryTable2
    on primary
    (
    name='CrossLibraryTable2_data',  ------------ 养成好习惯,数据文件加_data
    filename='F:代码存放数据库CrossLibraryTable2_data.mdf',  ------------ 一定要是.mdf的文件,代表主数据文件
    size=5mb, --默认数据库大小
    maxsize=100mb, --最大容量
    filegrowth=1mb --增长量
    )
    log on
    (
    name='CrossLibraryTable2_log',   ------------ 养成好习惯,日志文件加_log
    filename='F:代码存放数据库CrossLibraryTable2_log.ldf',  ------------ 一定要是.ldf的文件,代表日志文件
    size=1mb, --默认数据库大小
    filegrowth=10% --增长量
    )
     

    然后,执行完脚本后,刷新一下就可以看到刚刚创建的数据库了:

    2.接下来在两个数据库里面分别创建一个CrossTest1和一个CrossTest2表用于跨库查询

    --创建CrossTest1脚本:

     use CrossLibraryTable1
      create table CrossTest1(
      Id int primary key identity,
      Name nvarchar(20)
      )

    --创建CrossTest2脚本:

     use CrossLibraryTable2
      create table CrossTest2(
      Id int primary key identity,
      Name nvarchar(20)
      )

    表创建好后,我们再添加几条数据进去:

     use CrossLibraryTable1 
     insert into CrossTest1 values('跨库1测试数据1')  
     insert into CrossTest1 values('跨库1测试数据2')
    
     use CrossLibraryTable2  
     insert into CrossTest2 values('跨库2测试数据1')  
     insert into CrossTest2 values('跨库2测试数据2')

    切换到CrossLibraryTable1下面查询CrossLibraryTable2的数据可以看到报如下错误

    修正代码:

    PS:像上面那样是可以进行查询,然而在项目中使用上面的代码格式就会引发一些问题,那什么问题呢?比如另一个数据库的名称改变了,我们就需要把所有用到这个的地方都得改掉,这样就很麻烦,那么有什么解决方案么,使得改一处就好了?当然有,用数据库同义词就可以轻松搞定!

    创建同义词步骤如下:

     不同服务器跨库访问实现

      当数据库在不同服务器上面,用上面的方法就不行了,那如何实现跨服务器访问呢?很简单,看下面↓↓↓

         

      

     

     好了,SQL Server跨库跨服务器访问实现就到这了,如果按照步骤一步一步操作的话,相信您也已经实现了,下一篇文章就来谈谈分库分表实现。

  • 相关阅读:
    【LeetCode题解】844_比较含退格的字符串(Backspace-String-Compare)
    【LeetCode题解】25_k个一组翻转链表(Reverse-Nodes-in-k-Group)
    【LeetCode题解】24_两两交换链表中的节点(Swap-Nodes-in-Pairs)
    【LeetCode题解】347_前K个高频元素(Top-K-Frequent-Elements)
    【LeetCode题解】19_删除链表的倒数第N个节点(Remove-Nth-Node-From-End-of-List)
    【LeetCode题解】61_旋转链表(Rotate-List)
    IdentityServer4密码模式接入现有用户数据表
    .Net Core Swagger:Actions require an explicit HttpMethod binding for Swagger 2.0
    ABP缓存
    ABP仓储
  • 原文地址:https://www.cnblogs.com/shuai7boy/p/11051929.html
Copyright © 2020-2023  润新知