2013-06-11 190 views
0

我無法弄清楚連接到SQL Server 2012本地實例LocalDB或SQLExpress。我在路徑中有Microsoft的sqljdbc4.jar驅動程序。我使用Mule 3.3.1 CE;我還沒有EE可用。Mule連接到SQL Server 2012

我嘗試使用LocalDB沒有成功。我發現一些帖子指出LocalDB可能與MS的驅動程序不兼容,並推薦切換到SQLExpress。但是,仍然沒有運氣。

我能夠使用SQLCMD(例如「sqlcmd -S DEFTA-1 \ SQLEXPRESS」)和SSMS使用我的流中的憑據連接到我的SQLExpress實例。

我的數據源和連接器的結構是如下所示:

<spring:beans> 
    <spring:bean id="SQLServer_DataSource" name="Bean" class="org.enhydra.jdbc.standard.StandardDataSource"> 
     <spring:property name="driverName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/> 
     <spring:property name="url" value="jdbc:sqlserver://DEFTA-1\SQLEXPRESS:1433;user=test_user;password=test_pwd;"/> 
    </spring:bean> 
</spring:beans> 

<jdbc:connector name="Database" dataSource-ref="SQLServer_DataSource" 
    validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database"> 
    <jdbc:query key="InsertRecord" value="insert into eai.dbdusage (id,name) values (1,'hello world')"/> 
</jdbc:connector> 

我試圖改變服務器規範使用雙反斜槓在服務器名稱,離開關閉的端口號,使用& #92;而不是反斜槓......沒有任何作用。我也試過類似「jdbc:sqlserver:// localhost:1433; instanceName = DEFTA-1 \ SQLEXPRESS ...」和「jdbc:sqlserver:// localhost:1433; instanceName = SQLEXPRESS ...」

例外情況是:

無法獲取URL jdbc的連接:sqlserver:// DEFTA-1 \ SQLEXPRESS:1433; user = test_user; password = test_pwd; :與主機DEFTA-1,端口1433的TCP/IP連接失敗。錯誤:「連接被拒絕:connect。驗證連接屬性確保SQL Server的一個實例正在主機上運行,​​並且在端口上接受TCP/IP連接請確保與端口的TCP連接沒有被防火牆阻止「。

有什麼我需要做的,以啓用SQL Server端的連接,或者我需要對我的配置進行一些更改?

回答

0

您是否在SQL Server上啓用了TCP/IP訪問? http://msdn.microsoft.com/en-us/library/hh231672.aspx

+0

是的,我已經經歷了這些步驟爲的SQLExpress實例了。 – Tad

+0

我也轉移到另一臺機器(DEFTA01-M4600),其中SQLExpress以前不存在,因此我進行了全新安裝。我在那裏啓用了TCP/IP。我在那裏創建了一個測試用戶(eai_svc)。我測試了我可以使用SQLCMD連接到數據庫,它工作。進入Mule並使用值「jdbc:sqlserver:// DEFTA01-M4600 \ SQLEXPRESS:1433; user = eai_svc; password = eaiteam;」對於數據源上的url屬性,我得到了同樣的失敗。 – Tad

+0

這並沒有解決我的問題。 – SchmitzIT

0

我進入netstat並注意到sqlserver.exe正在偵聽端口63304.更改爲數據源字符串中的端口號允許我連接。

我對此感到困惑,因爲我認爲SQL Server默認總是在端口1433上(乾淨安裝),但這個工作。

1

這個職位真的幫了我:http://java.dzone.com/articles/six-possible-solutions-jdbc-%E2%80%93

更具體點#3

3,如果您仍然面臨着問題,那麼請檢查註冊表◦Go開始菜單=>運行=>註冊表編輯器 ◦轉到HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ MSSQL10。[Instance Name] \ MSSQLServer \ SuperSocketNetLib \ Tcp \ IPAll並檢查關鍵TcpDynamicPorts的值。我們必須考慮該端口號,而不是默認端口1433

在你的連接使用是在這裏,而不是1433年對我來說是26625

+0

這對我有效。謝謝! – SchmitzIT

0

我得到了同樣的問題,去掉了端口值,現在我能夠使連接

試試這個:

jdbc:sqlserver://${mssql.server};databaseName=${mssql.database};user=${mssql.user};password=${mssql.password}