CORRECÇÃO: Erro de conversão de dados sem suporte ocorre quando você usa um carimbo de hora nulo no JDBC

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 827221
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Quando você tenta recuperar um valor nulo do carimbo de data/hora de um objeto ResultSet com o driver do Microsoft SQL Server 2000 para JDBC, você receberá a seguinte mensagem de erro:
[Microsoft][SQLServer driver do 2000 para JDBC]Conversão de dados sem suporte
Causa
Este erro ocorre quando você usa o método getTimestamp que leva um objeto de Calendário como um parâmetro de entrada.
Resolução
Um hotfix suportado agora está disponível da Microsoft, mas destina-se somente a corrigir o problema descrito neste artigo. Aplique-o somente nos sistemas que apresentarem esse problema específico. Esta correcção poderá submetida a testes adicionais. Portanto, se você não tiver sido gravemente afetado por esse problema, recomendamos que você aguarde o próximo service pack que contém esse hotfix.

Para resolver esse problema imediatamente, contate o Atendimento Microsoft para obter o hotfix. Para obter uma lista completa de telefones do Atendimento Microsoft e informações sobre os custos de suporte da, visite o seguinte site: Observação Em alguns casos, as taxas cobradas pelas ligações para chamadas de suporte podem ser canceladas se um profissional de suporte da Microsoft determinar que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados a questões e problemas que não se qualificam à atualização específica em questão de suporte adicionais.A versão em inglês dessa correção apresenta os atributos de arquivo (ou posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas na acordo hora universal coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.
The Windows version of this fix has the following properties:   Date         Time   Version            Size    File name   --------------------------------------------------------------   04-Mar-2003  00:51  2.2.0032          286,720  Msbase.jar   04-Mar-2003  00:51  2.2.0032           67,041  Mssqlserver.jar   04-Mar-2003  00:51  2.2.0032           58,903  Msutil.jar                                           The Unix-based version of this fix has the following properties:   Date         Time   Version            Size    File name   --------------------------------------------------------------   08-Apr-2003  18:53  2.2.0032          286,720  Msbase.jar   08-Apr-2003  18:53  2.2.0032           67,041  Mssqlserver.jar   08-Apr-2003  18:53  2.2.0032           58,903  Msutil.jar                                         Note Although the file dates are different for each operating system that is listed, internally the files are exactly the same. The best way to determine the version of the driver that you are using is to use the getDriverVersion method of the DatabaseMetaData interface.
Como Contornar
Use a versão do método getTimestamp que não tem um objeto de Calendário como um parâmetro de entrada. Consulte os comentários no código de exemplo neste artigo para obter mais informações.
Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo.
Mais Informações
A versão do driver JDBC (2.2.0032) que corrige esse problema também contém a correção de outra. Para obter informações adicionais sobre outra correção no 2.2.032 versão do driver JDBC, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
817419CORRECÇÃO: String parâmetros de saída truncados a 4000 caracteres com JDBC

Etapas para reproduzir o problema

  1. Use o seguinte SQL para criar uma tabela no banco de dados SQL Server:
    CREATE Table JVER1timestamp (K1INT INTEGER NOT NULL,FTSTAMP DATETIME)
  2. Inserir dados de exemplo com o seguinte código SQL:
    INSERT INTO JVER1timestamp values (1, NULL)INSERT INTO JVER1timestamp values (2, getdate())
  3. Compile and run the following Java code to reproduce the problem:
    import java.sql.*;import java.util.Calendar;public class TimeStampCalendar{		public static void main(String[] args) 	{		try 		{			// Get a connection			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");			// note: modify connection to reflect local database name, user name, and password                  			Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://servername:1433;DatabaseName=pubs", "uid", "pwd");			Statement stmt = null; 			stmt = conn.createStatement();			//execute statement						ResultSet rs = null;			rs= stmt.executeQuery("select FTSTAMP from JVER1timestamp order by K1INT");			while(rs.next())			{			//System.out.println(rs.getTimestamp(1)); //this version of getTimestamp does not reproduce the error				System.out.println(rs.getTimestamp(1,Calendar.getInstance())); 			}					}		catch (Exception e) 		{			System.out.println(e.getMessage());		}	}}
    The following exception error and call stack occurs:
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported data conversion.        at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)        at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)        at com.microsoft.jdbc.base.BaseData.unsupportedConversion(Unknown Source)        at com.microsoft.jdbc.base.BaseData.getTimestamp(Unknown Source)        at com.microsoft.jdbc.base.BaseResultSet.getTimestamp(Unknown Source)        at TimeStampCalendar.main(TimeStampCalendar.java:24)

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 827221 - Última Revisão: 12/08/2015 04:25:12 - Revisão: 1.2

Microsoft SQL Server 2000 Driver for JDBC

  • kbnosurvey kbarchive kbmt kbqfe KB827221 KbMtpt
Comentários
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)