// Outputs a property bag for each database containing DB and Log Free space in MB and Percentage
var ScriptName = "Get SQL 2008 Database Space";
// Failure Conditions
var SCRIPT_ARG_FAILURE = -1;
var SCRIPT_ARG_FAILURE_MSG = "Invalid arguments passed to script";
var SQL_CONNECT_FAILURE = -2;
var SQL_CONNECT_FAILURE_MSG = "Could not connect to SQL";
var SQL_QUERY_FAILURE = -3;
var SQL_QUERY_FAILURE_MSG = "Failed to query databasize size information";
var SQL_DBLIST_FAILURE = -4;
var SQL_DBLIST_FAILURE_MSG = "Failed to enumerate databases";
var OPSMGR_API_FAILURE = -5;
var OPSMGR_API_FAILURE_MSG = "Failed to create Operations Manager scripting API object";
// Database States
var DB_EMERGENCYMODE = 32768
var DB_LOADING = 22
var DB_NORMAL = 0
var DB_OFFLINE = 512
var DB_RECOVERING = 192
var DB_STANDBY = 1024
var DB_SUSPECT = 256
var ScriptArgs = WScript.Arguments;
if (ScriptArgs.Length == 1)
{
GetDBSize(ScriptArgs(0));
}
function GetDBSize(SQLConnectionString)
{
var SQLServer;
try
{
SQLServer = GetDMOServer(SQLConnectionString);
}
catch (e)
{
PrintError(e);
FailScript(e, SQL_CONNECT_FAILURE_MSG);
}
var opsmgrAPI;
try
{
opsmgrAPI = new ActiveXObject("MOM.ScriptAPI");
}
catch (e)
{
PrintError(e);
FailScript(e, OPSMGR_API_FAILURE_MSG);
}
// This loop runs SQLServer.Databases.Count + the number of deleted databases BETWEEN dbs starting from id 1 to the last
// database which is not deleted/detached times.
var delDbCount = 0;
for (i=1; i <= SQLServer.Databases.Count + delDbCount; i++)
{
try
{
var currentDB = SQLServer.Databases.ItemByID(i);
}
catch (e)
{
// If database is deleted/detached just move to the next
delDbCount = delDbCount + 1;
continue;
}
if ((currentDB.Status == DB_NORMAL ) || (currentDB.Status == DB_STANDBY))
{
var propertyBag = opsmgrAPI.CreateTypedPropertyBag(2);
var logSize, logAvailable, dbSize, dbAvailable;
logSize = currentDB.TransactionLog.Size;