AccessデータベースからSQLサーバーへの移行について

タグの編集
投稿者 masaX  (社会人) 投稿日時 2024/6/15 15:30:44
VisualStudio2015以前からでPCプログラムを作っていた者で、現在はVisualStudio2022を使ってるのですが、2015以前に作って現在も使っているプログラムでデータベースの検索の部分を書き換えようとして、OLEDBのデータアダプターの構成を確認しよとしてデザイナーに貼り付けてあるデータアダプターを右クリックして「データアダプターの構成・・」を選択するとそれだけでVisualStudio 自体が勝手にクローズして再起動しまう様な事が何度繰り返しても起こる事に気付きました。
思い返してみると2019から2022に換えてからデータアダプターの構成を確認したのが初めてだったかも知れないので、いつからこうなったのかは不明なのですが、試しに同じプログラムを2019で開くと、データアダプターの構成も問題なく行えます。

そんな事があって自分なりにいろいろ調べてみると、2022ではAccessのデータベースが使えない様な事を書いてあるのを見かけ、将来的な事も考えるとAccessではなくSQLサーバーを使うプログラムに代えていく方が良いのか?と思う様になりました。

そこで、まずは今まで使っているAccessのデータベースをSQLサーバーに移行しようと思い、いろいろ調べて見つけた
https://blog.mori-soft.com/entry/2016/11/11/172234
このサイトを参考に
「Microsoft SQL Server Migration Assistant for Access」
というソフトで今まで使っていた.mdbのファイルを移行してみたところ
無事に完了したように見えたのですが
新しくファイルを作ろうとした場所に(ドキュメントの中にaquaという名のファイルを作りたかった)
aquaというフォルダーができてその中に
aqua.a2ssproj
object-containers.mappings
preferences.prefs
progress-metabase.mb
project-container.mappings
source-metabase.mb
という6つのファイルができておりましが
拡張子が「.mdf」のファイルが在りません。
Microsoft SQL Server Migration Assistant for Accessで、まだ何か操作する必要があるのか?
いろいろ調べてはみたのですが、その先が分かりません。

もし何かわかれば御教授いただけると助かります。
投稿者 masaX  (社会人) 投稿日時 2024/6/15 15:35:53
追伸
作られたフォルダーの中にある
aqua.a2ssproj
を開くと、中には移行したかったデータがしっかり読み込まれている様です。
投稿者 masaX  (社会人) 投稿日時 2024/6/16 16:39:35
追伸
その後、Microsoft SQL Server Migration Assistant for Accessで
Accessのデータを読み込む事はできているけれども SQLサーバーに取り込む事ができていない感じだったので今度は
SQL Server Management Studio でSQLサーバーを作ってから、その時にサーバー名を控えておき
Microsoft SQL Server Migration Assistant for Accessの
「Add Databases」で
サーバー名とデータベース名を入れる事で「aqua」というデータベースが作れた様です。
SQL Server Management Studio を開いてオブジェクトエクスプローラーの中のデータベースを開くと中に「aqua」というのができており、中のテーブルを開くとデータも入ってる様に見えます(.mdfのファイルはどこに有るのか分からないのですが)

これで上手くできたと思い、今度はVisualStudio を開いてフォームアプリケーションに
OleDbDataAdapterを追加して「データアダプターの構成」でデータベースに接続できるかテストしてみたのですが
「SQLNCLIRDA11 プロバイダーはローカルのコンピューターに登録されていません」
とエラーが出て先に進めなくなりました。

「SQLNCLIRDA11」というものをインストール必要があるんでしょうか?

御教授いただけると嬉しいです。
投稿者 masaX  (社会人) 投稿日時 2024/6/17 14:47:22
追伸

その後、いろいろ調べながらやってみたのですが、OleDbDataAdapterでSQLサーバーに接続する事ができず
一度試しにと思ってVisualStudio2019で新しくプロジェクトを作成してOleDbDataAdapterでテストしてみると無事に接続する事ができました。

VisualStudio2022で新しく作ったプロジェクトではOleDbDataAdapterをデザイナーに表示する事すらできない事から考えると
もしかすると、そもそもOleDbDataAdapterを使ってSQLサーバーに接続するという方法が古いやり方なんでしょうか?
投稿者 KOZ  (社会人) 投稿日時 2024/6/18 11:48:26
SQL Server の OLEDB プロバイダーは廃止されました。
https://learn.microsoft.com/ja-jp/previous-versions/sql/sql-server-2012/hh510181(v=sql.110)

