经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
SQL Server实现跨库跨服务器访问的方法
来源:jb51  时间:2019/6/30 17:23:46  对本文有异议

前言

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

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

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. )

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

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.  
  5. use CrossLibraryTable2
  6. insert into CrossTest2 values('跨库2测试数据1')
  7. insert into CrossTest2 values('跨库2测试数据2')

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

修正代码:

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

创建同义词步骤如下:

不同服务器跨库访问实现

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

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对w3xue的支持。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号