2026年5月2日土曜日

新しい Visual Studio を入れる前に LocalDB 絡み

新しい Visual Studio を入れる前にする事。
はい、通常は、あまり気にしないのかも。
でも、大昔に書いたものを支障無く動かす為に通る道。
はい、LocalDB に関して、です。


以前、 投稿 にも書いたのですが、
LocalDB には少しナーバスな点があります。
ファイルとエンジンのバージョンですね。
そして、ややこしく! しているのが、
便利さを追求する為に設けられる MSSQLLocalDB のインスタンス名称。
既定の自動インスタンス名 とも呼ばれますね。

Visual Studio を新しいもので追加したりすると、
エンジンは更新されると思うのです。

  何せ、昔の経験からの推測、ですから、
  今では対応が違うのかも知れません。

で、どうなるか?  正確には、当時、どうなったのか?。

昔と同じ名前で出ています~♪、 別の娘、 じゃぁ無かった、別のエンジン!。
昔の 実行ファイル は 混乱 混乱 。
実行時に コケ ちゃうかも。
コケ無い場合でも、ファイルバージョンが更新され、
元と同じ環境下では開け無くなるケースもあるでしょう。
全ての環境を短期間で同じに揃えるのって結構大変だったりします、個人の場合。

なので、 下準備は肝要!。

  仮に、無駄骨になろう共、後から四苦八苦は嫌ですからね。
  まぁ、保険の様なもの ... 。



Microsoft Windows [Version 10.0.26200.8246]
(c) Microsoft Corporation. All rights reserved.

C:¥Users¥UserA>"C:¥Program Files¥Microsoft SQL Server¥130¥Tools¥Binn¥SqlLocalDB.exe" info
MSSQLLocalDB
ProjectsV12
ProjectsV13
v11.0

C:¥Users¥UserA>"C:¥Program Files¥Microsoft SQL Server¥130¥Tools¥Binn¥SqlLocalDB.exe" info MSSQLLocalDB
名前:               MSSQLLocalDB
バージョン:         13.1.4001.0
共有名:
所有者:             MYPC¥UserA
自動作成:        はい
状態:              停止
前回の開始時刻:    2026/04/22 18:44:02
インスタンス パイプ名:

C:¥Users¥UserA>"C:¥Program Files¥Microsoft SQL Server¥130¥Tools¥Binn¥SqlLocalDB.exe" info ProjectsV12
名前:               ProjectsV12
バージョン:         12.0.2000.8
共有名:
所有者:             MYPC¥UserA
自動作成:        いいえ
状態:              停止
前回の開始時刻:    2020/10/25 21:04:24
インスタンス パイプ名:

C:¥Users¥UserA>"C:¥Program Files¥Microsoft SQL Server¥130¥Tools¥Binn¥SqlLocalDB.exe" info ProjectsV13
名前:               ProjectsV13
バージョン:         13.1.4001.0
共有名:
所有者:             MYPC¥UserA
自動作成:        いいえ
状態:              停止
前回の開始時刻:    2026/04/09 22:39:12
インスタンス パイプ名:

C:¥Users¥UserA>"C:¥Program Files¥Microsoft SQL Server¥130¥Tools¥Binn¥SqlLocalDB.exe" info v11.0
"v11.0" の自動インスタンスは作成されません。

C:¥Users¥UserA>"C:¥Program Files¥Microsoft SQL Server¥110¥Tools¥Binn¥SqlLocalDB.exe" info v11.0
The automatic instance "v11.0" is not created.

C:¥Users¥UserA>
C:¥Users¥UserA>

C:¥Users¥UserA>"C:¥Program Files¥Microsoft SQL Server¥110¥Tools¥Binn¥SqlLocalDB.exe" v
Microsoft SQL Server 2012 (11.0.3000.0)
Microsoft SQL Server 2014 (12.0.2000.8)
Windows API call "RegGetValueW" returned error code: 0.

C:¥Users¥UserA>rem error code 0 regedit HKLM¥SOFTWARE¥Microsoft¥Microsoft SQL Server Local DB¥Installed Versions 側のエントリでバージョンの2番目の値を変更(例:13.0 -> 13.1)

C:¥Users¥UserA>"C:¥Program Files¥Microsoft SQL Server¥110¥Tools¥Binn¥SqlLocalDB.exe" v
Microsoft SQL Server 2012 (11.0.3000.0)
Microsoft SQL Server 2014 (12.0.2000.8)
Microsoft SQL Server 2016 (13.1.4001.0)

C:¥Users¥UserA>

と、最初に現状確認して置きます。
新しい Visual Studio 導入で、LocalDB エンジンが追加され、
MSSQLLocalDB の インスタンス が 此れに 代替え される筈。
  嘗て、そうでした ... 。

単一環境下なら、まぁ、問題は少ないかも、ですが、
後々の混乱を避けるには ... ?。

色々な 道筋 が考えられます。

一番簡単なのは、
新しい Visula Studio を導入する前に、
(正確には、新しい LocalDB を使う前に、)
(VS での双方インストールだけなら、インスタンスは生成され無い事を確認済み)
元の 各 Solution/Project で、
接続文字列を 既定の自動インスタンス名 から バージョン固有のインスタンス名 に、
変えて仕舞うのが簡便かと。


各インスタンスは並行して新しいもの達と共存出来るので、
無理は避けるのが無難かと。
直した Solution/Project を別環境に持って行けば、
ナーバスな DataBase Files は触らずに済みますし。

更に、もし、入れものを新しい器に移行するなら、
Solution/Project 毎、新体制 に移した方が良いだろうとの判断もあります。

十分な検証を経た新体制 なら、いざ知らず、
古い体制に組み込む 新パーツ で、何か、不測の出来事が出た場合には、
素人ではお 手上げ でしょうから。



0 件のコメント:

コメントを投稿