MS SQL Ошибка 14274
ared
После переименования сиквел сервера, при операциях с джобами имеем ошибку:
Cannot add,update,Delete a Job that originated from an MSX Server.

Согласно сапорта микрософта данная ошибка возникает из-за того, что в базе сохраняется имя сервера( вместо локал). Сапорт нам предлагает: переименовать обратно, заскриптовать джобы, дропнуть джобы, дать новое имя серверу и накатить скрип с джобами.
Не очень гармоничное решение, намного проще:[SQL]
USE [msdb]
UPDATE [dbo].[sysjobs]
SET [originating_server]='NEW_NAME_SERVER'
Tags:

MS SQL Linked Server to Oracle
ared
Создал в мсскюл линкед сервер, OLE DB провайдер использовал оракловый не из набора мдак.


1. OLE/DB Provider 'OraOLEDB.Oracle' IUnknown::QueryInterface returned 0x80070005:  Access denied.
Если выполнять из под аутентификации видны.
2. Non-interface error:  CoCreate of DSO for OraOLEDB.Oracle returned 0x80040154
Если использовать стандартного пользователя сиквела (например sa)
3. OLE/DB Provider 'OraOLEDB.Oracle' ICommandText::Execute returned 0x80040155


Помогла статья с сапорта микрософт:
How to set up and troubleshoot a linked server to an Oracle database in SQL Server

В ней есть описание ошибки: Error 7302: Could not create an instance of OLE DB provider 'MSDAORA'

В реестре создаем раздел с именем OLE DB провайдера,

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\OraOLEDB.Oracle
В вновь созданном разделе создаем параметр (DWORD) AllowInProcess со значением 1

После наслаждаемся работой.

Web service
ared
Yii framework

Error на клиенте:
DTD not supported by SOAP
или
Error Featching http header
В  лога апачи: http://www.livejournal.ru/index.php/WebSrv/quote/ws/1 HTTP 500 Time out


Если открыть в браузере то error:
SoapServer::SoapServer(http://www.livejournal.ru/index.php/WebSrv/quote): failed to open stream: Connection timed out


Проблема из скрытия apache за НАТом., смотрим
CWebService.php
155: $server=new SoapServer($this->wsdlUrl,$this->getOptions());

Сервер создается по урл, www.livejournal.ru, соотвественно DNS преобразует имя www.livejournal.ru в 8.8.8.8, а наш сервер натирован  его ip 192.168.1.4.

Проблема решается просто:
на сервере в  /etc/hosts
192.168.1.4 www.livejournal.ru livejournal.ru
Tags: ,

(no subject)
ared
Под крышку от 2000х3500  
O -- 95
OO -- 110

С тентом ракушкой 1.8х4.0   ОО  150-160

высота погрузки/ клиренс
  57/35 R-13
  60/38 R-14
высота погрузки при расположении колес под платформой
  75 R-13
  80 R-14

машина ширина высота
сузи     1,8 / 1,7
туарег   1,94 / 1,7
амарок  1,95 / 1,8


Выводы,

Ширина прицепа 1,8 в притык надо 1,85
 При смене снегохода уже не воткнуть так как ямаха 1,2 а артик кат 1,32 нехватает  (120 мм), Если менять оба ски ду саммит 800 Х у него ширина 1081-1126 мм, экономия 8 см и 5 см при ширине даст поставить два снегохода. Прицеп можно спрятать за силуэт машины, что улучшит аэродинамику, но все равно средне за счет прямых углов даст слабый эффект.

ЗАМЕНА Саней волокуш, на чтоб по ширине помещались, мах 1800.

Два метра ширина, все влазит с запасом, однако габаритные размеры близки в не габариту что в условиях русской зимы является существенным минусом, условия разъезда со встречным транспортом, более широкая дорожная колея на бездорожье прицеп будет бить собственную  колею отличную от колеи тягача.
Спрятать колеса под платформу, надо двух осную подвеску, высота погрузки от 750 мм, самосвальный уже не сделать, надо съезд-задний борт, высокий силуэт полное отсутствие аэродинамики. 

Длинна ??? нужен промер по длине.


Угол скоса для тента 22 или 45 (только не 30)

Как баги привращаются в фичи.
ared

Столкнулся с проблемой, при тестировании pdo_oci
PHP Warning: PDOStatement::fetchAll() : column 0 data was too large for buffer and was truncated to fit it.

$dbh = new PDO('oci:dbname=orcl;charset=utf8', 'user', 'pass');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$sth=$dbh->prepare('SELECT \'ПРИВЕТ\' FROM DUAL');
$sth->execute();
$result = $sth->fetchAll(2);
var_dump($result);


Ожидаем результат "ПРИВЕТ" однако имеем только "ПРИ" 

проверяем в OCI8

$conn = oci_connect('orcl', 'user', 'pass');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT \'ПРИВЕТ\' FROM DUAL');
oci_execute($stid);
$nrows = oci_fetch_all($stid, $res);
var_dump($res);

Ожидаеммы  и полученный результат "ПРИВЕТ".

Как бы все ясно проблема в PDO пытаемся лечить, одно из достоинств опенсоурс наличие исходников, читаем. И находим удивительную фичу  OCI8 работает потому что в нем бага:
если глянуть OCI8 php_oci_statement_execute
То  там размер буфера для данных с OCI_ATTR_DATA_SIZE,
И далее перед выделением 
памяти ошибочно (а может и на намерено ) умножается на 3
else {
outcol->storage_size4++; /* add one for string terminator */
}
outcol->storage_size4 *= 3;
dynamic = OCI_DEFAULT;
buf = outcol->data = (text *) safe_emalloc(1, outcol->storage_size4, 0);
memset(buf, 0, outcol->storage_size4);
break;

В PDO_OCI oci_stmt_describe Все корректно оркл сказал 6 значить 6+1

else {
S->cols[colno].datalen = col->maxlen;
}
if (dtype == SQLT_BIN) {
S->cols[colno].datalen *= 3;
}
S->cols[colno].data = emalloc(S->cols[colno].datalen + 1);
dtype = SQLT_CHR;



Тобишь OCI8  вместо 6+1 ошибочно выделил 21=(6+1)*3 байта и мы имеем ожидаемый результат, а PDO_OCI сделал все верно выделил 7 байт и ожидаемый результат обрезан был обрезан. Так как строка в уникоде.   Просто функция OCIAttrGet OCI_ATTR_DATA_SIZE возвращает размер данных в байтах без учета локальной кодировки.

You are viewing ared