Azure SQL database 跨库查询 以及 sqlserver login&user关系

本文介绍如何在Azure SQL Database中通过创建external table实现跨库查询。文章详细讲解了设置master key、创建访问凭证、定义外部数据源及外部表的具体步骤。

Azure SQL database和普通的sqlserver 最大的区别是一个数据库就是一个instance, 这样给跨库查询带来了很多不便, 但是仍可以通过external table这种方式来实现. 下面说下步骤

1. 为你的数据库添加一个 master key, 用于加密下一步中需要的 credential

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'your password'  

2. 创建一个 DATABASE SCOPED CREDENTIAL 用于访问 instance 以外的数据库

CREATE DATABASE SCOPED CREDENTIAL mastervisit WITH IDENTITY = 'username',   
    SECRET = 'password';  
GO  


3. 创建一个外部数据源, 这里以普通关系型数据库为例, 其实还可以创建Hadoop, shard等类型

CREATE EXTERNAL DATA SOURCE data_source_name  
    WITH (   
        TYPE = RDBMS,
        LOCATION = 'name.database.windows.net',  
        DATABASE_NAME = 'dbname',
	CREDENTIAL= credential1
)  

4. 创建外部数据库源中表的引用, schema和name必须和外部数据库源的那张表一致

CREATE EXTERNAL TABLE schema.name
(
    [name] nvarchar(128) not null,
    [principal_id] int
)
WITH 
( DATA_SOURCE = [source_name])


这里补充一点:

在sqlserver中 login 和 user是两个概念, login是用于登录数据库的, 如果一个login没有和任何user绑定, 默认是用guest user的权限, 只能登进去, 不能访问任何数据库

要访问数据库必须有user权限, user可以和login绑定:

·每个User必须对应一个Login

·每个Login可以对应多个User,前提是User在不同的数据库中。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱知菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值