我有一个名为: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 是否返回重命名(或删除)的数据库?是否有一个字段我可以限制为仅返回活动数据库?
以 Microsoft Entra Admin 身份运行时,sys.databases 是否返回重命名(或删除)的数据库?
是的,无论您的登录天气是Microsoft Entra Admin还是SQL登录
sys.databases
都会返回当前服务器中包含的数据库(如果数据库重命名,它将显示新名称)
是否有一个字段我可以限制为仅返回活动数据库?
state
列。如果您正在寻找仅返回活动数据库的字段,您可以使用如下查询:
SELECT name, state_desc
FROM sys.databases
WHERE state_desc = 'ONLINE'