精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

為什么要使用ODBC連接SQL Server?

數據庫 SQL Server
ODBC 和 JDBC 都提供了一種通用的方式來訪問數據庫,允許開發人員使用標準 SQL 語句來操作各種不同類型的數據庫。ADO.NET則是微軟針對 .NET 平臺開發的數據庫訪問接口,提供了與 ODBC 類似的功能,但更加面向對象,具有更好的性能和可擴展性。

ODBC是什么?

ODBC是什么?我也不知道,用摘抄一個互聯網上的話來解釋:ODBC英文全稱為:Open Database Connectivity。用于在不同的操作系統和數據庫管理系統之間進行數據訪問的標準化接口。它提供了一組函數和API,使得應用程序可以通過統一的方式訪問不同類型的數據源。大多數數據源都有適用的 ODBC 驅動程序。

那么ODBC和ADO.NET以及JDBC的關系是什么?讓GPT來回答一下吧:

ODBC(Open Database Connectivity)和ADO.NET(ActiveX Data Objects .NET)是 Microsoft 開發的數據庫訪問接口。而 JDBC(Java Database Connectivity)則是由 Sun Microsystems 開發的 Java 數據庫訪問標準。

ODBC 和 JDBC 都提供了一種通用的方式來訪問數據庫,允許開發人員使用標準 SQL 語句來操作各種不同類型的數據庫。ADO.NET則是微軟針對 .NET 平臺開發的數據庫訪問接口,提供了與 ODBC 類似的功能,但更加面向對象,具有更好的性能和可擴展性。

為什么要使用ODBC而不使用EFCore?

我也想使用EFCore或者其他的ORM框架,但是走不通!首先場景是這樣子的,我們業務中有一個地方需要去連接甲方的數據庫,然后查詢數據,這個時候我們是使用的System.Data.SqlClient+Dapper來執行SQL查詢的,可是一直報錯,大概信息就是類似下面這些

// 因為修改了好幾次,所以信息我已經對不上了,大概出現了下面的這些
Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=3; handshake=10; [Login] initialization=0; authentication=0; [Post-Login] complete=14074;

或者

Microsoft.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the pre-login handshake.
(provider: SSL Provider, error: 31 - Encryption(ssl/tls) handshake failed)
System.IO.EndOfStreamException: End of stream reached

或者

SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL。

遇到這個問題,我們首先想在連接字符串上操作去修復解決這個問題,但是最后沒有解決,我們想在公司復現,首先直接在我自己電腦本地連接sqlserver2019是沒有問題的,然后沒辦法又在服務器安裝了sqlserver2008也沒有問題(這里我還傻不拉幾想著使用容器部署一個sqlserver2008快,然后信了一個博客老哥的鬼話去拉取他的鏡像,結果拉取下來是2019版本的,后來查閱資料才知道sqlserver2008哪里有什么鏡像),然后又模擬正式環境容器化部署,然后終于復現了上面的錯誤,然后就開始嘗試,我們也在網絡上查閱了資料,終于在一個文章上看到sqlserver2008不支持TLS1.2,然后按照那個文檔的方法去降低容器TSL版本,比如dockerfile增加

RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /etc/ssl/openssl.cnf
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /usr/lib/ssl/openssl.cnf

結果還是不行,錯誤變了,繼續查閱文章,然后終于找到【嘿dotNet】公眾號老哥的一個博客,他在2019年遇到了這個問題,我將他總結性的那部分摘抄出來

.net core 的System.Data.SqlClient支持的最低SqlServer版本是2008 r2 SP3,小于這個版本的就會報這個錯。

來源:https://github.com/dotnet/corefx/issues/9719

結論:.netcore 連接使用sqlserver遇到以上報錯1、報錯2的同學,需注意:**.net core 的System.Data.SqlClient支持的最低SqlServer版本是2008 r2 SP3**請先檢查數據庫版本。

呼~這個鬼問題浪費了我整整兩天+(3個熬夜)

文章地址:https://www.cnblogs.com/xiaxiaolu/p/10309064.html

雖然這個文章的評論中也提到了升級數據庫版本可以解決,但是?甲方那邊升級數據庫肯定不現實的,那只好考慮換個組件什么的?我也嘗試了EFCore依賴的包Microsoft.Data.SqlClient也是不行,所以這個時候就咨詢其他部門(java)那邊連接正常不?他們回復沒有問題,然后就產生了要不再搞個java服務去連接的念頭???這多尷尬,連接微軟家的數據庫還需要去麻煩其他語言???

