Azure SQL 返回我重命名的数据库的旧名称

问题描述 投票:0回答:1

我有一个名为:sql-MyProj-dev-e2-001.database.windows.net

的数据库

我需要重命名它以删除 e2 (粗体部分)。

我有下面的 SQL:

select name 
from sys.databases 
where name like '%-e2-%' and name like '%-MyProj-%' 

我的部署以 Microsoft Entra 管理员身份运行,执行一个 powershell 脚本,该脚本使用 ExecuteScalar 运行 SQL,返回我的数据库名称。然后我使用 alter 语句重命名数据库。这符合预期。

接下来,我在 SSMS 中运行该 SQL,以我自己的身份运行,并且没有返回任何行。这是可以预料的,因为名称不再包含 e2。

但是,如果我再次运行部署,它会找到名称中带有 e2 的数据库。

我的脚本有这些行:

$SqlConnection.Open()
$theName = $SqlCmd.ExecuteScalar()
write-host "Retrieved Value: $theName"
$SqlConnection.Close()

写出检索值的行显示: sql-MyProj-dev-e2-001.database.windows.net

在 SMSM 中我运行这个:

select name 
from sys.databases 

返回两行(并且 -e2- 名称数据库不存在):

master
sql-MyProj-dev-001.database.windows.net

使用 SSMS,以我的身份运行,我看不到旧的数据库名称(带有 -e2-),但当 powershell 以 Microsoft Entra 管理员身份运行命令时,我确实看到了它。

以 Microsoft Entra Admin 身份运行时,sys.databases 是否返回重命名(或删除)的数据库?是否有一个字段我可以限制为仅返回活动数据库?

azure powershell azure-sql-database
1个回答
0
投票

以 Microsoft Entra Admin 身份运行时,sys.databases 是否返回重命名(或删除)的数据库?

是的,无论您的登录天气是Microsoft Entra Admin还是SQL登录

sys.databases 
都会返回当前服务器中包含的数据库(如果数据库重命名,它将显示新名称)

是否有一个字段我可以限制为仅返回活动数据库?

  • 为了确保您获取当前活动的数据库,您可能需要在查询中包含一个过滤器来检查“ONLINE”数据库的
    state
    列。
  • 此外,请考虑刷新视图或清除 PowerShell 会话中的缓存,以确保它不使用过时的信息。

如果您正在寻找仅返回活动数据库的字段,您可以使用如下查询:

SELECT name, state_desc
FROM sys.databases
WHERE state_desc = 'ONLINE'
© www.soinside.com 2019 - 2024. All rights reserved.