Find

Article
· Jul 27 4m read

ODBCログの取得方法(Windows)

これは InterSystems FAQ サイトの記事です。
 

ODBCクライアントからのアクセスでエラーが発生した場合、返ってきたエラーメッセージやコンソールログ上の情報だけでは原因がよくわからない場合があります。

そのような場合にODBCドライバのクライアントログを有効にすることで、エラーについての詳細情報を取得することができます

ODBCログの有効化については以下をご参照ください。

ODBCログの有効化

Windowsの場合は、上記に記載されている通り、2種類のログが取得できます。

  • クライアント・ドライバのログを有効にするには、ODBCデータソースアドミニストレータで使用しているDSNの「ODBCログ」チェックボックスをチェックします。 

 

 

  • ドライバー・マネージャのログを有効にするには、[トレース]タブをクリックして[トレースの開始]ボタンをクリックします。

   

変更の反映にはODBCクライアントアプリケーションを再起動する必要があります。

既定のODBCクライアントログファイル名は IRISODBC.log で、既定の場所は C:¥Users¥Public¥Logs です。

既定のトレースログ名は、SQL.logで、既定の場所は、c:¥Users¥<ユーザー名>AppData¥Local¥Temp¥です。

(すべてのユーザーIDのコンピュータ全体のトレースをチェックしない場合)

複数回ODBCリクエストが実行された場合、上書きではなくログが追記されます。

クライアントのプロセス毎に個別にログを取得することもできます。

クライアントログが正常に取得できている場合、以下の様な内容が書き込まれます。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
	Started At: Tue Mar 25 22:44:02 2025
	Driver Name:	IrisODBC3564.DLL
	Unicode Client Version:	2024.2.0.247.0
	Compiled at:	Jul 16 2024 09:17:19
	ODBC Version:	03.51
	Locale Setting:	Japanese_Japan.932
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
LoadConnect returned: 0x4DBC0000
LoadConnect returned sm_pfnIRISconnectToHostPort: 0x4DBC6750
LoadConnect returned sm_pfnIRISconnectSend: 0x4DBC62B0
LoadConnect returned sm_pfnIRISconnectRecv: 0x4DBC5E70
LoadConnect returned sm_pfnIRISconnectClose: 0x4DBC2CA0
LoadConnect returned sm_pfnIRISconnectGetErrorCode: 0x4DBC34C0
LoadConnect returned sm_pIRISconnectGetErrorText: 0x4DBDC000
LoadConnect returned sm_pfnIRISconnectGetSecurityLevel: 0x4DBC35F0
LoadConnect returned sm_pfnIRISconnectSetSecurityLevel: 0x4DBC6670
LoadConnect returned sm_pfnIRISconnectGetSocketDescriptor: 0x4DBC3610
LoadConnect returned sm_pfnIRISconnectLoginToHostPort: 0x4DBC4AE0
LoadConnect returned sm_pfnIRISconnectGeneratePrincipalName: 0x4DBC3120
LoadConnect returned sm_pfnIRISconnectGetLicenseId: 0x4DBC3530
LoadConnect returned sm_pfnIRISconnectSetTraceFilePtr: 0x4DBC6740
LoadConnect returned sm_pfnIRISconnectGetTSClientName: 0x4DBC3620
LoadConnect returned sm_pfnIRISconnectSetLocalBindings: 0x4DBC64E0
LoadConnect returned sm_pfnIRISconnectSetMode: 0x4DBC6630
LoadConnect returned sm_pfnIRISconnectGetRdlen: 0x4DBC35E0
GetLocalizedResources: (03/25/25-22:44:02:636) Found resources for locale JPN (400) in C:\Program Files\Common Files\InterSystems\IRIS\IrisODBCJPN.DLL
--> ConfigDSNW: (03/25/25-22:44:02:636) hParent = 0x000a1350 request 2
<-- ConfigDSNW: (03/25/25-22:44:11:189) returning 1

 

トレースログが正常に取得できている場合、以下の様な内容が書き込まれます。

 


EXCEL           acec-31b4	ENTER SQLAllocHandle 
		SQLSMALLINT                  1 <SQL_HANDLE_ENV>
		SQLHANDLE           0x0000000000000000
		SQLHANDLE *         0x000002D12FAA60A0
