Azure SQL - 通过多个数据库查询创建视图
Posted
技术标签:
【中文标题】Azure SQL - 通过多个数据库查询创建视图【英文标题】:Azure SQL - Create view with query through multiple databases 【发布时间】:2016-05-31 13:57:28 【问题描述】:我有两个不同的数据库,我需要来自两个数据库的信息。我设法得到这样的数据:
create master key encryption by password = 'test'
create database scoped crendetial testcredentials with identity = 'secret@login', secret = 'secret@password'
-- CREATE DATA SOURCE --
create external data source RemoteDataSource with
(
type = RDBMS,
location = 'secret.database.windows.net',
database_name = 'testDB_Dev',
credential = testcredentials
)
-- CREATE TABLES --
create external table [RemoteDepartment]
(
[ID] [int],
[Name] [nvarchar](50)
)
with
(
data_source = RemoteDataSource,
schema_name = 'dbo',
object_name = 'Department'
);
从这里我现在可以select
、join
等等。 (Employee 表来自另一个数据库(我正在查询的那个))
select e.Name, e.Role, d.Name from Employee as e inner join
RemoteDepartment as d on d.ID = e.DepartmentId
输出如下
|---Name---|---Role---|---Name--|
| Louise | Manager | HR |
| Tim | Finances | Admin |
这是我的问题。虽然这一切都非常好和快速,但我似乎无法绕开我的脑袋,或者在网上找到任何资源,关于如何使用这种查询两个单独数据库的方法来创建视图。
我尝试了以下方法:
create master key encryption by password = 'test'
create database scoped crendetial testcredentials with identity = 'secret@login', secret = 'secret@password'
-- CREATE DATA SOURCE --
create external data source RemoteDataSource with
(
type = RDBMS,
location = 'secret.database.windows.net',
database_name = 'testDB_Dev',
credential = testcredentials
)
-- CREATE TABLES --
create external table [RemoteDepartment]
(
[ID] [int],
[Name] [nvarchar](50)
)
with
(
data_source = RemoteDataSource,
schema_name = 'dbo',
object_name = 'Department'
);
CREATE VIEW test_view AS
select e.Name, e.Role, d.Name from RemoteEmployee as e inner join
RemoteDepartment as d on d.ID = e.DepartmentId
但是得到一个编译错误提示
语法错误:'CREATE VIEW' 必须是批处理中的唯一语句
我尝试删除除 select
语句之外的所有内容,但这不起作用(编译器不知道 RemoteDepartment
实际上是什么)
【问题讨论】:
对不起,你说你有两个不同的数据库,但我在一个数据库中只看到2个表testDB_Dev
当然可以。我对帖子进行了编辑。表Employee
来自被查询的数据库。我的道歉
我建议你在一个数据库中创建2个表,否则使用2个数据库浪费太多资源
我非常清楚这一点,但我无法更改架构。我和我的团队已经在这些数据库上运行了大量服务,我们不能花时间来改变架构。我知道架构很奇怪(我没有造成这种混乱),但这不是这个问题的意义所在。不过,我很感谢您的评论。
【参考方案1】:
这听起来只是一个简单的案例,无法使用 Azure SQL 数据库实例进行跨数据库查询。
【讨论】:
但我可以吗?你读过我写的吗?我可以获取数据,但我无法创建视图。以上是关于Azure SQL - 通过多个数据库查询创建视图的主要内容,如果未能解决你的问题,请参考以下文章
Azure SQL 数据库 - 交叉引用 DB 查询 - SP
如何在 Synapse (Azure SQL DW) 上检索视图定义?
[QT][SQL]sql学习记录5_sqlite视图(View)