设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2000|回复: 0

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

[复制链接]

20

主题

159

金钱

262

积分

入门用户

发表于 2019-7-19 15:49:17 | 显示全部楼层 |阅读模式

我们经常会遇到一个数据库要访问另一个数据库,或者一台服务器要访问另一台服务器里面的数据库。 那么这个如何实现的呢?

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

1. 首先创建两个数据库CrossLibraryTable1,CrossLibraryTable2
   --创建CrossLibraryTable1脚本:
  1. use master --打开master数据库,一般的创建语句都在master中执行.
  2. go
  3. if exists (select * from sysdatabases where name='CrossLibraryTable1')
  4.   drop database CrossLibraryTable1  /*检查有没有这个数据库,如果有就删除它。*/
  5. go
  6. create database CrossLibraryTable1
  7. on primary
  8. (
  9. name='CrossLibraryTable1_data',  ------------ 养成好习惯,数据文件加_data
  10. filename='F:\代码存放\数据库\CrossLibraryTable1_data.mdf',  ------------ 一定要是.mdf的文件,代表主数据文件
  11. size=5mb, --默认数据库大小
  12. maxsize=100mb, --最大容量
  13. filegrowth=1mb --增长量
  14. )
  15. log on
  16. (
  17. name='CrossLibraryTable1_log',   ------------ 养成好习惯,日志文件加_log
  18. filename='F:\代码存放\数据库\CrossLibraryTable1_log.ldf',  ------------ 一定要是.ldf的文件,代表日志文件
  19. size=1mb, --默认数据库大小
  20. filegrowth=10% --增长量
  21. )
复制代码


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


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

2.接下来在两个数据库里面分别创建一个CrossTest1和一个CrossTest2表用于跨库查询
--创建CrossTest1脚本:
  1. use CrossLibraryTable1
  2.   create table CrossTest1(
  3.   Id int primary key identity,
  4.   Name nvarchar(20)
  5.   )
复制代码

--创建CrossTest2脚本:
  1. use CrossLibraryTable2
  2.   create table CrossTest2(
  3.   Id int primary key identity,
  4.   Name nvarchar(20)
  5.   )
复制代码


表创建好后,我们再添加几条数据进去:
  1. use CrossLibraryTable1
  2. insert into CrossTest1 values('跨库1测试数据1')  
  3. insert into CrossTest1 values('跨库1测试数据2')

  4. use CrossLibraryTable2  
  5. insert into CrossTest2 values('跨库2测试数据1')  
  6. insert into CrossTest2 values('跨库2测试数据2')
复制代码


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

创建同义词步骤如下:
4.png
5.png
6.png

不同服务器跨库访问实现
当数据库在不同服务器上面,用上面的方法就不行了,那如何实现跨服务器访问呢?很简单,看下面↓↓↓
7.png
8.png
9.png
10.png
好了,SQL Server跨库跨服务器访问实现就到这了,如果按照步骤一步一步操作的话,相信您也已经实现了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表