Хотя у Вас не должно быть проблемы при выполнении экземпляра 2005 года механизма базы данных около экземпляра 2008 года, инструменты установлены в общий каталог, таким образом, у Вас не может быть двух версий установленных инструментов. К счастью, инструменты 2008 назад совместимы. Поскольку мы говорим, я использую 2008 SSMS и Профилировщика 2008 для управления моими 2 005 экземплярами Экспресса. Работает отлично.
Прежде, чем установить инструменты 2008, необходимо удалить любого и все "общие" компоненты с 2005. Попытайтесь идти в Ваш Добавлять/Удалять панель управления программ, найдите Microsoft SQL Server 2005 и нажмите "Change". Тогда выберите "Workstation Components" и удалите все туда (это не удалит Ваш механизм базы данных).
я полагаю, что установщик 2008 года также имеет опцию обновить совместно используемые компоненты только. Вы могли бы попробовать это.Удачи!
The Login API call returns a sandbox element in the returned LoginResult structure that indicates if its a sandbox environment or not, from the WSDL.
<complexType name="LoginResult">
<sequence>
<element name="metadataServerUrl" type="xsd:string" nillable="true"/>
<element name="passwordExpired" type="xsd:boolean" />
<element name="sandbox" type="xsd:boolean"/>
<element name="serverUrl" type="xsd:string" nillable="true"/>
<element name="sessionId" type="xsd:string" nillable="true"/>
<element name="userId" type="tns:ID" nillable="true"/>
<element name="userInfo" type="tns:GetUserInfoResult" minOccurs="0"/>
</sequence>
</complexType>
Судя по ответам, у Salesforce нет системного объекта, который мог бы сказать мне, работает ли мой код Apex в производственной среде или в среде песочницы.
Я собираюсь действовать, основываясь на следующих предположениях:
Текущий идентификатор организации можно найти в системе .
Я думаю, что самый простой способ сделать это - создать пользовательский объект в Salesforce, а затем сохранить в нем значение, указывающее песочницу или производство. Затем ваш код Apex может запросить этот объект. Одно из предложений - использовать статические конструкторы Apex для загрузки этой информации и кэширования ее для запроса.
Еще одна мысль, которую я имел (но не хочу предлагать), - это использовать внешнюю службу для определения того, где выполняется ваш код Apex. Это, вероятно, будет сложно осуществить, поскольку каждый раз, когда изменяется ферма серверов SalesForce, происходит изменение вашего кода, но я просто подумал, что выброшу это там.
HttpRequest req = new HttpRequest();
req.setEndpoint('http://www.whatismyip.com/automation/n09230945.asp');
req.setMethod('GET');
Http http = new Http();
HTTPResponse res = http.send(req);
System.debug(res.getBody());
Вы должны добавить " http : //www.whatismyip.com "в настройки удаленного сайта, чтобы это работало (Настройка> Настройка администрирования> Контроль безопасности> Настройки удаленного сайта).
Здесь я выполняю некромантию, и ответ уже принят, но, возможно, кому-то это пригодится ...
Используйте одно из этих полей слияния на своей странице Visualforce / S-Control:
{!$Api.Enterprise_Server_URL_180}, {!$Api.Partner_Server_URL_180}, {!$Api.Session_ID}
Вы можете легко извлечь из них идентификатор организации.
В коде Apex: UserInfo.getOrganisationId ()