gpt4 book ai didi

sql-server - 如何在不登录的情况下获取SQL Server数据库名称?

转载 作者:行者123 更新时间:2023-12-03 01:16:47 24 4
gpt4 key购买 nike

我有数百台服务器,想检查在它们上运行的非系统SQL Server数据库的存在。它们可能有多种版本:2005、2008、2012,Express。

我不确定数据库名称是否存储在特定的注册表中(尽管找不到)或文件/文件名(在C:驱动器上)是否可以这种方式提取信息。我希望能够从Powershell脚本中执行此操作,但我可以将其分批处理。

最佳答案

假设您有这样做的特权,那么T-SQL和使用SQL Server管理对象(SMO)可能是最好的选择。在运行T-SQL或使用PowerShell中的SMO including this one时,引用很多。

使用T-SQL的示例

# Download and dot source Invoke-Sqlcmd2
# source - https://raw.githubusercontent.com/RamblingCookieMonster/PowerShell/master/Invoke-Sqlcmd2.ps1
. "\\Path\To\Invoke-Sqlcmd2.ps1"

#Run sp_databases, among other options, against your SQL servers.
"Server1", "Server2\NamedInstance" |
Invoke-Sqlcmd2 -query "Sp_databases" -AppendServerInstance

使用SQL SMO的示例
#Download, install components from SQL feature pack:
# SQLSysClrTypes, SharedManagementObjects, optionally PowerShellTools
# http://www.microsoft.com/en-us/download/details.aspx?id=42295

#One of several ways to load one of the SMO binaries
[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")

#Connect to the server with integrated Windows auth
$Connection = New-Object "Microsoft.SqlServer.Management.Smo.Server" -ArgumentList Server1

#List the databases
$Connection.Databases

#List the names of the databases
$Connection.Databases | Select -ExpandProperty Name

最后,听起来您正在关注发现。在查找单个数据库之前,您可能会考虑查找SQL实例,然后可以逐案进行研究。 Boe Prox编写了 Get-SQLInstance,它仅需要注册表特权,并且会吐出SQL实例名称,SQL版本和其他有用的信息。

关于sql-server - 如何在不登录的情况下获取SQL Server数据库名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27670263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com