2013-01-02 55 views
1

我正在嘗試使用Sqoop連接到Microsoft SQL Server。我已經按照Sqoop ConnectorJDBC Driver的說明安裝了Microsoft的JDBC驅動程序。接下來,我嘗試列出服務器上的數據庫。我試過以下命令:Sqoop連接到MS SQL超時

sqoop list-databases --connect 'jdbc:sqlserver://<HOST>' --username <USER> --password <PASS> 
sqoop list-databases --connect 'jdbc:sqlserver://<HOST>;username=<USER>;password=<PASS>' 
sqoop list-databases --connect 'jdbc:sqlserver://<HOST>;username=<USER>;password=<PASS>' --username <USER> --password <PASS> 

這些命令中的每一個都會產生相同的錯誤消息。

13/01/02 10:44:52 ERROR sqoop.ConnFactory: Error loading ManagerFactory information from file <MY SQOOP DIRECTORY>/conf/managers.d/mssqoop-sqlserver: java.io.IOException: the content of connector file must be in form of key=value 
at org.apache.sqoop.ConnFactory.addManagersFromFile(ConnFactory.java:219) 
at org.apache.sqoop.ConnFactory.loadManagersFromConfDir(ConnFactory.java:294) 
at org.apache.sqoop.ConnFactory.instantiateFactories(ConnFactory.java:85) 
at org.apache.sqoop.ConnFactory.<init>(ConnFactory.java:62) 
at com.cloudera.sqoop.ConnFactory.<init>(ConnFactory.java:36) 
at org.apache.sqoop.tool.BaseSqoopTool.init(BaseSqoopTool.java:200) 
at org.apache.sqoop.tool.ListDatabasesTool.run(ListDatabasesTool.java:44) 
at org.apache.sqoop.Sqoop.run(Sqoop.java:145) 
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181) 
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220) 
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229) 
at org.apache.sqoop.Sqoop.main(Sqoop.java:238) 
at com.cloudera.sqoop.Sqoop.main(Sqoop.java:57) 

13/01/02 10:45:08 ERROR manager.CatalogQueryManager: Failed to list databases 
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host <HOST>, port 1433 has failed. Error: "connect timed out. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.". 
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1033) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700) 
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842) 
at java.sql.DriverManager.getConnection(DriverManager.java:579) 
at java.sql.DriverManager.getConnection(DriverManager.java:221) 
at org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:665) 
at org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:52) 
at org.apache.sqoop.manager.CatalogQueryManager.listDatabases(CatalogQueryManager.java:56) 
at org.apache.sqoop.tool.ListDatabasesTool.run(ListDatabasesTool.java:49) 
at org.apache.sqoop.Sqoop.run(Sqoop.java:145) 
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181) 
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220) 
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229) 
at org.apache.sqoop.Sqoop.main(Sqoop.java:238) 
at com.cloudera.sqoop.Sqoop.main(Sqoop.java:57) 

我已經連接到使用Microsoft SQL Server Management Studio中,以確保數據庫的數據庫操作和主機/用戶名/密碼是正確的。此外,我已確保端口是開放的,並且MSSQL在另一端具有以下功能。

sudo nmap -sS -p 1433 <HOST> 

Starting Nmap 5.21 (http://nmap.org) at 2013-01-02 11:04 PST 
Nmap scan report for <HOST> (<HOST IP>) 
Host is up (0.00070s latency). 
rDNS record for <HOST IP: <HOST FQDN> 
PORT  STATE SERVICE 
1433/tcp filtered ms-sql-s 

Nmap done: 1 IP address (1 host up) scanned in 0.33 seconds 

有關我應該從哪裏出發的建議?我一直無法找到有關此錯誤的任何文檔。謝謝

我目前正在嘗試使用FreeTDS的OSQL驗證SQL服務器是否可以訪問。將用我的發現更新這篇文章。

+0

Followup:我已經確定,當使用不正確的用戶名/密碼時,它將立即失敗,這意味着它實際上以某種方式與服務器交互。但是,使用正確的用戶名/密碼時,SQL Profiler不會顯示任何連接。 – tgrosinger

回答

1

經過多次搜索並與很多人交談之後,我確定此問題是由端口被阻止引起的。我仍然不能100%確定爲何發生這種錯誤。如果我嘗試使用無效的用戶名或密碼,它會成功告訴我他們無效。正是在進行實際查詢時,端口受到限制。最有可能使用不同的端口。