我在多个容器中有多个数据库。 知道哪个容器保存哪个数据库开始引起混乱。
所以我的问题很简单,有没有办法获取Docker容器中包含的所有数据库的列表?
docker ps -a 提供所有已创建容器的列表,但是我如何知道哪个容器包含特定数据库?
必须有一个命令行来执行此操作,为我提供每个容器中包含的所有mssql数据库的列表, 到目前为止,我必须猜测哪个容器保存哪个数据库才能访问该数据库。
我将docker容器托管在Mac上。
答案 0 :(得分:0)
Docker不了解其内部正在运行什么,因此您必须直接询问SQL Server。
select [name] from sys.databases where database_id > 4
将列出给定实例(或您的情况下的容器)上的所有用户数据库。
连接到每个实例/容器并运行该查询。如果您使用中央管理服务器,则可以轻松得多,因为您可以一次对多个服务器执行同一查询。
如果您没有CMS,则可以通过将实例列表传递到dbatools
PowerShell模块函数Invoke-DbaQuery
并获得类似结果来实现。
Invoke-DbaQuery -serverinstance InstanceOne,InstanceTwo -query "select [name],@@SERVERNAME from sys.databases where database_id > 4;";
另一个选择(再次使用dbatools
)是使用Get-DbaDatabase
。这将返回有关名称的更多信息。
Get-DbaDatabase -serverinstance InstanceOne,InstanceTwo