..png)
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é
queryout
la 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
sqlcmd
lo 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.so
en /usr/lib64
. Esta no es una ubicación esperada para las bibliotecas y bcp
no 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.
Encuentre dónde ha puesto el procedimiento de instalación
libodbc.so
:find / -type f -name libodbc.so
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.d
está incluido desde/etc/ld.so.conf
:# Required but not documented by MS ODBC installation for SQL Server /usr/lib64
Ejecute
ldconfig
para actualizar la lista de ubicaciones de bibliotecasReintentar el
bcp
comando
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.