首页 > 解决方案 > 如何使用 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 的查询窗口中更改数据库上下文。有没有办法使这项工作?如果我想跨两个数据库创建连接会发生什么?

标签: sql-serverazure-sql-server

解决方案


需要创建链接到另一台服务器的外部数据源和表。您可以使用以下代码创建一个。

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


推荐阅读