領導說再找找資料 。。。然后就找到了Microsoft ODBC Driver for SQL Server

開始操作

在Nuget上搜索odbc,排名第一個的一個包是微軟和dotnetframework維護的,最近一次更新在幾天前,還是8.0.0版本怪新,那就根據文檔去操作吧,這里需要注意的是使用ODBC去操作數據庫是需要手動安裝驅動的,比如我本地調試需要去下載驅動安裝

下面來演示一個連接的小示例,新建一個控制臺項目名字叫做MsSqlNetCoreOdbc(這里我直接創建.Net6的控制臺項目),然后安裝nuget包

<ItemGroup>
  <PackageReference Include="System.Data.Odbc" Version="6.0.1" />
</ItemGroup>

編寫如下代碼

using System.Data.Odbc;

try
{
    var str = "Server=xxxx;Database=dbName;Uid=sa;Pwd=123xxxx;Encrypt=no;driver=ODBC Driver 18 for SQL Server";
    
    await using var connection = new OdbcConnection(str);
    connection.Open();

    string sqlQuery = "Select @@version";
    var command = new OdbcCommand(sqlQuery, connection);
    var reader = command.ExecuteScalar();
    Console.WriteLine(reader.ToString());

    Console.WriteLine("conn success");

    Console.WriteLine("over");
}
catch (Exception ex)
{
    Console.WriteLine($"message:{ex.Message} stackTrace:{ex.StackTrace}");
}

Console.ReadLine();

這里光看這個示例的話,和之前使用System.Data.SqlClient的改動確實不大,換了一個包,使用OdbcConnection創建DbConnection(需要注意的是如果你要使用到參數化等就需要注意了,它的參數化不是@key,而是?key? 我??)

這里在安裝好驅動的情況下直接運行代碼啟動調試,會輸出下面的信息

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)                                
        Apr  2 2010 15:48:46                                                           
        Copyright (c) Microsoft Corporation                                            
        Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)

conn success
over

然后就要容器化部署測試是否可行了,那么按照官網的文章以及互聯網上的資料去拼湊嘗試給容器安裝驅動,官網文章地址在最下面 ,比如看他Ubuntu的示例

if ! [[ "18.04 20.04 22.04 23.04" == *"$(lsb_release -rs)"* ]];
then
    echo "Ubuntu $(lsb_release -rs) is not currently supported.";
    exit;
fi

curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc

curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list

sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install -y unixodbc-dev

嘗試去容器化部署吧,選中控制臺項目右鍵添加dockerfile文件,并且做下面的修改

? 降低容器tls版本

? 安裝odbc操作驅動

最后dockerfile需要增加以下內容

RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && apt-get update  && \
    apt-get install -y unixodbc unixodbc-dev curl
