Este tipo de módulo se usa para cambiar el estado de una base de datos de Microsoft SQL Server 2008. Obtiene la configuración relacionada con la base de datos que se va a modificar y el estado que se va a establecer.
Error.prototype.toString = function () {
if (this.message) {
var parts = [];
parts.push(this.message);
parts.push('\n');
if (this.number) {
parts.push("Error Number : ");
parts.push(this.number);
parts.push('\n');
parts.push("Error Code : ");
parts.push(this.number & 0xFFFF);
parts.push('\n');
parts.push("Win32 Facility : ");
parts.push((this.number >> 16 & 0x1FFF));
parts.push('\n');
}
if (this.description) {
parts.push("Error Description : ");
parts.push(this.description);
}
parts.push('\n');
return parts.join('');
}
else {
return this.toString();
}
};
var Exception = function (message, innerException) {
arguments.callee.setAlias('Exception.constructor');
this.message = message;
this.innerException = innerException;
var parts = [];
var collectArguments = function (caller) {
parts.push('(');
for (var i = 0; i < caller.length; i++) {
if (typeof (caller[i]) != 'undefined') {
parts.push(caller[i] === null ? 'null' : (typeof (caller[i].toString) === 'undefined' ? 'object' : caller[i].toString()));
parts.push(',');
}
}
parts.pop();
parts.push(')');
parts.push(',\n');
};
var collectCallStack = function (caller) {
arguments.callee.setAlias('Exception.collectCallStack');
parts.push(caller.callee.getAlias ? caller.callee.getAlias() : 'anonymous');
collectArguments(caller);
var nextCaller = caller.caller;
if (nextCaller)
collectCallStack(nextCaller);
};
collectCallStack(arguments);
this.callStack = parts.join('');
this.toString = function () {
arguments.callee.setAlias('Exception.toStringFull');
var strParts = [];
strParts.push(this.message);
strParts.push('\n');
if (this.innerException) {
var ADODB = function (connectionString, provider, connectionTimeout) {
arguments.callee.setAlias('ADODB.constructor');
if (!connectionString)
throw new Exception("Connection string cannot be null or empty string");
this.Close = function () {
arguments.callee.setAlias('ADODB.Close');
try {
if (connection) {
connection.Close();
}
}
catch (e) {
throw new Exception("Can't close connection.", e);
}
};
};
var Registry = function () {
arguments.callee.setAlias('Registry.constructor');
var registry;
try {
registry = new ActiveXObject("WScript.Shell");
}
catch (e) {
throw new Exception("Can't create ActiveXObject 'WScript.Shell'", e);
}
this.Write = function (key, value, type) {
arguments.callee.setAlias('Registry.Write');
try {
if (type) {
registry.RegWrite(key, value, type);
}
else {
registry.RegWrite(key, value);
}
}
catch (e) {
throw new Exception("Can't write value '" + value.toString() + "' by registry key '" + key.toString() + "'.", e);
}
};
this.Read = function (key) {
arguments.callee.setAlias('Registry.Read');
var value;
try {
value = registry.RegRead(key);
}
catch (e) {
throw new Exception("Can't read value from registry key '" + key.toString() + "'.", e);
}
return value;
};
this.IsKeyExists = function (key) {
arguments.callee.setAlias('Registry.IsKeyExists');
var result = false;
try {
var value = registry.RegRead(key);
result = true;
}
catch (e) {
result = false;
}
return result;
};
this.Delete = function (key) {
arguments.callee.setAlias('Registry.Delete');
var value;
try {
value = registry.RegDelete(key);
}
catch (e) {
throw new Exception("Can't delete registry key '" + key.toString() + "'.", e);
}
return value;
};
};
var WMIProvider = function (wmiNamespace, computerName) {
arguments.callee.setAlias('WMIProvider.constructor');
this.wmiNamespace = wmiNamespace;
this.computerName = (!computerName) ? computerName : ".";
var SWbemLocator;
try {
SWbemLocator = new ActiveXObject("WbemScripting.SWbemLocator");
}
catch (e) {
throw new Exception("Cannot create 'WbemScripting.SWbemLocator' object.", e);
}
this.SWbemLocator = SWbemLocator;
var wmiService;
try {
wmiService = this.SWbemLocator.ConnectServer(this.computerName, this.wmiNamespace);
}
catch (e) {
throw new Exception("Cannot connect to WMI of computer '" + this.computerName + "' by namespace '" + this.wmiNamespace + "'.", e);
}
this.WMIService = wmiService;
this.ExecQuery = function (query) {
arguments.callee.setAlias('WMIProvider.ExecQuery');
var result = null;
try {
result = this.WMIService.ExecQuery(query, "WQL", 0x0);
}
catch (e) {
throw new Exception("Cannot execute WMI query '" + query + "'.", e);
}
return result;
};
};
function ParseInputBool(inputVal, allowEmpty, errorMessage) {
if (inputVal === null || inputVal === "") {
if (allowEmpty) {
return "true";
}
else {
throw new Exception(errorMessage);
}
}
var supportedValues = ["true", "false", "t", "f", ".t.", ".f.", "1", "0"];
var replacements = ["true", "false", "true", "false", "true", "false", "true", "false"];
var processed = ("" + inputVal).trim().toLowerCase();
var pos = supportedValues.indexOf(processed);
if (pos < 0) {
throw new Exception(errorMessage);
}
return replacements[pos];
}
var MAX_DRIVER_VERSION_STR = "99999999.99999999.99999999.99999999";
var DriverVersion = function (versionStr) {
arguments.callee.setAlias('DriverVersion.constructor');
var versionRegex = /^(\d{1,8})(.\d{1,8}){0,3}$/g;
if (!versionRegex.exec(versionStr)) {
throw new Exception("Invalid version string.");
}
var parts = versionStr.split(".");
this.major = parseInt(parts[0]);
this.minor = 0;
this.build = 0;
this.revision = 0;
if (parts.length > 1) {
this.minor = parseInt(parts[1]);
if (parts.length > 2) {
this.build = parseInt(parts[2]);
if (parts.length > 3) {
this.revision = parseInt(parts[3]);
}
}
}
this.compareTo = function (v) {
arguments.callee.setAlias('DriverVersion.compareTo');
if (!(v instanceof DriverVersion)) {
throw new Exception("Parameter is not an instance of type DriverVersion.");
}
var d = this.major - v.major;
if (d !== 0) {
return d;
}
d = this.minor - v.minor;
if (d !== 0) {
return d;
}
d = this.build - v.build;
if (d !== 0) {
return d;
}
d = this.revision - v.revision;
return d;
};
};
var VersionRange = function (sStartVersion, sEndVersion) {
arguments.callee.setAlias('VersionRange.constructor');
this.startVersion = GetDriverVersionObj(sStartVersion);
this.endVersion = GetDriverVersionObj(sEndVersion);
};
function GetDriverVersionObj(oVersion) {
arguments.callee.setAlias('GetDriverVersionObj');
if (oVersion instanceof DriverVersion) {
return oVersion
} else {
if ((typeof oVersion) === "string") {
return new DriverVersion(oVersion);
}
}
throw new Exception("Parameter is not an instance of type DriverVersion.");
}
function EnumerateRegistryKeyValues(hiveName, keyPath) {
arguments.callee.setAlias('EnumerateRegistryKeyValues');
var hiveId, ex;
switch (hiveName) {
case "HKEY_CLASSES_ROOT":
hiveId = 2147483648;
break;
case "HKEY_CURRENT_USER":
hiveId = 2147483649;
break;
case "HKEY_LOCAL_MACHINE":
hiveId = 2147483650;
break;
case "HKEY_USERS":
hiveId = 2147483651;
break;
case "HKEY_CURRENT_CONFIG":
hiveId = 2147483653;
break;
default:
throw new Exception("Registry hive name '" + hiveName + "' is invalid");
}
try {
var providerName = "StdRegProv";
var services = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default");
var registry = services.Get(providerName);
var enumFuncName = "EnumValues";
var inParams = registry.Methods_(enumFuncName).InParameters.SpawnInstance_();
inParams.hDefKey = hiveId;
inParams.sSubKeyName = keyPath;
var outParams = registry.ExecMethod_(enumFuncName, inParams);
var valueNames = outParams.sNames.toArray();
var valueTypes = outParams.Types.toArray();
var DriverSelectorRule = function (sNameRegex, sNameVersionRegex, sNameMinVersion, sNameMaxVersion, oVersionRangeArray) {
arguments.callee.setAlias('DriverSelectorRule.constructor');
var _computerId = ".";
this.nameRegex = sNameRegex;
this.nameVersionRegex = sNameVersionRegex;
this.nameMinVersion = GetDriverVersionObj(sNameMinVersion);
this.nameMaxVersion = GetDriverVersionObj(sNameMaxVersion);
var _versionRangeArray = oVersionRangeArray;
this.driverCollection = new Array();
this.isNativeClient = false;
var _nameRegexObj = new RegExp(sNameRegex);
var _nameVersionRegexObj = null;
if (sNameVersionRegex) {
if (sNameVersionRegex.length > 0) {
_nameVersionRegexObj = new RegExp(sNameVersionRegex);
}
}
var checkVersion = function (oVersion, vMinVersion, vMaxVersion) {
arguments.callee.setAlias('DriverSelectorRule.checkVersion');
var vVersion = GetDriverVersionObj(oVersion);
return vVersion.compareTo(vMinVersion) >= 0 && (vVersion.toString() == MAX_DRIVER_VERSION_STR || vMinVersion.compareTo(vMaxVersion) == 0 || vVersion.compareTo(vMaxVersion) < 0);
};
this.checkDriverVersion = function (oVersion) {
arguments.callee.setAlias('DriverSelectorRule.checkDriverVersion');
var result = false;
for (var i = 0; i < _versionRangeArray.length; i++) {
if (checkVersion(oVersion, _versionRangeArray[i].startVersion, _versionRangeArray[i].endVersion)) {
result = true;
break;
}
}
return result;
};
this.matchName = function (sName) {
arguments.callee.setAlias('DriverSelectorRule.matchName');
if (_nameRegexObj.exec(sName)) {
return true;
}
return false;
};
this.getNameVersion = function (sName) {
arguments.callee.setAlias('DriverSelectorRule.getNameVersion');
if (!_nameVersionRegexObj) {
return new DriverVersion("0");
}
var matches = _nameVersionRegexObj.exec(sName);
if (matches) {
return new DriverVersion(matches[0]);
}
throw new Exception("Driver name or version detection expression is invalid");
};
this.getDriverVersion = function (sName) {
arguments.callee.setAlias('DriverSelectorRule.getDriverVersion');
var registry = new Registry();
var driverPath = registry.Read("HKEY_LOCAL_MACHINE\\SOFTWARE\\ODBC\\ODBCINST.INI\\" + sName + "\\Driver");
try {
var objFso = new ActiveXObject("Scripting.FileSystemObject");
var sDllVersion = objFso.GetFileVersion(driverPath);
} catch (ex) {
throw new Exception("Cannot obtain driver version using path '" + driverPath + "'");
}
return new DriverVersion(sDllVersion);
};
this.addDriver = function (oDriver) {
arguments.callee.setAlias('DriverSelectorRule.addDriver');
if (!(oDriver instanceof DriverItem)) {
throw new Exception("Parameter is not an instance of type DriverItem.")
}
this.driverCollection.push(oDriver);
};
this.resetState = function () {
this.driverCollection = new Array();
};
};
var DriverSelector = function () {
arguments.callee.setAlias('DriverSelector.constructor');
var _selectorRules = new Array();
var _selectedDriverName = null;
var _computerId = ".";
var _defaultDriverName = "SQL Server";
var _ncli_ForceProtocolEncryption = false;
var _ncli_TrustServerCertificate = false;
var _ncli_tcpProtocolEnabled = true;
var _processed = false;
var _errorCollection = new Array();
var pr = new DriverSelectorRule("^SQL\\sServer\\sNative\\sClient\\s\\d{1,8}(\\.\\d{1,8})?$", "\\d{1,8}(\\.\\d{1,8})?$", "11.0", "11.0",
new Array(
new VersionRange("2011.110.6020.0", MAX_DRIVER_VERSION_STR),
new VersionRange("2011.110.5592.0", "2011.110.6000.0"),
new VersionRange("2011.110.5347.0", "2011.110.5522.0")));
pr.isNativeClient = true;
_selectorRules.push(pr);
_selectorRules.push(new DriverSelectorRule("^ODBC\\sDriver\\s\\d{1,8}(\\.\\d{1,8})?\\sfor\\sSQL\\sServer$", "\\d{1,8}(\\.\\d{1,8})?(?=\\sfor\\sSQL\\sServer$)", "11.0", MAX_DRIVER_VERSION_STR,
new Array(
new VersionRange("2014.120.4219.0", MAX_DRIVER_VERSION_STR),
new VersionRange("2014.120.2546.0", "2014.120.4000.0")
)));
pr = new DriverSelectorRule("^SQL\\sServer\\sNative\\sClient\\s\\d{1,8}(\\.\\d{1,8})?$", "\\d{1,8}(\\.\\d{1,8})?$", "0", MAX_DRIVER_VERSION_STR, [new VersionRange("0", MAX_DRIVER_VERSION_STR)]);
pr.isNativeClient = true;
_selectorRules.push(pr);
_selectorRules.push(new DriverSelectorRule("^ODBC\\sDriver\\s\\d{1,8}(\\.\\d{1,8})?\\sfor\\sSQL\\sServer$", "\\d{1,8}(\\.\\d{1,8})?(?=\\sfor\\sSQL\\sServer$)", "0", MAX_DRIVER_VERSION_STR, [new VersionRange("0", MAX_DRIVER_VERSION_STR)]));
function processSystemOdbcDrivers(ncProtocolsAreIntersected) {
arguments.callee.setAlias('DriverSelector.processSystemOdbcDrivers');
var i, j;
var registry = new Registry();
var oValues = EnumerateRegistryKeyValues("HKEY_LOCAL_MACHINE", "SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Drivers");
var driverNameArr = oValues.ValueNames;
var valueTypeArr = oValues.ValueTypes;
for (i = 0; i < driverNameArr.length; i++) {
try {
if (valueTypeArr[i] !== RegistryValueTypes.REG_SZ) {
continue;
}
var isInstalled = registry.Read("HKEY_LOCAL_MACHINE\\SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Drivers" + "\\" + driverNameArr[i]);
if (isInstalled != "Installed") {
continue;
}
for (j = 0; j < _selectorRules.length; j++) {
if (_selectorRules[j].matchName(driverNameArr[i])) {
if (!_selectorRules[j].isNativeClient || (_selectorRules[j].isNativeClient && ncProtocolsAreIntersected)) {
var nameVersion = _selectorRules[j].getNameVersion(driverNameArr[i]);
if (_selectorRules[j].checkNameVersion(nameVersion)) {
var driverVersion = _selectorRules[j].getDriverVersion(driverNameArr[i]);
if (_selectorRules[j].checkDriverVersion(driverVersion)) {
var driverItem = new DriverItem(driverNameArr[i], nameVersion, driverVersion, _selectorRules[j]);
_selectorRules[j].addDriver(driverItem);
}
}
}
}
}
} catch (ex) {
addError(ex);
}
}
}
function getNsNameWithHighestVersion() {
arguments.callee.setAlias('DriverSelector.getNsNameWithHighestVersion');
var rootNs = "root\\Microsoft\\SqlServer";
var oWMI = new WMIProvider(rootNs);
var namespaces = oWMI.ExecQuery("SELECT Name FROM __NAMESPACE WHERE Name LIKE 'ComputerManagement%'");
if (namespaces.Count > 0) {
var e = new Enumerator(namespaces);
var currentName = "";
for (; !e.atEnd() ; e.moveNext()) {
var nsName = e.item().Name;
currentName = nsName > currentName ? nsName : currentName;
}
} else {
throw new Exception("No namespace 'ComputerManagement*' was found");
}
return rootNs + "\\" + currentName;
}
function getNativeClientOdbcSettings(namespaceFullName) {
arguments.callee.setAlias('DriverSelector.getNativeClientOdbcSettings');
var oWMI = new WMIProvider(namespaceFullName);
var oQuery = oWMI.ExecQuery("SELECT FlagName, FlagValue FROM ClientSettingsGeneralFlag");
if (oQuery.Count > 0) {
var e = new Enumerator(oQuery);
for (; !e.atEnd() ; e.moveNext()) {
var prop = e.item();
switch (prop.FlagName) {
case "Force protocol encryption":
_ncli_ForceProtocolEncryption = prop.FlagValue;
break;
case "Trust Server Certificate":
_ncli_TrustServerCertificate = prop.FlagValue;
break;
}
}
}
}
function getEnabledNativeClientProtocols(namespaceFullName) {
var oWMI = new WMIProvider(namespaceFullName);
var oQuery = oWMI.ExecQuery("SELECT ProtocolName, ProtocolOrder FROM ClientNetworkProtocol");
var protocolsArr = [];
if (oQuery.Count > 0) {
for (var e = new Enumerator(oQuery) ; !e.atEnd() ; e.moveNext()) {
if (e.item().ProtocolOrder > 0) {
protocolsArr.push(e.item().ProtocolName.toLowerCase());
}
}
}
return protocolsArr;
}
function resetState() {
_errorCollection = new Array();
for (var i = 0; i < _selectorRules.length; i++) {
_selectorRules[i].resetState();
}
}
function addError(oErr) {
var errStr = typeof (oErr.toString) === 'undefined' ? "[" + (oErr.number & 0xFFFF) + "] " + oErr.message : oErr.toString();
_errorCollection.push(errStr);
}
this.processDrivers = function (enabledServerProtocols) {
arguments.callee.setAlias('DriverSelector.processDrivers');
var i, j;
resetState();
var ncNamespace = getNsNameWithHighestVersion();
var clientProtocols = getEnabledNativeClientProtocols(ncNamespace);
var ncProtocolsAreIntersected = clientProtocols.intersectsWith(enabledServerProtocols);
function GetEnabledSqlServerProtocols(namespaceName, computerName, instanceName) {
var oWMI = new WMIProvider("root\\Microsoft\\SqlServer\\" + namespaceName);
var oQuery = oWMI.ExecQuery("SELECT ProtocolName, Enabled FROM ServerNetworkProtocol WHERE InstanceName = '" + EscapeWQLString(instanceName) + "'");
var protocolsArr = [];
if (oQuery.Count > 0) {
for (var e = new Enumerator(oQuery) ; !e.atEnd() ; e.moveNext()) {
if (e.item().Enabled) {
protocolsArr.push(e.item().ProtocolName.toLowerCase());
}
}
}
return protocolsArr;
}
function GetSqlServerTcpIpSettings(instanceName) {
arguments.callee.setAlias('GetSqlServerTcpIpSettings');
var listenAllIps = false;
var e, e2, matches;
var uc = new UniqueCollection();
var ipSettings = new ActiveXObject("Scripting.Dictionary");
var portRegex = /(?:,|^)\s*([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\s*(?=,|$)/g;
var oWMI = new WMIProvider("root\\Microsoft\\SqlServer\\" + SQL_WMI_NAMESPACE);
var oQuery = oWMI.ExecQuery("SELECT * FROM ServerNetworkProtocolProperty WHERE ProtocolName = 'Tcp' AND InstanceName = '" + EscapeWQLString(instanceName) + "' AND PropertyName = 'ListenOnAllIPs'");
if (oQuery.Count > 0) {
e = new Enumerator(oQuery);
e.moveFirst();
var isListenAll = e.item();
if (isListenAll.PropertyNumVal === 1) {
listenAllIps = true;
}
}
if (listenAllIps) {
oQuery = oWMI.ExecQuery("SELECT * FROM ServerNetworkProtocolProperty WHERE ProtocolName = 'Tcp' AND InstanceName = '" + EscapeWQLString(instanceName) + "' AND IPAddressName = 'IPAll' AND (PropertyName = 'TcpPort' OR PropertyName = 'TcpDynamicPorts') AND PropertyStrVal != ''");
if (oQuery.Count > 0) {
for (e = new Enumerator(oQuery) ; !e.atEnd() ; e.moveNext()) {
while (matches = portRegex.exec(e.item().PropertyStrVal)) {
if (!SqlTcpPortIsEmpty(matches[1])) {
uc.put(matches[1]);
}
}
}
ipSettings.add("IPAll", uc.get());
}
}
else {
oQuery = oWMI.ExecQuery("SELECT * FROM ServerNetworkProtocolProperty WHERE ProtocolName = 'Tcp' AND InstanceName = '" + EscapeWQLString(instanceName) + "' AND IPAddressName != '' AND PropertyName = 'Enabled' AND PropertyNumVal = 1");
if (oQuery.Count > 0) {
for (e = new Enumerator(oQuery) ; !e.atEnd() ; e.moveNext()) {
var ipAddress = '';
var ipAddressName = e.item().IPAddressName;
var oQuery2 = oWMI.ExecQuery("SELECT * FROM ServerNetworkProtocolProperty WHERE ProtocolName = 'Tcp' AND InstanceName = '" + EscapeWQLString(instanceName) + "' AND IPAddressName = '" + EscapeWQLString(ipAddressName) + "' AND PropertyName = 'IpAddress' AND PropertyStrVal != ''");
if (oQuery2.Count > 0) {
e2 = new Enumerator(oQuery2);
e2.moveFirst();
ipAddress = e2.item().PropertyStrVal;
}
else {
continue;
}
oQuery2 = oWMI.ExecQuery("SELECT * FROM ServerNetworkProtocolProperty WHERE ProtocolName = 'Tcp' AND InstanceName = '" + EscapeWQLString(instanceName) + "' AND IPAddressName = '" + this.EscapeWQLString(ipAddressName) + "' AND (PropertyName = 'TcpPort' OR PropertyName = 'TcpDynamicPorts') AND PropertyStrVal != ''");
uc.clear();
if (oQuery2.Count > 0) {
for (e2 = new Enumerator(oQuery2) ; !e2.atEnd() ; e2.moveNext()) {
while (matches = portRegex.exec(e2.item().PropertyStrVal)) {
if (!SqlTcpPortIsEmpty(matches[1])) {
uc.put(matches[1]);
}
}
}
try {
ipSettings.add(ipAddress, uc.get());
}
catch (ex) { }
}
}
}
}
return { listenAllIPs: listenAllIps, ipSettings: ipSettings };
}
function GetAndCheckConnection(driverName, dataSource, databaseName, provider, timeout, machineName, instanceName) {
arguments.callee.setAlias('GetAndCheckConnection');
var connectionString = GetConnectionString(driverName, dataSource, databaseName);
var dbMasterConnection = new ADODB(connectionString, provider, timeout);
CheckConnectionTarget(dbMasterConnection, machineName, instanceName);
return dbMasterConnection;
}
function SmartConnect(serverName, databaseName, tcpPort, machineName, instanceName) {
arguments.callee.setAlias('SmartConnect');
var dataSource;
var targetName = serverName;
var lastError = null;
var errorMessageColl = [];
var enabledServerProtocols = GetEnabledSqlServerProtocols(SQL_WMI_NAMESPACE, machineName, instanceName);
var ds = new DriverSelector();
ds.processDrivers(enabledServerProtocols);
var hasErrors = ds.hasErrors();
var useFqdn = ds.getUseFqdn();
var driverName = ds.getSelectedDriverName();
//try to use SQL server browser
try {
dataSource = GetDataSource(serverName, "");
return GetAndCheckConnection(driverName, dataSource, databaseName, "", 15, machineName, instanceName);
} catch (ex) {
lastError = ex;
errorMessageColl.push("Connection to data source '" + dataSource + "' failed: " + ex.message);
}
if (enabledServerProtocols.indexOf("tcp") >= 0 && ds.getClientTcpProtocolEnabled()) {
var pathArray = serverName.split("\\");
var dsComputerName = pathArray[0];
targetName = useFqdn ? machineName : dsComputerName;
var tcpIpSettings = GetSqlServerTcpIpSettings(instanceName);
if (tcpIpSettings.listenAllIPs) {
for (var j = 0; j < tcpIpSettings.ipSettings.item("IPAll").length; j++) {
try {
dataSource = GetDataSource(targetName, tcpIpSettings.ipSettings.item("IPAll")[j]);
return GetAndCheckConnection(driverName, dataSource, databaseName, "", 10, machineName, instanceName);
} catch(ex) {
lastError = ex;
errorMessageColl.push("Connection to data source '" + dataSource + "' failed: " + ex.message);
}
}
} else {
var ipArr = (new VBArray(tcpIpSettings.ipSettings.Keys())).toArray();
var upc = new UniqueCollection();
for (var i = 0; i < ipArr.length; i++) {
if (!upc.exists(tcpIpSettings.ipSettings.item(ipArr[i])[0])) {
upc.put(tcpIpSettings.ipSettings.item(ipArr[i])[0]);
try {
dataSource = GetDataSource(targetName, tcpIpSettings.ipSettings.item(ipArr[i])[0]);
return GetAndCheckConnection(driverName, dataSource, databaseName, "", 10, machineName, instanceName);
} catch(ex) {
lastError = ex;
errorMessageColl.push("Connection to data source '" + dataSource + "' failed: " + ex.message);
}
}
}
if (!useFqdn) {
for (var i = 0; i < ipArr.length; i++) {
var portArr = tcpIpSettings.ipSettings.item(ipArr[i]);
for (var j = 0; j < portArr.length; j++) {
try {
dataSource = GetDataSource(ipArr[i], tcpIpSettings.ipSettings.item(ipArr[i])[j]);
return GetAndCheckConnection(driverName, dataSource, databaseName, "", 10, machineName, instanceName);
} catch(ex) {
lastError = ex;
errorMessageColl.push("Connection to data source '" + dataSource + "' failed: " + ex.message);
}
}
}
}
}
}
throw new Exception("Cannot connect to the target Sql Server instance. Connection log:\n" + errorMessageColl.join("\n"), lastError);
}
//#Include File:SetSQL2008DBState.js
//Copyright (c) Microsoft Corporation. All rights reserved.
// Arguments (3)
// Arg 0: SQL Connection String
// Arg 1: SQL Database Name
// Arg 2: State to set to (valid SQL state e.g. Offline or Online)
var ScriptName = "Set SQL 2008 DB State";
var ADOConnectionTimeout = 30
// Failure Conidtions
var SCRIPT_ARG_FAILURE = -1;
var SCRIPT_ARG_FAILURE_MSG = "Invalid arguments passed to script";
var SCRIPT_CONNECT_FAILURE = -2;
var SCRIPT_CONNECT_FAILURE_MSG = "Could not connect to SQL";
var scriptArgs = WScript.Arguments;
if (scriptArgs.Length == 6) {
SetDBState(scriptArgs(0), scriptArgs(1), scriptArgs(2), scriptArgs(3), scriptArgs(4), scriptArgs(5));
}
function EscapeDBName(strValue) {
return strValue.replace(/]/g, "]]");
}