获取SQL Server服务器列表的几种方法

获取SQL Server服务器列表的几种方法,第1张

一、 SQL DMO描述:SQL Distributed Management Objects(SQL分布式管理对象),存在于SQLDMO.dll文件中,实际上是一个COM 对象,通过调用SQL DMO的ListAvailableSQLServers方法取得。速度:中调用示例:GetSQLServerList(ListBox1.items)代码:uses ComObjfunction GetSQLServerList(var AList: TStrings): Booleanvar SQLServerApp: VariantServerList: Varianti: Integerbegin Result := Truetry SQLServerApp := CreateOleObject('SQLDMO.Application')ServerList := SQLServerApp.ListAvailableSQLServersfor i := 1 to ServerList.Count do AList.Add(ServerList.Item(i))SQLServerApp := UnassignedServerList := Unassignedexcept Result := Falseendend二、 NetServerEnum描述:网络服务函数,存在于NetApi32.dll文件中;通过NetServerEnum函数可取得装有SQL Server服务端的计算机列表,只装有SQL Server客户端的计算机将不会被列举其中;如果一台计算机的SQL Server服务刚刚启动,那么此函数将会过很久才能取到该计算机。

使用SQL语句获得服务器名称和IP地址获取服务器名称:SELECT SERVERPROPERTY('MachineName')select @@SERVERNAMEselect HOST_NAME()获取IP地址

在SQL SERVER 获取当前服务器数据库备份信息,包括数据库名称,备份类型,恢复模式,时间等。 执行下面T-SQL:

SELECT T1.Name AS DatabaseName, 

 Isnull(Max(T2.recovery_model), 'No Backup Taken') AS recovery_model, 

 'Full' AS BackupType, 

 Isnull(CONVERT(VARCHAR(23), CONVERT(DATETIME, Max(T2.backup_finish_date), 131)), '') AS LastBackUpTaken 

FROM sys.sysdatabases T1 

 LEFT OUTER JOIN msdb.dbo.backupset T2 

 ON T2.database_name = T1.name 

WHERE type = 'D' 

GROUP BY T1.Name 

--Get the most recent Diff backup taken 

UNION ALL 

SELECT T1.Name AS DatabaseName, 

 Isnull(Max(T2.recovery_model), 'No Backup Taken') AS recovery_model, 

 'Differential' AS BackupType, 

 Isnull(CONVERT(VARCHAR(23), CONVERT(DATETIME, Max(T2.backup_finish_date), 131)), '') AS LastBackUpTaken 

FROM sys.sysdatabases T1 

 LEFT OUTER JOIN msdb.dbo.backupset T2 

 ON T2.database_name = T1.name 

WHERE type = 'I' 

GROUP BY T1.Name 

--Get the most recent Log backup taken 

UNION ALL 

SELECT T1.Name AS DatabaseName, 

 Isnull(Max(T2.recovery_model), 'No Backup Taken') AS recovery_model, 

 'Log' AS BackupType, 

 Isnull(CONVERT(VARCHAR(23), CONVERT(DATETIME, Max(T2.backup_finish_date), 131)), '') AS LastBackUpTaken 

FROM sys.sysdatabases T1 

 LEFT OUTER JOIN msdb.dbo.backupset T2 

 ON T2.database_name = T1.name 

WHERE type = 'L' 

GROUP BY T1.Name 

--Get the databases with no backup yet taken 

UNION ALL 

SELECT T1.Name AS DatabaseName, 

 Isnull(Max(T2.recovery_model), 'No Backup Taken') AS recovery_model, 

 'No Backup' AS BackupType, 

 Isnull(CONVERT(VARCHAR(23), CONVERT(DATETIME, Max(T2.backup_finish_date), 131)), '') AS LastBackUpTaken 

FROM sys.sysdatabases T1 

 LEFT OUTER JOIN msdb.dbo.backupset T2 

 ON T2.database_name = T1.name 

WHERE type IS NULL 

GROUP BY T1.Name 

--Sort the combined results

ORDER BY T1.name, 

 BackupType


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/746480.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-15
下一篇2023-08-15

发表评论

登录后才能评论

评论列表(0条)

    保存