一、前言
最近開始在CSDN上回答一些關於數據庫的問題,發現sqlserver占比挺高,或許現在學校里教的就是這個數據庫吧。但sqlserver有些語法和ORACLE不一樣,有些sql得不到驗證,我就打算自己裝個sqlserver的docker測試一下,可是當我使用navicat去連接sqlserver時,報錯了
[IM002] [Microsoft][ODBC 驅動程序管理器] 未發現數據源名稱並且未指定默認驅動程序
二、網上的方案
網上很容易搜到這個問題的答案,就是進入navicat的安裝目錄,找到sqlncli_x64.msi,安裝即可。
但是!
按照那些教程安裝后,你會發現,報錯變成了這樣
三、初步分析
首先我確保了前面的配置沒有填錯,sqlserver的服務器地址和ip是用逗號分隔的
然后我注意到了安裝navicat自帶的sqlncli_x64.msi時,上面顯示的是"SQL Server 2008 Native Client"
莫非是版本問題?於是我去找了下sqlserver的驅動,msodbcsql.msi這個包是odbc的,結果安裝上去沒識別出來。
由於當時只是要驗證一個sql,我就先在網上找了個在線數據庫的網站測了,然后之后又忙着做其他事,忘了。
然后今天2021-12-22,我發現CSDN有人在問這個問題,也是navicat連不上sqlserver,然后下面一堆回復說自己也連不上。我意識到這個問題可能的確沒人給出最新版的解決方案,所以就花了點時間研究。
四、正式分析
首先我以關鍵字"SQL Server Native Client"在bing上搜索,得到
結合上面兩個內容,基本可以確定,11版本的客戶端應該是可以連接sqlserve2019的,而且我前面的報錯是10版本的客戶端報出來的,那么現在的問題就是,去哪下這個11版本的客戶端,或者是不是有更新的客戶端。
根據上面一張圖的頁面里,得到一個這樣的鏈接
https://docs.microsoft.com/en-us/sql/relational-databases/native-client/applications/support-policies-for-sql-server-native-client?view=sql-server-ver15
打開,一路看下去,相關內容
點進去第一個(這篇文章竟然是2021年9月22號的)
這里說的是SQLSERVER2016版本自帶客戶端,但我肯定不會去下那個龐然大物。點"see SQL Server Native Client"進去,會告訴你不要用這玩意了,建議改用OLE DB的
但是如果去下載安裝OLE DB版本的,你會發現NAVICAT里識別不出來。
所以回到上一頁,看這句
You can also get sqlncli.msi from the SQL Server 2012 Feature Pack web page. To download the most recent version of the SQL Server Native Client, go to Microsoft® SQL Server® 2012 Feature Pack.
最新版本的客戶端在sqlserver2012里面,點擊鏈接進去,點download,選擇體積大一點的這個sqlncli.msi下載
安裝好后,在navicat的連接編輯頁面中,出現了11版本的驅動
選擇它,然后測試
完美解決,如果有彈幕,此時應該滿屏的氫氧根離子了吧 ohohohohohohoh~
- 本文作者: DarkAthena
- 本文鏈接: https://www.darkathena.top/archives/navicat-2-sqlserver2019-error
- 版權聲明: 本博客所有文章除特別聲明外,均采用CC BY-NC-SA 3.0 許可協議。轉載請注明出處!