EXCEL           acec-31b4	EXIT  SQLAllocHandle  with return code 0 (SQL_SUCCESS)
		SQLSMALLINT                  1 <SQL_HANDLE_ENV>
		SQLHANDLE           0x0000000000000000
		SQLHANDLE *         0x000002D12FAA60A0 ( 0x000002D11D6A1070)

EXCEL           acec-31b4	ENTER SQLSetEnvAttr 
		SQLHENV             0x000002D11D6A1070
		SQLINTEGER                 200 <SQL_ATTR_ODBC_VERSION>
		SQLPOINTER                 3 <SQL_OV_ODBC3>
		SQLINTEGER                  -6 

 

ログの内容の解析は専門的な知識が必要となりますので、取得後インターシステムズサポートセンターまでお送りください。

Discussion (0)1
Log in or sign up to continue
Article
· Jul 27 1m read

WEBGatewayのサーバー設定項目で、Minimum Server Connections、Maximum Server Connectionsの項目が表示されない

これは InterSystems FAQ サイトの記事です。

「Maximum/Minimum_Server_Connections」の設定で、ApacheのMPM(Multi Processing Module)設定が、prefork になっている場合、Apache ワーカープロセスあたり2つ以上の IRIS/Caché コネクションを設定しても意味がないために、設定自体出来なくなっております。

※ preforkでは1つのプロセスが1つのスレッドを持ちます。

preforkの詳細は以下をご参照ください

MPM prefork/worker/eventの違い

Discussion (0)1
Log in or sign up to continue
Question
· Jul 27

How to Calculate Time Differences in Hours Between Two Timestamps in ObjectScript?

Hi all,

I’m working on a data transformation in IRIS where I need to calculate the difference in hours between two timestamps stored as %TimeStamp.

Example:

Set startTime = "2024-07-12 08:30:00"
Set endTime = "2024-07-12 15:15:00"

I’d like to calculate the number of hours (with decimals, like 6.75) between them. What's the recommended way to do this in ObjectScript? I’ve seen examples using $ZDATETIME, but I’m not sure if that’s the cleanest approach.

Any suggestions or best practices would be appreciated!

Thanks,
Jhonn Marie

3 Comments
Discussion (3)3
Log in or sign up to continue
Article
· Jul 27 2m read

Reviews on Open Exchange - #54

If one of your packages on OEX receives a review you get notified by OEX only of YOUR own package.   
The rating reflects the experience of the reviewer with the status found at the time of review.   
It is kind of a snapshot and might have changed meanwhile.   
Reviews by other members of the community are marked by * in the last column.

I also placed a bunch of Pull Requests on GitHub when I found a problem I could fix.    
Some were accepted and merged, and some were just ignored.     
So if you made a major change and expect a changed review, just let me know.

# Package Review Stars IPM Docker *
1 iris-python-article excellent 6* 6.0   y  
2 iris4word Super Package 6* 6.0 y y  
3 Global-Inspector finally globals + COS + CSP 5.0 y   *
4 iris-telemetry-sample great demo 5.0   y  
5 metabase-iris-driver attractive add-on 5.0   y  
6 templated_email well prepared 5.0 y y  
7 typeorm-iris impressive solution 5.0   y  
8 wsgi-to-zpm great tool 5.0 y y  
9 dc-artisan docker part runs fine 4.8 y y  
10 IrisTest now working as described 4.8 y y  
11 iris-message-search looks friendly 4.7 y y  
12 toolqa incomplete yet 3.8   y  
13 addsearchtable useful idea 3.7 y y  
14 iristest-html a nice idea 3.5 y    
15 PyObjectscript Gen mostly working 3.0      
1 new Comment
Discussion (2)2
Log in or sign up to continue
Article
· Jul 27 4m read

Inovando por uma Elegância Generativa

Público

Aqueles interessados em explorar novos casos de uso da IA Generativa

Compartilha ideias e a lógica por trás do treinamento de IA generativa para reconhecimento de padrões.

Desafio 1 - Simples, mas não simplista

Um desenvolvedor aspira a conceber uma solução elegante para requisitos. O reconhecimento de padrões (como expressões regulares) pode ser resolvido de várias maneiras. Qual delas é a melhor solução de código?

