david_32
asked on
operations manager error with sql server in event log: GetSQL2005DBspace.js: 0
Hi Folks,
I have a SQL Server 2005 Standard 64 bit machine which is monitored by SCOM 2007. The SCOM Agent is version 6.0.6278.0.
I am continously getting these errors in the event log:
Source Health Service Script
EventID:4000
GetSQL2005DBSpace.js:0
It appears sqldmo.dll has been registered because I have found sqldmo.dll in the registry. The version of the dll is 2000.85.2004.0
Does anyone have any advice here? I believe I can run the GetSQL2005DBSpace.js script manually to get more info - does anyone know how to do that
I have a SQL Server 2005 Standard 64 bit machine which is monitored by SCOM 2007. The SCOM Agent is version 6.0.6278.0.
I am continously getting these errors in the event log:
Source Health Service Script
EventID:4000
GetSQL2005DBSpace.js:0
It appears sqldmo.dll has been registered because I have found sqldmo.dll in the registry. The version of the dll is 2000.85.2004.0
Does anyone have any advice here? I believe I can run the GetSQL2005DBSpace.js script manually to get more info - does anyone know how to do that
ASKER
As far as WSUS is concerned we are patched with everything but I sent the sqldmo.dll version in case someone new if there was an update to that. I will check those other things.. ta
ASKER
//Copyright (c) Microsoft Corporation. All rights reserved.
// Arguments (1)
// Arg 0: SQL Connection String
// Outputs a property bag for each database containing DB and Log Free space in MB and Percentage
var ScriptName = "Get SQL 2005 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";
// Datbase 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(SQLConnectionStr ing)
{
var SQLServer;
try
{
SQLServer = GetDMOServer(SQLConnection String);
}
catch (e)
{
PrintError(e);
FailScript(e, SQL_CONNECT_FAILURE_MSG);
}
var opsmgrAPI;
try
{
opsmgrAPI = new ActiveXObject("MOM.ScriptA PI");
}
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.ItemBy ID(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.CreateTypedPrope rtyBag(2);
var logSize, logAvailable, dbSize, dbAvailable;
logSize = currentDB.TransactionLog.S ize;
if (logSize < 1)
{
logAvailable = 0;
}
else
{
logAvailable = currentDB.TransactionLog.S paceAvaila bleInMB;
}
dbSize = currentDB.Size - logSize
dbAvailable = currentDB.SpaceAvailableIn MB - logAvailable
propertyBag.AddValue("Data base", currentDB.Name);
propertyBag.AddValue("Tran sactionLog Size", logSize);
//propertyBag.AddValue("Tr ansactionL ogUsed", logSize - logAvailable);
propertyBag.AddValue("Tran sactionLog Free", logAvailable);
if (logAvailable == 0)
{
propertyBag.AddValue("Tran sactionLog PercentFre e", 0);
//propertyBag.AddValue("Tr ansactionL ogUsedPerc ent", 100 );
}
else
{
propertyBag.AddValue("Tran sactionLog PercentFre e", 100 * logAvailable / logSize);
//propertyBag.AddValue("Tr ansactionL ogUsedPerc ent", 100 * (logSize - logAvailable) / logSize);
}
if ((currentDB.Name == "tempdb") || (currentDB.Name == "master") || (currentDB.Name == "msdb"))
{
propertyBag.AddValue("DBSi ze", dbSize);
propertyBag.AddValue("DBFr ee", 0);
propertyBag.AddValue("DBPe rcentFree" , 0);
}
else
{
propertyBag.AddValue("DBSi ze", dbSize);
//propertyBag.AddValue("DB Used", dbSize - dbAvailable);
propertyBag.AddValue("DBFr ee", dbAvailable);
propertyBag.AddValue("DBPe rcentFree" , 100 * dbAvailable / dbSize);
//propertyBag.AddValue("DB UsedPercen t", 100 * (dbSize - dbAvailable) / dbSize);
}
opsmgrAPI.AddItem(property Bag);
}
}
opsmgrAPI.ReturnItems();
SQLServer.Close();
}
function GetDMOServer(SQLConnection String)
{
if (SQLConnectionString != "")
{
var SQLServer = new ActiveXObject("SQLDMO.SQLS erver");
SQLServer.LoginSecure = true;
SQLServer.Connect(SQLConne ctionStrin g);
return SQLServer;
}
else
{
return null;
}
}
function FailScript(error, sMessage)
{
var opsmgrAPI;
opsmgrAPI = new ActiveXObject("MOM.ScriptA PI");
opsmgrAPI.LogScriptEvent(" GetSQL2005 DBSpace.js ", 4000, 1, sMessage & ". " & error.m_sDescription);
}
function PrintError(error)
{
WScript.Echo("============ ========== ======= BEGIN SCRIPT ERROR ========================== =======\n" );
WScript.Echo("Script Name : " + ScriptName);
WScript.Echo("Error Type : " + error);
WScript.Echo("Error Number : " + error.number);
WScript.Echo("Error Code : " + (error.number & 0xFFFF));
WScript.Echo("Win32 Facility : " + (error.number>>16 & 0x1FFF));
WScript.Echo("Error Source : " + error.Source);
WScript.Echo("Error Description : " + error.description);
WScript.Echo("============ ========== ======== END SCRIPT ERROR ========================== ========\n ");
}
// Arguments (1)
// Arg 0: SQL Connection String
// Outputs a property bag for each database containing DB and Log Free space in MB and Percentage
var ScriptName = "Get SQL 2005 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";
// Datbase 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(SQLConnectionStr
{
var SQLServer;
try
{
SQLServer = GetDMOServer(SQLConnection
}
catch (e)
{
PrintError(e);
FailScript(e, SQL_CONNECT_FAILURE_MSG);
}
var opsmgrAPI;
try
{
opsmgrAPI = new ActiveXObject("MOM.ScriptA
}
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.ItemBy
}
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.CreateTypedPrope
var logSize, logAvailable, dbSize, dbAvailable;
logSize = currentDB.TransactionLog.S
if (logSize < 1)
{
logAvailable = 0;
}
else
{
logAvailable = currentDB.TransactionLog.S
}
dbSize = currentDB.Size - logSize
dbAvailable = currentDB.SpaceAvailableIn
propertyBag.AddValue("Data
propertyBag.AddValue("Tran
//propertyBag.AddValue("Tr
propertyBag.AddValue("Tran
if (logAvailable == 0)
{
propertyBag.AddValue("Tran
//propertyBag.AddValue("Tr
}
else
{
propertyBag.AddValue("Tran
//propertyBag.AddValue("Tr
}
if ((currentDB.Name == "tempdb") || (currentDB.Name == "master") || (currentDB.Name == "msdb"))
{
propertyBag.AddValue("DBSi
propertyBag.AddValue("DBFr
propertyBag.AddValue("DBPe
}
else
{
propertyBag.AddValue("DBSi
//propertyBag.AddValue("DB
propertyBag.AddValue("DBFr
propertyBag.AddValue("DBPe
//propertyBag.AddValue("DB
}
opsmgrAPI.AddItem(property
}
}
opsmgrAPI.ReturnItems();
SQLServer.Close();
}
function GetDMOServer(SQLConnection
{
if (SQLConnectionString != "")
{
var SQLServer = new ActiveXObject("SQLDMO.SQLS
SQLServer.LoginSecure = true;
SQLServer.Connect(SQLConne
return SQLServer;
}
else
{
return null;
}
}
function FailScript(error, sMessage)
{
var opsmgrAPI;
opsmgrAPI = new ActiveXObject("MOM.ScriptA
opsmgrAPI.LogScriptEvent("
}
function PrintError(error)
{
WScript.Echo("============
WScript.Echo("Script Name : " + ScriptName);
WScript.Echo("Error Type : " + error);
WScript.Echo("Error Number : " + error.number);
WScript.Echo("Error Code : " + (error.number & 0xFFFF));
WScript.Echo("Win32 Facility : " + (error.number>>16 & 0x1FFF));
WScript.Echo("Error Source : " + error.Source);
WScript.Echo("Error Description : " + error.description);
WScript.Echo("============
}
ASKER
I found in a newsgroup that this error could be resolved after updating to MP 6.0.6247.5. How do I know what management pack I am on?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
JS extensions indicate java script.
Is JS enabled on the server? On SQL?
Is the SCOM agent running under an account that has permissions to the SQL Server?
Can you read the javascript and post it here?
Are you patched with everything?