.NET からは System.Data.SqlClient 名前空間を使うべきかと。
https://learn.microsoft.com/ja-jp/dotnet/api/system.data.sqlclient?view=netframework-4.8.1
投稿者 とくま  (社会人) 投稿日時 2024/6/18 13:24:46
自分で調べている部分には好感が持てるけど、ここ数年の.Netの進化について知識がほぼ無いというか、
重要でメジャーで技術者なら押さえておくべき内容を、全く押さえてないような発言が散見されます。
そこを順番に説明しないといけないの?みたいな質問内容になってきていて収拾つかない感じです。
正直、全部の質問に付き合う気は無いです。

とりあえず、.NET Frameworkは4.8で最終バージョンとなっています。
今は.NET 6, .NET 7, .NET 8 ...となっています。
[いろいろな種類がある .NET の違いとは]
https://synamon.hatenablog.com/entry/2021/10/18/190000
この段階で大きく方針が変わったのが、Macとかも含めたマルチプラットフォームに対応するように
なった点です。いろいろなものを共通化したため、Windows固有に特化していた部分が無くなり、
Windowsアプリの開発に限って言えば、機能ダウンしていると言っても良いです。今でこそ落ち着いて
はいるものの、不具合も沢山起こっています。
しかし、(以前から下位互換はありましたが)開発するプラットフォームは選択可能です。
ここで開発するプラットフォームを明確にしてください。
個人的には、Windowsアプリを作るなら、まだ.NET Frameworkを使った方が良いと思っています。
そして.NET Frameworkを使うならまだVisualStudio2022でなくともいいので、私自身移行してません。
根本的に質問をひっくり返しますけど、しばらくVisualStudio2019 でSQLServer接続でも良いのでは?
別にVisualStudio2022での開発を否定はしませんし、.NET 8に移行しても良いですが、
ライブラリをNugetから手に入れて、デザイナやウィザードからではなく、コードでプログラムする
スキルを必要とします。その他、64bitプロセス問題とか、KOZ さん指摘のSQLServer側の最新情報とか、
色々と調査・調整できるスキルも必要そうですが。。。

>VisualStudio2022で新しく作ったプロジェクトではOleDbDataAdapterをデザイナーに表示する事すらできない事から考えると
正確な理由は知らないですが、ウィザードを利用しているような機能は、環境の影響も受けそうですし、
非対応になった機能は多いです。ただし、データベース接続の技術は相変わらず ADO.NET 系統が現役です。

[System.Data.OleDb(.NET 8)](※SQL Server 2012 以降のOLE DB プロバイダー廃止)
https://learn.microsoft.com/ja-jp/dotnet/api/system.data.oledb?view=net-8.0
[System.Data.SqlClient(.NET 8)]SQL Server専用
https://learn.microsoft.com/ja-jp/dotnet/api/system.data.sqlclient?view=net-8.0
[System.Data.OracleClient(.NET 8)]Oracle専用(※ただし現在は非推奨)
https://learn.microsoft.com/ja-jp/dotnet/api/system.data.oracleclient?view=net-8.0&viewFallbackFrom=dotnet-plat-ext-8.0
[Visual Studio でデータベースに接続する(Visual Studio2022)]
https://learn.microsoft.com/ja-jp/visualstudio/data-tools/add-new-connections?view=vs-2022
[(最新?)Microsoft.Data.SqlClient]
https://learn.microsoft.com/ja-jp/sql/connect/ado-net/introduction-microsoft-data-sqlclient-namespace?view=sql-server-ver16
投稿者 masaX  (社会人) 投稿日時 2024/6/20 09:26:54
KOZ 様
御教授ありがとうございます。

>SQL Server の OLEDB プロバイダーは廃止されました。

なるほど、そういう事なのですね?
まったく時代についていけて無い様です(汗)
投稿者 masaX  (社会人) 投稿日時 2024/6/20 10:35:54
とくま 様
御教授ありがとうございます。

>メジャーで技術者なら押さえておくべき内容を

すみません、私は技術者などではなく趣味でやってるだけのド素人ですので、とんでもなく筋違いな書き込みをしてるのかも知れないところはお許しください。

>デザイナやウィザードからではなく、コードでプログラムする
スキルを必要とします

という事は私のような素人は無理に2022に移る事を考えずに2019のままで良さそうという事ですね?(逆に少し安心しました)
投稿者 masaX  (社会人) 投稿日時 2024/6/20 12:27:29
もう一度勉強して、どのように進めていくかを考え直してみますので
一旦、解決とさせていただきます。

ありがとうございました。