azure - 枚举 Azure SQL Server 中的数据库列表
问题描述
我们标记具有扩展属性的数据库,以识别与我们的软件兼容的数据库。我们向用户提供要连接的兼容数据库列表。
迄今为止,我们已在本地 SQL Express 实例上使用 sp_databases 来执行此操作。我们在查询 sys.databases 时使用了这个存储过程,因为我们知道我们的用户出于某种原因会删除 MDF/LDF 文件。根据我们的经验,如果数据库的基础 MDF/LDF 文件已被删除, sp_databases 将不会返回数据库。
据我所知,Azure SQL Server 不支持 sp_databases。我尝试将代码更改为查询 sys.databases,因为我们不必担心用户在 Azure 环境中删除 MDF/LDF 文件,但是,当从 .Net 应用程序运行时,它总是返回一个空的结果集。
在 Azure SQL Server 上查询数据库集的正确方法是什么,以便我们可以根据扩展属性值过滤掉数据库?是否需要授予执行查询的用户额外的东西?
解决方案
您可以使用 SQL Server 管理对象 (SMO)。以下是从 PowerShell 使用 SMO 的示例。
Function Get-Databases {
Param(
[string]$location
, [string]$server
, [string]$smolibrary
, [string]$daclibrary
, [string]$username
, [string]$password
)
Process
{
$dt = Get-Date -uFormat "%Y%m%d"
Add-Type -Path $smolibrary
$scon = "Data Source=$server.database.windows.net;Initial Catalog=master;User ID=$username;Password=$password;"
$servercon = New-Object Microsoft.SqlServer.Management.Common.ServerConnection
$servercon.ConnectionString = $scon
$srv = New-Object Microsoft.SqlServer.Management.SMO.Server($servercon)
foreach ($db in $srv.Databases | Where-Object {$_.Name -ne "master"})
{
$database = $db.Name
### Print or save $database
}
}
}
推荐阅读
- twig - 检查字符串是否匹配单词
- python-3.x - 在python3中返回以下日期和月份的函数
- android - 如何设置 GOOGLE_APPLICATION_CREDENTIALS?
- html - 添加两个按钮,按下时显示不同的消息(仅在 html 中)
- javascript - 如何在 reactJS 中使用 id 从 API 获取数据?
- python - 为什么 mypy 在此由 MonkeyType 自动注释的模块上失败?
- javascript - 无法从角度 8 中的 dist/index.html 登录,如果我使用 proxy.conf.json 文件,它允许我
- cmake - 错误在此 repo 中构建所有 ros 包 catkin_make 步骤中发生错误
- django - 从 django.contrib.auth.model 扩展 Group 模型,删除 name 上的唯一约束并添加 unique_together 名称、组织字段
- python - 如果我更改 Python 版本,将项目推送到 Heroku 已被拒绝