'本地数据库运行时:无法创建命名实例
'Local Database Runtime: Cannot create named instance
我有一个 C# 应用程序,我正尝试使用 LocalDB。截至目前,当我启动我的应用程序时,我遇到了这个错误。
Cannot create named instance.
The parameter for the LocalDB Instance API method is incorrect. Consult the
API documentation.
我的 App.config 看起来像这样。
<system.data.localdb>
<!-- I saw this on another website, I'm not sure if it's neeed or not.-->
<localdbinstances>
<add name="MSSQLLocalDB" version="mssqllocaldb" />
</localdbinstances>
</system.data.localdb>
<connectionStrings>
<add name="DiaProdConnection"
connectionString="Data Source=(localdb)\MSSQLLocalDB;AttachDbFileName=|DataDirectory|\DatabaseFileName.mdf;Integrated Security=True;MultipleActiveResultSets=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory
type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
当我 运行 Sqllocaldb.exe 版本时,我得到以下输出。
..> SqlLocalDB.exe versions
Microsoft SQL Server 2012 (11.0.3000.0)
Microsoft SQL Server 2014 (12.0.4459.0)
Microsoft SQL Server 2016 (13.0.1601.5)
理想情况下,应用程序会启动,当它发现数据库不存在时,它会创建它。
以下行在开发中确实有效,但如果在我的测试系统上失败,该系统具有 2014 版 SQLLocalDB,这就是我决定使用新字符串的原因。另外,人们说旧字符串已弃用,仅适用于 2012 年。
<add name="DiaProdConnection" connectionString="data source=(localdb)\v11.0;initial catalog=DiaDb;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework;Connection Timeout=15;Connection Lifetime=0;Min Pool Size=10;Max Pool Size=20;Pooling=true;" providerName="System.Data.SqlClient" />
非常感谢任何帮助。
彻底清除计算机中所有非SQL 2014 LocalDb 或更高版本的实例。在撰写本文时,我使用的是 SQL-2014 版本。
使 App.Config 中的 EF 连接 xml 看起来像这样。
<system.data.localdb>
<localdbinstances>
<add name="MyNamedInstance" version="12.0" />
</localdbinstances>
</system.data.localdb>
<connectionStrings>
<add name="DiaProdConnection"
connectionString="Data Source=(localdb)\MyNamedInstance;Initial
Catalog=MovieDB;Integrated
Security=True;AttachDbFilename=|DataDirectory|MovieDB.mdf"
providerName="System.Data.SqlClient" />
</connectionStrings>
许多示例的连接字符串中都会包含该字段 |DataDirectory|
。不幸的是,他们不会告诉您的是,该字符串不是框架已知的特殊字符串,而是您必须自己分配和设置的变量。为此,我在应用程序的入口点调用此代码。
AppDomain.CurrentDomain.SetData("DataDirectory",
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
请记住,如果数据库存在于系统中但位于不同的位置,连接器将引发错误。
运行
Sqllocaldb.exe i
应该可以帮助您查看实例是否存在,您可以从那里决定是否需要删除它。
关于错误的文档如此糟糕,整个事情看起来多么令人讨厌,这让我感到震惊。
我有一个 C# 应用程序,我正尝试使用 LocalDB。截至目前,当我启动我的应用程序时,我遇到了这个错误。
Cannot create named instance.
The parameter for the LocalDB Instance API method is incorrect. Consult the
API documentation.
我的 App.config 看起来像这样。
<system.data.localdb>
<!-- I saw this on another website, I'm not sure if it's neeed or not.-->
<localdbinstances>
<add name="MSSQLLocalDB" version="mssqllocaldb" />
</localdbinstances>
</system.data.localdb>
<connectionStrings>
<add name="DiaProdConnection"
connectionString="Data Source=(localdb)\MSSQLLocalDB;AttachDbFileName=|DataDirectory|\DatabaseFileName.mdf;Integrated Security=True;MultipleActiveResultSets=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory
type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
当我 运行 Sqllocaldb.exe 版本时,我得到以下输出。
..> SqlLocalDB.exe versions
Microsoft SQL Server 2012 (11.0.3000.0)
Microsoft SQL Server 2014 (12.0.4459.0)
Microsoft SQL Server 2016 (13.0.1601.5)
理想情况下,应用程序会启动,当它发现数据库不存在时,它会创建它。
以下行在开发中确实有效,但如果在我的测试系统上失败,该系统具有 2014 版 SQLLocalDB,这就是我决定使用新字符串的原因。另外,人们说旧字符串已弃用,仅适用于 2012 年。
<add name="DiaProdConnection" connectionString="data source=(localdb)\v11.0;initial catalog=DiaDb;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework;Connection Timeout=15;Connection Lifetime=0;Min Pool Size=10;Max Pool Size=20;Pooling=true;" providerName="System.Data.SqlClient" />
非常感谢任何帮助。
彻底清除计算机中所有非SQL 2014 LocalDb 或更高版本的实例。在撰写本文时,我使用的是 SQL-2014 版本。
使 App.Config 中的 EF 连接 xml 看起来像这样。
<system.data.localdb> <localdbinstances> <add name="MyNamedInstance" version="12.0" /> </localdbinstances> </system.data.localdb> <connectionStrings> <add name="DiaProdConnection" connectionString="Data Source=(localdb)\MyNamedInstance;Initial Catalog=MovieDB;Integrated Security=True;AttachDbFilename=|DataDirectory|MovieDB.mdf" providerName="System.Data.SqlClient" /> </connectionStrings>
许多示例的连接字符串中都会包含该字段
|DataDirectory|
。不幸的是,他们不会告诉您的是,该字符串不是框架已知的特殊字符串,而是您必须自己分配和设置的变量。为此,我在应用程序的入口点调用此代码。AppDomain.CurrentDomain.SetData("DataDirectory", Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
请记住,如果数据库存在于系统中但位于不同的位置,连接器将引发错误。
运行
Sqllocaldb.exe i
应该可以帮助您查看实例是否存在,您可以从那里决定是否需要删除它。
关于错误的文档如此糟糕,整个事情看起来多么令人讨厌,这让我感到震惊。