精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

91香蕉国产在线观看| 中文字幕欧美日韩精品| 丰满少妇久久久| 日韩精品视频无播放器在线看| 丝袜亚洲另类欧美综合| 精品国产一区久久久| 国产亚洲精品成人a| 亚洲三级欧美| 亚洲人成网站精品片在线观看| 国产亚洲欧美一区二区三区| 色老头在线视频| 欧美视频久久| 亚洲系列中文字幕| 国产人妻精品午夜福利免费| 欧美韩国亚洲| 亚洲国产va精品久久久不卡综合| 日韩精品无码一区二区三区| 亚洲av无码片一区二区三区 | 88av.com| 岛国毛片av在线| 最新成人av在线| 老牛影视免费一区二区| 丰满人妻av一区二区三区| 美国一区二区三区在线播放| 97av在线影院| 免费人成视频在线| 日韩欧美自拍| 亚洲人成网站在线播| 在线播放第一页| 国产精品国产亚洲精品| 日本高清视频一区二区| 无罩大乳的熟妇正在播放| 高清免费电影在线观看| 国产欧美久久久精品影院| 国内一区二区三区在线视频| 午夜精品无码一区二区三区| 久久99久久精品| 国产精品国产三级国产专播精品人 | 久久久在线视频| 丝袜美腿小色网| 日韩久久精品| 一区二区三区四区在线观看视频| yy1111111| 加勒比久久高清| 亚洲精品在线免费播放| 波多野结衣办公室双飞| 伊人精品综合| 精品国产一区二区国模嫣然| 日本黄色www| 久久久久久久久成人| 欧美精品乱人伦久久久久久| 91精产国品一二三产区别沈先生| 日本电影久久久| 欧美日韩国产另类一区| 中文字幕精品一区二区三区在线| 国产极品一区| 91麻豆精品国产91| 超碰在线免费av| 日韩免费一级| 亚洲高清一区二| 亚洲天堂资源在线| 香蕉精品久久| 尤物精品国产第一福利三区| 2017亚洲天堂| 综合激情视频| 久久久久久久久久久久av| www日韩精品| 久久精品女人天堂| 国产精品久久久久91| 中文字幕 自拍偷拍| 久久99国产精品免费| 精品人伦一区二区色婷婷| 第一区免费在线观看| 国产美女视频一区二区 | 国产成人拍精品视频午夜网站 | 第一中文字幕在线| 疯狂蹂躏欧美一区二区精品| 国产av无码专区亚洲精品| 国产一区一一区高清不卡| 欧美伦理视频网站| 国产精品偷伦视频免费观看了| 女同久久另类99精品国产| 亚洲欧美在线免费| 亚洲色偷偷综合亚洲av伊人| 亚洲第一毛片| 国产精品av网站| a天堂视频在线| 99久久99久久综合| 日本高清不卡一区二区三| 日本在线免费| 精品国产91久久久久久| 日本人视频jizz页码69| 日韩一区二区三区精品| 亚洲乱码国产乱码精品精| 黑人操日本美女| 亚洲国内欧美| 成人国产精品久久久久久亚洲| www.超碰在线.com| 国产视频在线观看一区二区三区| 黄色网址在线免费看| 九色porny自拍视频在线观看| 欧美日韩午夜在线| 国产ts在线观看| 久久五月天小说| 2019中文字幕免费视频| 综合久久中文字幕| 99久久99久久精品免费观看| 在线观看精品视频| 高清不卡av| 欧美xxxxxxxxx| 欧美成人短视频| 国产欧美精品| 国产成人精品免费视频大全最热 | av网站在线不卡| 国产福利资源一区| 日韩一区二区三区xxxx| 久久精品久久久久久久| 成人免费毛片a| 国产又黄又爽免费视频| 影视一区二区三区| 亚洲国产欧美一区| 毛片aaaaa| 国产在线精品一区二区| 视频一区二区三区在线观看| 日本不卡免费高清视频在线| 欧美成人一级视频| 精品一区在线观看视频| 捆绑调教一区二区三区| 日本成人三级电影网站| 蜜臀国产一区| 亚洲欧美另类国产| 奇米影视第四色777| 国产成人av一区二区三区在线| 亚洲永久激情精品| 日本一区免费网站| 亚洲视频综合网| 国产伦精品一区二区三区视频我| a美女胸又www黄视频久久| 久久久99精品视频| 免费观看亚洲视频大全| 久久影院资源网| 国产91视频在线| 亚洲男同1069视频| 91香蕉国产线在线观看| 久久久久久久久久久久久久久久久久 | 色悠悠久久久久| 久久久国产免费| 久久久久久久久久电影| 四虎永久在线精品无码视频| 亚洲宅男一区| 国产国语videosex另类| www.亚洲免费| 51精品秘密在线观看| 天海翼在线视频| 国产精品自拍一区| 国产69精品久久久久久久| 任我爽精品视频在线播放| 91成人精品网站| 国产大学生校花援交在线播放| 欧美性做爰猛烈叫床潮| 战狼4完整免费观看在线播放版| 懂色av粉嫩av浪潮av| 午夜精品网站| 国产免费一区| 欧美香蕉视频| 久久精品视频va| 亚洲专区第一页| 亚洲欧美日韩国产手机在线| 97中文字幕在线观看| 国产欧美大片| 伊人情人网综合| 精品国产亚洲日本| 97碰在线观看| seseavlu视频在线| 91麻豆精品国产91久久久使用方法 | 日本成人a网站| 国产不卡一区二区在线播放| 日本三级视频在线观看| 精品少妇一区二区三区在线播放 | 老司机一区二区三区| 日韩一区二区三区资源| 久久av网站| 69久久夜色精品国产7777| 福利视频在线导航| 日韩丝袜美女视频| 精品人妻一区二区三区免费看| 国产精品色婷婷久久58| 97人妻精品一区二区三区免费| 视频在线观看一区| 99久久99久久精品| 欧美一级精品| 国产区二精品视| 国产福利91精品一区二区| 久久久亚洲成人| 日本中文在线| 亚洲欧洲日产国产网站| 99久久精品日本一区二区免费| 色94色欧美sute亚洲线路一久| 一区视频免费观看| 国产拍欧美日韩视频二区| 一级全黄裸体片| 久久爱另类一区二区小说| 男人操女人免费软件| 亚洲天堂免费| 神马影院一区二区| 婷婷精品在线| 99理论电影网| 国产三级一区| 日韩av手机在线观看| 国产亚av手机在线观看| 日韩中文字幕网| 久久天堂电影| 亚洲国产精品va在线观看黑人| 国产又爽又黄免费软件| 在线观看日产精品| 亚洲精品午夜国产va久久成人| 亚洲另类在线视频| 天天色天天综合| 国产日产欧产精品推荐色| 国产精品无码在线| 成人av综合在线| 国产成人av免费观看| 韩国欧美国产一区| 最新中文字幕免费视频| 久久一综合视频| 日韩精品视频一区二区在线观看| 雨宫琴音一区二区在线| 欧美日韩dvd| 在线精品视频在线观看高清| 最新精品视频| 四季av在线一区二区三区| 视频一区三区| 精品理论电影在线| 日韩久久精品一区二区三区| 伊人成综合网伊人222| 好吊色欧美一区二区三区| heyzo欧美激情| 国产高清在线精品一区二区三区| 日韩精品视频中文字幕| 91免费在线视频| 国产精品久久久久久久久久久久久久久| 国产精品日韩在线观看| 国产综合色激情| 国产啪精品视频| 国产色99精品9i| 99在线热播| 久久午夜影院| 久久99精品久久久久久久青青日本| 丁香综合av| 久久福利电影| 神马电影久久| 午夜老司机精品| 欧美成人自拍| 日本xxxxx18| 在线国产日韩| 97在线播放视频| 日本系列欧美系列| 肉色超薄丝袜脚交| 成人免费高清在线| 真人bbbbbbbbb毛片| 久久众筹精品私拍模特| 性猛交娇小69hd| 国产丝袜欧美中文另类| 国产成人av免费在线观看| 一区二区三区丝袜| 五月天婷婷综合网| 欧美在线免费视屏| 国产又黄又爽视频| 亚洲护士老师的毛茸茸最新章节| 精品欧美不卡一区二区在线观看| 国产亚洲精品久久久久久777| 日本www在线观看视频| 欧美日韩999| 北岛玲heyzo一区二区| 国产精品吴梦梦| 成人爽a毛片免费啪啪红桃视频| 久久久久资源| 91精品国产91久久久久久密臀| 人人妻人人做人人爽| 日韩黄色片在线观看| 亚洲一区二区三区四区精品| 91在线丨porny丨国产| 婷婷综合在线视频| 亚洲小说欧美激情另类| 欧美特级黄色片| 精品久久久久久久人人人人传媒 | 国产天堂在线播放| 国产美女精品人人做人人爽| 欧美做受喷浆在线观看| 成人欧美一区二区三区视频网页 | 久久精品123| 亚洲va在线va天堂va偷拍| 成人激情动漫在线观看| 你懂得视频在线观看| 亚洲超碰97人人做人人爱| 一区二区三区免费在线| 日韩高清人体午夜| 久操免费在线| 国产精品电影网| 老司机精品视频在线播放| 桥本有菜av在线| 久久国产88| 久久福利小视频| 亚洲精品亚洲人成人网在线播放| 免费看污视频的网站| 精品国产91久久久久久久妲己| 色综合久久久久综合一本到桃花网| 久久久噜噜噜久久中文字免| 日韩一级特黄| 日韩一本精品| 亚洲欧美成人综合| 95视频在线观看| 亚洲乱码日产精品bd| 亚洲一卡二卡在线| 国产亚洲精品激情久久| 色戒汤唯在线| 国产精品初高中精品久久| 亚洲v在线看| www欧美激情| 久久久91精品国产一区二区三区| 国产在线视频你懂的| 欧美一区二区三区婷婷月色 | 午夜精品久久久99热福利| 国产成人免费视频网站视频社区| 色综合电影网| 日韩不卡一二三区| 亚洲精品成人无码| 色偷偷久久人人79超碰人人澡| 天天射,天天干| 久久久久久国产免费| 亚洲第一二区| 国产人妻互换一区二区| 国产在线国偷精品产拍免费yy| 亚洲天堂最新地址| 欧美日韩三级在线| 亚洲成人影院麻豆| 国产精品亚洲网站| 99re66热这里只有精品8| 中文av一区二区三区| 国产精品久久久久久久久免费樱桃| 日本黄色中文字幕| 尤物九九久久国产精品的分类| av一区在线播放| 亚洲韩国在线| 国内久久精品视频| 日韩在线中文字幕视频| 欧美一区二区三区精品| 少女频道在线观看免费播放电视剧| 亚洲www视频| 国产精品xvideos88| 中文字幕一区二区三区人妻在线视频| 一区二区三区.www| 亚洲精品久久久久久动漫器材一区 | 蜜臀久久99精品久久久画质超高清| 天天操天天舔天天射| 欧美美女视频在线观看| www.在线视频| 国产在线欧美日韩| 午夜综合激情| 欧美成人短视频| 欧美成人vps| 欧美裸体视频| 日韩在线导航| 国产一区二区0| 国产精品18p| 亚洲色图18p| 国产精品一区二区三区www| 欧美在线观看黄| 91日韩在线专区| 自拍偷拍第八页| 久久久久久久久久久人体 | 中文字幕一区综合| 国产成人在线影院| 免费在线不卡视频| 中日韩美女免费视频网站在线观看| 祥仔av免费一区二区三区四区| www.avtt| 欧美激情中文不卡| 成人乱码一区二区三区| 青草成人免费视频| 欧美aaaaaaaaaaaa| 中文在线永久免费观看| 欧美日韩一区三区| 成入视频在线观看| 亚洲v国产v| av一区二区不卡| 在线观看中文字幕码| 久久久在线视频| 久久综合88| 亚洲欧美视频在线播放| 欧美巨大另类极品videosbest | 国产精品扒开腿做| 欧美成人日韩| 日本乱子伦xxxx| 亚洲国产成人久久综合一区| 久久久加勒比| 能在线观看的av| 亚洲精品乱码久久久久久久久| 精品视频二区| 激情视频在线观看一区二区三区|