RUN curl https://packages.microsoft.com/keys/microsoft.asc |  tee /etc/apt/trusted.gpg.d/microsoft.asc && curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list && \
    apt-get update && \
    ACCEPT_EULA=Y apt-get install -y msodbcsql18 && \
    apt-get clean -y && \
    rm -rf /var/lib/apt/lists/*
COPY ./MSSQL_NetCore_Odbc/odbcinst.ini /etc/odbcinst.ini

RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /etc/ssl/openssl.cnf
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /usr/lib/ssl/openssl.cnf

其中odbcinst.ini內容為

[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.2.1
UsageCount=1

然后重新啟動生成容器,發現已經連接成功,輸出信息如下

圖片圖片

連接成功,結束

參考資料

Microsoft ODBC Driver for SQL Server:https://learn.microsoft.com/zh-cn/sql/connect/odbc/microsoft-odbc-driver-for-sql-server?view=sql-server-ver16

SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL:https://www.cnblogs.com/printertool/p/14084385.html

https://www.cnblogs.com/yuanzhongkui/p/4022557.html 連接sqlsever

Connection open error . Connection Timeout Expired. The timeout period elapsed during the post-login phase.

驅動下載地址:https://learn.microsoft.com/zh-cn/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16

責任編輯:武曉燕 來源: 鵬祥
相關推薦

2014-11-21 10:50:26

JavaString

2011-03-08 12:59:38

proftpd

2017-07-03 13:33:42

AndroidItemDecorat

2024-02-20 22:13:49

SQL語句編程

2011-04-14 09:30:15

集合框架

2010-05-11 10:29:06

Unix awk

2014-05-19 15:52:57

Apache StraApache

2024-01-24 11:24:03

C++編程異常處理

2014-04-25 10:05:42

OpenStack私有云公共云

2013-09-27 11:33:57

交換機技術Vlan技術

2023-09-21 09:00:00

Merge Que開發工具Mergify

2014-01-03 10:59:34

2023-03-06 08:01:25

structGo語言

2021-12-24 17:01:29

Linux工具系統

2022-04-26 16:56:20

行為數據數據

2018-05-01 06:43:33

2020-08-24 07:03:10

物聯網設備RTOS物聯網

2021-02-18 09:23:47

數據庫分區數據庫倉庫

2010-08-04 15:51:18

Ubuntu服務器版

2023-11-29 09:19:00

WebhookURL
點贊
收藏

51CTO技術棧公眾號

国产专区欧美精品| 99久久婷婷| 色综合天天综合网天天狠天天| 国产伦精品一区二区三区视频孕妇 | 亚洲激情免费观看| 美女网站免费观看视频| 国产人成网在线播放va免费| 成人黄色网址在线观看| 国产精品日本精品| 久久精品国产亚洲AV无码男同 | 亚洲日本精品| 日本高清视频在线| 麻豆成人综合网| 孩xxxx性bbbb欧美| 天美传媒免费在线观看| 国产乱人伦丫前精品视频| 在线国产电影不卡| av网站手机在线观看| av在线电影网| 成人黄色a**站在线观看| 国产精品亚洲综合天堂夜夜| 中日韩精品视频在线观看| 欧美一二区在线观看| 亚洲成av人片在线观看香蕉| 免费看污黄网站| 日韩欧美精品一区二区三区| 亚洲男人天堂一区| 神马影院一区二区| 亚洲av成人精品日韩在线播放| 久88久久88久久久| 国产成人高清激情视频在线观看 | 国产成人精品一区二区| 黄色在线观看免费| 午夜免费一区| 一区二区在线视频播放| av2014天堂网| 视频在线一区| 欧美精品自拍偷拍动漫精品| 激情网站五月天| www.九色在线| 亚洲午夜久久久| 永久免费看av| 九色porny在线| 国产精品天干天干在线综合| 欧美日韩综合久久| 性xxxxbbbb| av在线不卡电影| 国产精华一区二区三区| 成人av一区二区三区在线观看| 精品一区二区三区免费毛片爱| 国产福利成人在线| 中文字幕精品视频在线观看| 午夜亚洲精品| 欧美专区第一页| 久久久久在线视频| 久久久久久久尹人综合网亚洲| 欧美有码在线视频| 国产成人精品777777| 老司机精品视频网站| 日韩av电影院| 日本视频www色| 麻豆中文一区二区| 成人黄色免费在线观看| 97免费观看视频| 国产一区在线看| 成人欧美一区二区三区在线观看| 亚洲第一色网站| 成人av综合在线| 欧美lavv| 91激情在线| 亚洲视频你懂的| www.夜夜爱| 国产精品vvv| 色婷婷国产精品久久包臀| 色一情一乱一伦一区二区三区日本| 欧美xxx网站| 欧美日韩亚洲综合一区| 黄色aaaaaa| 蜜桃久久久久| 亚洲人成人99网站| 久久爱一区二区| 狠狠爱成人网| 国产精品久久久久久av福利| 国产欧美综合视频 | 91情侣在线视频| 熟妇人妻一区二区三区四区| 国产亚洲一区二区在线观看| 亚洲三区四区| 狂野欧美性猛交xxxxx视频| 狠狠色狠狠色综合日日五| 国内自拍视频网| 日韩一二三区| 亚洲欧美日韩精品久久亚洲区 | 国产精品高清在线观看| 国产精品高潮呻吟久久久| 国产成人久久精品77777最新版本| 九色一区二区| 秋霞午夜在线观看| 天天影视网天天综合色在线播放| 日韩欧美黄色大片| 亚洲综合网站| 一区二区三区高清国产| 免费毛片在线播放免费| 天堂成人国产精品一区| 91偷拍精品一区二区三区| 免费黄色片在线观看| 亚洲色欲色欲www在线观看| 欧美 日韩 国产在线观看| 日本欧美在线| 日韩高清免费在线| 欧美在线视频第一页| 久久aⅴ乱码一区二区三区| 99久久综合狠狠综合久久止| 在线观看黄av| 欧美午夜激情视频| 香蕉在线观看视频| 国产精品毛片久久| 日韩美女主播视频| 你懂的网站在线| 亚洲人成网站影音先锋播放| 又色又爽又高潮免费视频国产| 91精品国产自产在线丝袜啪| 日韩中文字幕亚洲| 蜜臀99久久精品久久久久小说 | 噜噜噜在线观看免费视频日韩| 3d动漫啪啪精品一区二区免费 | 精品人妻一区二区三区日产乱码 | 亚洲成人网在线观看| 色老板免费视频| 免费成人你懂的| 久久一区二区三区欧美亚洲| 乱插在线www| 欧美一区二区视频在线观看 | 亚洲国产精品一区二区久久恐怖片 | 久久99精品国产| 欧美性xxxx69| 成人av免费电影网站| 欧美精品一区二区三区蜜臀| 久久久久久久国产精品毛片| 国产一区二区三区黄视频 | av中文字幕免费观看| 一区二区三区精品视频在线观看| 国产高清精品一区二区| 色av手机在线| 日韩欧美高清dvd碟片| 91麻豆精品成人一区二区| 狠狠色丁香久久婷婷综合_中| 亚州欧美一区三区三区在线| 自拍视频在线看| 精品一区精品二区| 一区二区三区福利视频| 91麻豆免费在线观看| 波多野结衣家庭教师在线| 牛牛精品成人免费视频| 538国产精品一区二区免费视频 | 香蕉视频免费版| 国产精品美女久久久久人| 久久综合九色九九 | 亚洲精品久久7777777| 日韩黄色在线视频| 91毛片在线观看| 免费看a级黄色片| 欧美电影三区| 亚洲综合在线中文字幕| 黄网av在线| 亚洲娇小xxxx欧美娇小| 黄色片网站在线免费观看| 久久久精品国产免费观看同学| 免费在线观看毛片网站| 日韩综合网站| 亚洲xxx视频| 17videosex性欧美| 亚洲女人被黑人巨大进入| 亚洲中文一区二区| 国产精品久久久久久久久久久免费看 | av第一福利在线导航| 亚洲国产免费av| 国产一区二区视频免费| 国产精品电影院| 在线观看你懂的视频| 亚洲深夜福利| 一区不卡字幕| 粉嫩av一区二区| 热久久视久久精品18亚洲精品| 97超碰人人在线| 精品日韩成人av| 国产一区二区视频网站| 成人免费视频在线观看| 亚洲自拍偷拍精品| 蜜臀av性久久久久蜜臀aⅴ| 99久久久精品视频| 国产精品一区2区3区| 成人精品在线视频| 黑森林国产精品av| 色多多国产成人永久免费网站| 亚洲精品国产精| 日本精品一级二级| 国产亚洲欧美精品久久久久久| 91视频国产观看| 久久精品久久99| 久久一区欧美| 久久亚洲国产成人精品无码区| 怕怕欧美视频免费大全| 99国产超薄肉色丝袜交足的后果| 小视频免费在线观看| 欧美成人在线网站| 国产香蕉视频在线看| 精品美女在线播放| 一级二级三级视频| 欧美午夜宅男影院在线观看| 欧美成人777| 国产午夜一区二区三区| 日本一区二区在线免费观看| 国产伦精品一区二区三区免费| 日本www高清视频| 亚洲精品韩国| 99热这里只有精品免费| 日韩在线理论| 欧美重口乱码一区二区| 福利电影一区| 51午夜精品| 欧美综合影院| 国产精品91一区| 黄视频网站在线观看| 欧美大片免费看| 毛片网站在线免费观看| 尤物yw午夜国产精品视频| 天天操天天射天天| 亚洲成年人在线| 亚洲免费不卡视频| 日韩午夜av电影| 国产理论片在线观看| 欧美在线观看你懂的| 一级片视频在线观看| 亚洲成人精品影院| 国产中文字字幕乱码无限| 亚洲欧美福利一区二区| 中文字幕无码日韩专区免费 | 国产精品一区二区无线| 三上悠亚在线一区| 全国精品久久少妇| 丝袜制服一区二区三区| 日本vs亚洲vs韩国一区三区 | 日韩中文在线播放| 国产精品盗摄久久久| 另类激情视频| 国产97色在线|日韩| 成人勉费视频| 国产成人精品日本亚洲| 大胆人体一区二区| 国产精品2018| 中韩乱幕日产无线码一区| 国产精品18久久久久久麻辣| 国产福利一区二区三区在线播放| 国产精品美女午夜av| 国产精品久久久久77777丨| 国产精品网址在线| 亚洲成a人片777777久久| 国产综合久久久久久| 国产电影一区| 波多野结衣精品久久| 99精品中文字幕在线不卡| 国产伦精品一区| 国产成人影院| 在线国产99| 国产精品扒开腿做爽爽爽软件| 免费拍拍拍网站| 欧美亚洲自偷自偷| 美女网站视频黄色| 国产麻豆视频一区二区| 亚洲一级Av无码毛片久久精品| 99精品一区二区三区| 日本二区在线观看| 中文字幕一区二区三区四区不卡| 一起操在线播放| 亚洲国产综合人成综合网站| 天堂在线免费观看视频| 欧美午夜免费电影| 精品毛片在线观看| 精品无人区乱码1区2区3区在线| 国产精品久久久久一区二区国产 | 日本青青草视频| 亚洲va国产va欧美va观看| 欧美a视频在线观看| 在线播放日韩导航| 欧美特级特黄aaaaaa在线看| 亚洲欧洲激情在线| 日日夜夜天天综合入口| 清纯唯美日韩制服另类| 国产999精品在线观看| 久久国产精品一区二区三区四区| 久久亚洲影视| 18禁网站免费无遮挡无码中文| 久久久噜噜噜久久狠狠50岁| 欧美精品 - 色网| 久久久久久免费毛片精品| 成人高潮免费视频| 91激情五月电影| 亚洲精品一区二区口爆| 伊人久久久久久久久久久久久| 亚洲第一图区| 国产精品自拍网| 色婷婷狠狠五月综合天色拍| 中文字幕在线亚洲三区| 国产精品日本| 精品无码av一区二区三区不卡| 久久精品人人做人人综合 | 免费黄色在线观看| 久久久亚洲精品视频| 亚洲精品555| 久久精彩视频| 韩国久久久久| 日韩av自拍偷拍| 国产女人aaa级久久久级| 日韩黄色三级视频| 日韩欧美电影一二三| 天堂аⅴ在线地址8| 国产99久久精品一区二区永久免费| 亚洲精品v亚洲精品v日韩精品| 亚洲精品8mav| 丝袜美腿亚洲一区| 免费a在线观看播放| 亚洲国产毛片aaaaa无费看| 国产精品一区二区免费视频| 影音先锋欧美精品| 欧美一区 二区 三区| 久久久久久久久久码影片| 黄色av日韩| 粗大的内捧猛烈进出视频| 亚洲欧洲国产日本综合| 最近中文字幕在线观看视频| 亚洲男人天堂网站| 三级在线看中文字幕完整版| 国产精品一区视频| 亚洲婷婷在线| 激情综合激情五月| 一区二区免费看| 99久久婷婷国产一区二区三区| www.日韩.com| 国产成人精品一区二三区在线观看| 鲁鲁视频www一区二区| 国产日韩欧美三区| 一起草在线视频| 欧美午夜宅男影院在线观看| 无套内谢的新婚少妇国语播放| 午夜精品三级视频福利| 国产成人福利av| 五十路熟女丰满大屁股| 97精品电影院| a v视频在线观看| 精品亚洲一区二区三区| 色豆豆成人网| 天堂精品视频| 久久福利视频一区二区| 成人一级黄色大片| 日韩免费观看高清完整版在线观看| 国产精品剧情| av资源站久久亚洲| 亚洲伦理精品| 干b视频在线观看| 欧美丝袜第三区| 高h视频在线观看| av成人在线电影| 亚洲乱码视频| 成年人免费观看视频网站| 欧美视频一区在线观看| 拍真实国产伦偷精品| 91免费在线观看网站| 最新国产拍偷乱拍精品| 性欧美丰满熟妇xxxx性仙踪林| 91国偷自产一区二区三区观看| 日本高清视频在线播放| 国产日韩av在线播放| 欧美精品成人| 亚洲av无码成人精品国产| 欧美在线观看视频一区二区三区| 日本www在线| 国产伦精品一区二区三| 三级久久三级久久久| 国产成人av免费在线观看| 亚洲二区中文字幕| 中文字幕系列一区| 最近免费观看高清韩国日本大全| 成人免费高清视频| 国产精品成人久久久| 欧美激情精品久久久久| 久久91成人| 少妇丰满尤物大尺度写真| 疯狂欧美牲乱大交777| 91高清在线视频| 国产另类自拍| 免费的成人av| 国产成人在线观看网站| 色播久久人人爽人人爽人人片视av| 中文字幕日韩在线| 天天操天天爽天天射| 亚洲午夜私人影院| www在线播放| 精品欧美日韩| 韩国精品免费视频|