Uma IA pode postular uma solução elegante de reconhecimento de padrões para uma variedade de amostras de dados, do simples ao complexo?

Considere os três valores de string:

  • "AA"
  • "BB"
  • "CC"

A expressão: "2 caracteres alfabéticos" corresponde a todos esses valores e a outros valores intuitivamente semelhantes de forma geral e flexível.

Alternativamente, a expressão: "AA" ou "BB" ou "CC" seria uma forma muito específica de corresponder apenas a estes valores:

Outra forma de resolver seria: "A" ou "B" ou "C", duas vezes.

Desafio 2 - Amostra incompleta

Os problemas de padrões raramente têm todos os exemplos especificados. Uma IA performática precisa aceitar uma amostra limitada e incompleta de linhas de dados e postular uma expressão de reconhecimento de padrões razoável.

Um objetivo de Turing seria atingir a paridade com a inferência humana para um padrão de dados representativos, mas incompletos.

Uma melhor qualidade de processamento de amostras é uma prioridade maior do que expandir a janela de tokens para amostras maiores.

 

Desafio 3 - Aproveitando sequências repetidas

Estendendo o exemplo anterior, para incluir também valores de um único caractere.

  • "A"
  • "B"
  • "C"

Isso parece mais elegante do que especificar TODOS os valores possíveis por extenso.

 if test?1(1"A",1"B",1"C",1"AA",1"BB",1"CC")

 

Desafio 4 - Vício em dados delimitados

Uma necessidade comum, além de padrões generalizados, é resolver dados delimitados. Por exemplo, um formato de número de telefone aleatório:

213-5729-57986

Poderia ser resolvido pela expressão:
3 numéricos, traço, 4 numéricos, traço, 4 numéricos

 if test?3N1"-"4N1"-"4N

Isso pode ser normalizado com a sequência de repetição para:

 if test?3N2(1"-"4)

Essencialmente, isso significa ter uma preferência por especificar explicitamente um delimitador, por exemplo "-", em vez de generalizar os delimitadores como caracteres de pontuação. Assim, a saída gerada deve preferir evitar a supergeneralização, por exemplo:

 if test?3N1P4N1P4N

 

Desafio 5 - Sequências repetidas

Considere números formatados com códigos de prefixo comuns.

O modelo de IA detecta três sequências comuns nos valores e direciona a solução para refletir um interesse nesse recurso:

Nesta ocasião, a IA decidiu gerar uma correspondência de string "13" supérflua.

No entanto, conforme indicado pela ferramenta, o padrão corresponderá a todos os valores fornecidos.

O padrão pode ser facilmente ajustado na descrição de texto livre e regenerado.

Velocidade de inferência

A assistência da Workbench AI com sucesso parcial qualificado pode ser um acelerador para a implementação.

Acima de um certo limite de complexidade, um assistente de IA pode deduzir propostas mais rapidamente do que a análise manual.

Considere a seguinte tentativa de inferência de IA com sucesso parcial qualificado:

O assistente de IA usa o maior número de linhas de dados que consegue encaixar em sua janela de contexto de tokens para processamento, pulando o excesso de linhas de dados.

O número de linhas é quantificado na saída gerada, mostrando como os dados foram truncados para a inferência.

Isso pode ser útil para elevar as linhas de dados preferidas de volta à janela de contexto para um reprocessamento refinado.

 

Esforço de treinamento

ndo como alvo a GPU Nvidia Cuda A10 no Huggingface.

Treinamento de modelo supervisionado.

Estágio Treinamento contínuo da GPU
Protótipo do conjunto de dados de base 4 dias
Conjunto de dados principal 13 dias
Segundo conjunto de dados refinado 2 dias

 

Conclusão

A inferência generativa de disparo único com tamanho de token limitado pode abordar de forma útil a elegância da solução de código discreto na ausência de processamento "chain-of-thought", selecionando o viés do especialista no assunto nos dados de treinamento de base.

Os assistentes de IA podem participar em fluxos de trabalho de solução iterativos.

 

Saiba mais

Experimente a demonstração de tecnologia atualmente hospedada via Huggingface. O símbolo de engrenagem nos botões da demonstração indica onde a geração de IA está sendo empregada.

Demonstração escrita para o público de inglês, francês e espanhol.

Discussion (0)1
Log in or sign up to continue