나는 사용해야한다bcp데이터를 내보내는 명령줄 도구SQL 서버데이터베이스를 Red Hat 서버의 파일로 변환합니다. 나는 (분명히) 유효한 진술을 사용하고 있지만bcp어떤 종류의 출력/결과도 생성되지 않습니다. 그러나 누락되거나 잘못된 매개변수가 포함된 명령문을 실행하면 해당 오류가 표시됩니다. 이 문제의 원인을 찾고 있습니다(예: 설치 결함, 잘못된 사용).bcp, 권한 부족 또는 기타 알려진 충돌) 및 해결 방법.
bcp 문:
bcp fully_qualified_table_name out ./data.txt -c -S server -U user -P password
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]
bcp 버전:
BCP - Bulk Copy Program for Microsoft SQL Server.
Copyright (C) Microsoft Corporation. All Rights Reserved.
Version: 11.0.2270.0
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)
분포:
Red Hat Enterprise Linux 6.7 (KornShell).
해당 오류 메시지가 포함된 잘못된 설명(예)
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'.
요약.
목표는 다음 구문(또는 유사한 구문)을 사용하여 데이터 파일을 생성하는 것입니다.
bcp fully_qualified_table_name out ./data.txt -c -S server -U user -P password
사실은 다음과 같습니다:
- 유효한 실행 시bcp명령문에는 창에 아무것도 없고(출력 없음) 데이터 파일이 생성되지 않습니다.
-T
옵션 (통합 보안을 사용한 신뢰할 수 있는 연결)을 사용할 수 없습니다 .bcp그래서 나는서버, 사용자 및 비밀번호.queryout
이미 매우 간단한 작은 테이블에서 옵션을 시도했지만 여전히 운이 없습니다.sqlcmd
자격 증명은 유효합니다. 다음과 같은 방법을 사용하여 성공적으로 테스트했습니다sqlcmd -S server -U user -P password -Q 'SELECT * FROM really_small_table'
.- 그만큼bcp아래의 진술"해당 오류 메시지가 포함된 잘못된 설명(예)"이 질문의 섹션은 다음을 보여주는 잘못된 진술의 예일 뿐입니다.bcp실제로 뭔가를 수행하지만 예상된 결과를 제공합니다.
답변1
내 Debian 플랫폼에서 발견한 것은 Microsoft ODBC 설치 프로세스 libodbc.so
가 /usr/lib64
. 이곳은 도서관이 있을 것으로 예상되는 위치가 아니어서 bcp
찾을 수 없습니다. 그러나 필요한 라이브러리를 찾을 수 없다고 말하는 대신 단순히 종료됩니다.
데비안용 솔루션. 귀하의 상황도 비슷할 것입니다.
설치 절차의 위치를 찾으십시오
libodbc.so
.find / -type f -name libodbc.so
해당 디렉토리를 새 파일에 추가합니다
/etc/ld.so.conf.d/odbc.conf
. 내가 그 이름을 만들었고 내 시스템에는/etc/ld.so.conf.d
다음이 포함되어 있습니다/etc/ld.so.conf
.# Required but not documented by MS ODBC installation for SQL Server /usr/lib64
ldconfig
라이브러리 위치 목록을 업데이트하려면 실행하세요 .bcp
명령 을 다시 시도하십시오.
2단계와 3단계를 수행하려면 루트여야 합니다. SQL Server 라이브러리를 설치했다면 이는 큰 문제가 아니라고 생각합니다.