Declaraciones no válidas con respectivo mensaje de error (ejemplos).

Declaraciones no válidas con respectivo mensaje de error (ejemplos).

tengo que usarbcpherramienta de línea de comandos para exportar datos desde unservidor SQLbase de datos a un archivo en un servidor Red Hat. Estoy (aparentemente) usando declaraciones válidas perobcpno está produciendo ningún tipo de producción/resultados. Sin embargo, cuando ejecuto declaraciones con parámetros faltantes o no válidos, muestra el error respectivo. Estoy buscando el motivo de este problema (por ejemplo, instalación defectuosa, mal uso debcp, falta de permisos o cualquier otro conflicto conocido) y cómo solucionarlo.


declaración bcp:

bcp fully_qualified_table_name out ./data.txt -c -S server -U user -P password

uso de bcp:

usage: /opt/microsoft/bin/bcp {dbtable | query} {in | out | queryout | format} datafile
  [-m maxerrors]            [-f formatfile]          [-e errfile]
  [-F firstrow]             [-L lastrow]             [-b batchsize]
  [-n native type]          [-c character type]      [-w wide character type]
  [-N keep non-text native] [-q quoted identifier]
  [-t field terminator]     [-r row terminator]
  [-a packetsize]           [-K application intent]
  [-S server name or DSN if -D provided]             [-D treat -S as DSN]
  [-U username]             [-P password]
  [-T trusted connection]   [-v version]             [-R regional enable]
  [-k keep null values]     [-E keep identity values]
  [-h "load hints"]         [-d database name]

versión bcp:

BCP - Bulk Copy Program for Microsoft SQL Server.
Copyright (C) Microsoft Corporation. All Rights Reserved.
Version: 11.0.2270.0

Versión de SQL Server ( SELECT @@VERSION):

Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
   May 14 2014 18:34:29
   Copyright (c) Microsoft Corporation
   Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

Distribución:

Red Hat Enterprise Linux 6.7 (KornShell).

Declaraciones no válidas con respectivo mensaje de error (ejemplos).

bcp THAT_TUB_ACE.oh_nerd.table_name out ./data.txt -c -S sr._bear -U you_sr. -P pass_sword

    SQLState = S1T00, NativeError = 0
    Error = [unixODBC][Microsoft][ODBC Driver 11 for SQL Server]Login timeout expired
    SQLState = 08001, NativeError = 11001
    Error = [unixODBC][Microsoft][ODBC Driver 11 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.
    SQLState = 08001, NativeError = 11001
    Error = [unixODBC][Microsoft][ODBC Driver 11 for SQL Server]TCP Provider: Error code 0x2AF9

...

bcp fully_qualified_table_name ./data.txt -c -S valid_server -U valid_user -P bad_word

    bcp fully_qualified_table_name out ./data.txt -c -S valid_server -U valid_user -P bad_word
    SQLState = 28000, NativeError = 18456
    Error = [unixODBC][Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Login failed for user 'valid_user'.

RESUMEN.

El objetivo es generar un archivo de datos usando la siguiente sintaxis (o similar):

bcp fully_qualified_table_name out ./data.txt -c -S server -U user -P password

Los hechos son:

  • Al ejecutar un válidobcpdeclaración no hay nada en la ventana (sin salida) y no se crea ningún archivo de datos.
  • No puedo usar la opción -T(conexión confiable usando seguridad integrada) parabcpentonces tengo que especificar elservidor, usuario y contraseña.
  • Ya probé queryoutla opción en una mesa pequeña muy simple, pero todavía no tuve suerte.
  • Las credenciales son válidas, las probé con éxito usando sqlcmdlo siguiente: sqlcmd -S server -U user -P password -Q 'SELECT * FROM really_small_table'.
  • Elbcpdeclaraciones bajo"Declaraciones no válidas con el respectivo mensaje de error (ejemplos)"La sección de esta pregunta son solo ejemplos de declaraciones no válidas para mostrar quebcpEn realidad hace algo pero da los resultados esperados.

Respuesta1

Lo que encontré en mi plataforma Debian es que el proceso de instalación de Microsoft ODBC se realizó libodbc.soen /usr/lib64. Esta no es una ubicación esperada para las bibliotecas y bcpno puedo encontrarla. Pero en lugar de decirle que no puede encontrar una biblioteca necesaria, simplemente sale.

Solución para Debian. Tu situación debería ser similar.

  1. Encuentre dónde ha puesto el procedimiento de instalación libodbc.so:

    find / -type f -name libodbc.so
    
  2. Agregue su directorio a un nuevo archivo /etc/ld.so.conf.d/odbc.conf. He inventado el nombre y en mi sistema /etc/ld.so.conf.destá incluido desde /etc/ld.so.conf:

    # Required but not documented by MS ODBC installation for SQL Server
    /usr/lib64
    
  3. Ejecute ldconfigpara actualizar la lista de ubicaciones de bibliotecas

  4. Reintentar el bcpcomando

Necesitará ser root para realizar los pasos 2 y 3. Supongo que no es gran cosa dado que logró instalar las bibliotecas de SQL Server.

información relacionada