我们经常会遇到一个数据库要访问另一个数据库, 或者一台服务器要访问另一台服务器里面的数据库. 那么这个如何实现的呢? 相信看完这篇文章你就懂了!
同一台服务器跨库访问实现
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 跨库跨服务器访问实现就到这了, 如果按照步骤一步一步操作的话, 相信您也已经实现了, 下一篇文章就来谈谈分库分表实现.
来源: https://www.cnblogs.com/shuai7boy/p/11051929.html