如何强制 LocalDB 使用特定版本
How to force LocalDB to use a certain version
在我的机器上,我安装了 LocalDb 2012、2014 和 2016。当我 运行 我的应用程序默认情况下不会选择最新版本。
使用的连接字符串:
Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\ServiceLocal.mdf;Integrated Security=True;Connect Timeout=5
所以我使用 'MSSQLLocalDB'(而不是 v11.0)。但它不会 运行 2016,而是 2014(即 12.0.2000.8)。选择v13.0是不行的。那我还能做什么?
我现在理解了这些概念。每个实例都是一个实例。连接字符串以此类实例为目标,因此要获得另一个版本,您可以使用该版本创建一个新实例。对于 MSSqlLocalDb,删除实例,当使用最新安装的 LocalDb
版本查询时,它将自动重新创建
按照 Gabriël 的解释重新创建实例可行,但可能不是一种选择。在典型示例中,您想要 create/attach 客户端计算机上的数据库,您不应在其中弄乱现有实例。
面对同样的问题,我决定最好的解决方法是通过脚本启动我的应用程序,并在启动我的应用程序之前使用所需版本的 SqlLocalDB.exe 创建我自己的实例:
SqlLocalDB.exe create "MyVeryOwnInstance" 13.0 -s
-s 标志使实例立即启动。之后在您的应用程序中,您可以连接:
Data Source=(LocalDB)\MyVeryOwnInstance;AttachDbFilename=|DataDirectory|\ServiceLocal.mdf;Integrated Security=True;Connect Timeout=5
这当然需要安装所需的版本。我通过将它与我的应用程序安装程序捆绑在一起来确保这一点。
在我的机器上,我安装了 LocalDb 2012、2014 和 2016。当我 运行 我的应用程序默认情况下不会选择最新版本。
使用的连接字符串:
Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\ServiceLocal.mdf;Integrated Security=True;Connect Timeout=5
所以我使用 'MSSQLLocalDB'(而不是 v11.0)。但它不会 运行 2016,而是 2014(即 12.0.2000.8)。选择v13.0是不行的。那我还能做什么?
我现在理解了这些概念。每个实例都是一个实例。连接字符串以此类实例为目标,因此要获得另一个版本,您可以使用该版本创建一个新实例。对于 MSSqlLocalDb,删除实例,当使用最新安装的 LocalDb
版本查询时,它将自动重新创建按照 Gabriël 的解释重新创建实例可行,但可能不是一种选择。在典型示例中,您想要 create/attach 客户端计算机上的数据库,您不应在其中弄乱现有实例。
面对同样的问题,我决定最好的解决方法是通过脚本启动我的应用程序,并在启动我的应用程序之前使用所需版本的 SqlLocalDB.exe 创建我自己的实例:
SqlLocalDB.exe create "MyVeryOwnInstance" 13.0 -s
-s 标志使实例立即启动。之后在您的应用程序中,您可以连接:
Data Source=(LocalDB)\MyVeryOwnInstance;AttachDbFilename=|DataDirectory|\ServiceLocal.mdf;Integrated Security=True;Connect Timeout=5
这当然需要安装所需的版本。我通过将它与我的应用程序安装程序捆绑在一起来确保这一点。