sql-server - 如何使用 SSMS 按名称查询驻留在 Azure SQL 服务器上的多个数据库?
问题描述
我希望能够运行一些临时查询来获得一些快速的结果。以下将返回foobar
两个具有相同结构的数据库的表中的行数。
USE Master
GO
select count(*) from MyFirstDB.dbo.foobar;
select count(*) from MySecondDB.dbo.foobar;
这适用于 SQL Server,但 SQL Azure 返回错误。我读到您使用 SQL Azure 无法在 SSMS 的查询窗口中更改数据库上下文。有没有办法使这项工作?如果我想跨两个数据库创建连接会发生什么?
解决方案
需要创建链接到另一台服务器的外部数据源和表。您可以使用以下代码创建一个。
CREATE DATABASE SCOPED CREDENTIAL credname
WITH IDENTITY = 'username',
SECRET = 'password';
CREATE EXTERNAL DATA SOURCE data_source_name
WITH
(
TYPE=RDBMS,
LOCATION='server.database.windows.net',
DATABASE_NAME='databasename',
CREDENTIAL= credname
);
CREATE EXTERNAL TABLE [dbo].[external_table_name](
-- Copy column definition
[Id] [uniqueidentifier] NOT NULL,
[Name] [nvarchar](200) NULL
)
WITH
(
DATA_SOURCE = data_source_name,
SCHEMA_NAME = 'dbo',
OBJECT_NAME = 'tablename'
)
select *
from dbo.[external_table_name]
DROP EXTERNAL TABLE [external_table_name]
DROP EXTERNAL DATA SOURCE [data_source_name]
DROP DATABASE SCOPED CREDENTIAL credname
推荐阅读
- r - R在修改时是否复制整个矩阵?
- email - 用于电子邮件的 Zurb 基金会:为小型设备隐藏一些容器
- python - 如何打印这个整数?
- python - plt.imshow() 没有显示正确的掩码数组(np.ma.masked_where())
- excel - Excel VBA 的 InStr 函数中可以使用单词通配符或正则表达式吗?
- c# - 想要在 Windows 服务启动和停止时刷新我在 c# windows 窗体中的标签。我是 C# 的初学者
- docker - SEO URL 在使用 Docker 的 OpenCart 2.3 中出现 404 错误
- sql-server - T-SQL 从字符串中提取数字以及介于两者之间的所有内容
- java - Mac 上 Android Studio 的 .idea 目录在哪里?
- sqlite - Sqlite 返回最新值与 24 小时前值之间的行差异