.NET 4.0上的实体框架5中的Visual Studio 2010是否支持LocalDB?
或者我做错了吗?在使用LocalDB的连接字符串实例化我的模型容器时,我收到"无法找到网络路径"的问题.
这是连接字符串:
var connectionString = "metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=\"data source=(localdb)\v11.0;initial catalog=fablelane_com_db;integrated security=SSPI;multipleactiveresultsets=True;App=EntityFramework\"";
Run Code Online (Sandbox Code Playgroud)
编辑1 我在连接时收到以下错误,更具体地说:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接).
编辑2 我刚才发现改为Visual Studio 11 beta也不行.仍然收到相同的错误消息.
对于非LocalDb SQL Server,我可以SELECT SERVERPROPERTY('ServerName')获取服务器的名称和我正在运行的实例.但是,对于LocalDb服务器,我得到了SERVERNAME\LOCALDB#SOMEHASH.如何获取本地实例名称?
解:
获取实例的解决方案,在LocalDB和"普通"SQL Server实例上工作:
DECLARE @serverName NVARCHAR(151)
IF SERVERPROPERTY('IsLocalDb') = 1
SELECT @serverName = 'np:\\.\pipe\' + CONVERT(NVARCHAR(128), SERVERPROPERTY('InstanceName')) + '\tsql\query'
ELSE
SELECT @serverName = CONVERT(NVARCHAR(128), SERVERPROPERTY('ServerName'))
Run Code Online (Sandbox Code Playgroud)
我应该在原始问题中提到的一些背景:我们的应用程序有一个配置数据库.除此之外,它还存储连接字符串.对于开发人员计算机和集成测试,我们希望能够使用脚本生成数据库,并使连接字符串引用本地实例.因此,我需要一个工作连接字符串(LOCALDB#SOMEHASH不是).由于数据库服务器版本存在一些差异,我需要能够处理这两种情况的东西.
我正在使用Visual Studio Express for web来学习本教程http://msdn.microsoft.com/en-US/data/jj193542.教程告诉我们
按照惯例,DbContext为您创建了一个数据库.
如果本地SQL Express实例可用(默认情况下使用Visual Studio 2010安装),则Code First已在该实例上创建数据库如果SQL Express不可用,则Code First将尝试使用LocalDb(默认情况下安装在Visual Studio 2012中) )数据库以派生上下文的完全限定名称命名,在我们的例子中是CodeFirstNewDatabaseSample.BloggingContext
所以,它应该使用localdb.但是当我尝试访问我的模型时,我可以在调试中看到连接字符串指向.\ SQLEXPRESS,虽然我没有sqlexpress.所以,我有一个超时异常......
为什么不使用localdb?
请注意,如果我明确地将连接字符串设置为localdb,它正在工作......请注意,如果我使用Vs Express for Desktop,它也在工作......
Vs Express for web出了什么问题?
因此,我们现在知道Visual Studio 2013不再支持SQL Server CE.我们可以通过SQL Server CE Toolbox插件获得一些访问权限,但这并不能解决数据提供程序未包含在内的问题我们不能再使用带有实体框架等的SQL Server CE.
我还没有从MS那里得到一个解释,为什么现在这个都没有了,但我现在已经接受了它,并且正在寻找继续前进的方法.
我的问题是 - 这是什么最好的迁移路径?我一直在使用数据优先实体框架与SQL Server CE,并部署使用小.sdf文件的小型网站,并且更新很容易部署 - 只需复制文件.SQL Server Express不会以这种方式工作.对于桌面/ WPF/winforms应用程序,我认为这更令人困惑,因为进程内SQL Server CE数据库非常适合小型桌面应用程序.
是否可以在运行中创建一个mdf文件(在运行时)并在代码优先方法中将它与实体框架6一起使用?
我需要这样的东西:
if (mydb.mdf not exists)
createmdf();
mycontext ctx = new mycontext(mydb.mdf connection string)
ctx.CreateDatabase();
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在尝试将DACPAC部署到LocalDB 2012,但它只是没有它:
堆栈跟踪如下:
==================================
Could not deploy package. (Microsoft.SqlServer.Dac)
------------------------------
Program Location:
at Microsoft.SqlServer.Dac.DeployOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context)
at Microsoft.SqlServer.Dac.OperationExtension.Execute(IOperation operation, Action`2 reportStatus, CancellationToken cancellationToken)
at Microsoft.SqlServer.Dac.DacServices.InternalDeploy(IPackageSource packageSource, Boolean isDacpac, String targetDatabaseName, DacDeployOptions options, CancellationToken cancellationToken)
at Microsoft.SqlServer.Dac.DacServices.Deploy(DacPackage package, String targetDatabaseName, Boolean upgradeExisting, DacDeployOptions options, Nullable`1 cancellationToken)
at Microsoft.SqlServer.Management.Dac.DacWizard.DeployModel.Install()
at Microsoft.SqlServer.Management.Dac.DacWizard.DeployModel.RunAction()
at Microsoft.SqlServer.Management.Dac.DacWizard.ExecuteDacPage.backgroundWorker1_DoWork(Object sender, DoWorkEventArgs e)
at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
===================================
Unable to connect to target server. (Microsoft.Data.Tools.Schema.Sql)
------------------------------
Program Location:
at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeploymentEndpointServer.OnInit(ErrorManager errors, String targetDBName)
at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeployment..ctor(SqlDeploymentConstructor constructor)
at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeploymentConstructor.ConstructServiceImplementation() …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行IIS托管的应用程序(以电影数据库的形式)来教我自己如何设计3层架构程序:MVC应用程序,WCF服务,SQL Server数据库.由于我没有完整SQL Server的许可证密钥,因此我决定使用LocalDB并使用WCF服务来包装我的存储过程.这是我第一次使用LocalDB并遇到连接到我的实例v13.0的问题.
我的问题:
在我的生活中,我无法在VS中获取我的项目以连接到LocalDB实例.我一直收到以下错误:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:50 - 发生本地数据库运行时错误.指定的LocalDB实例不存在.
我的连接字符串(来自Web.config):
<connectionStrings>
<add name="MovieDB" connectionString="Data Source=(localdb)\v13.0;Initial Catalog=MovieDB;Integrated Security=True;AttachDbFilename=|DataDirectory|\MovieDB.mdf" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
使用sqlcmd连接到它并运行查询运行正常:
Visual Studio SQL Server对象资源管理器可以很好地连接:
连接字符串,当它到达有问题的行时由Visual Studio转义,因此我知道连接字符串未被错误地转义:
"Data Source=(localdb)\\v13.0;Initial Catalog=MovieDB;Integrated Security=True;AttachDbFilename=|DataDirectory|\\MovieDB.mdf"
Run Code Online (Sandbox Code Playgroud)
我尝试按照本指南(第1部分和第2部分)进行操作,截至2016年4月18日,图像已被破坏,因此我无法完全理解我应该做什么.我只能得到上述错误,因为我将应用程序池标识更改为LocalSystem:
当应用程序池在ApplicationPoolIdentity标识下运行时,我收到此错误:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:50 - 发生本地数据库运行时错误.无法获取本地应用程序数据路径.很可能未加载用户配置文件.如果在IIS下执行LocalDB,请确保启用了配置文件加载当前用户.
我甚至修改了C:\ windows\system32\inetsrv\config\applicationHost.config文件以强制配置文件加载.依然没有.
<applicationPools>
<add name="DefaultAppPool" />
<add name="Classic .NET AppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" />
<add name=".NET v2.0 Classic" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" />
<add name=".NET v2.0" managedRuntimeVersion="v2.0" />
<add name=".NET v4.5 Classic" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" />
<add name=".NET v4.5" managedRuntimeVersion="v4.0">
<!-- I …Run Code Online (Sandbox Code Playgroud) 我以前只有SQL版两个12 (localdb)\ProjectsV12和(localdb)\MSSQLLocalDB
这是当我有VS 2015年更新1安装,使用SSDT工具(数据库项目)一起.
我安装了Update 2,现在有:
注意MSSQLLocalDB仍然是旧版本.
然而,一位同事做了VS 2015的全新安装并且具有:
所以他们使用的是较新版本的MSSQLLocalDB,而且我的版本较旧.即使我们都是Visual Studio的Update 2.
我原本希望使用与MSSQLLocalDB无关的版本名称.问题是,如果每个人都在不同的版本上,这将无法工作,因为我有构建设置将数据库项目部署到localdb,这需要使用SqlPackage,它是特定于版本的:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\SqlPackage.exe
我想了解MSSQLLocalDB的安装和更新位置和方式.我非常确定ProjectsV12/13是Visual Studio安装的一部分.
什么安装MSSQLLocalDB,以及更新它?
重复
建议的副本只是将MSSQLLocalDB描述为"SQL Server 2014 LocalDB默认实例名称".这并没有说明它作为一部分安装或更新它的内容.谢谢
我的应用程序使用LocalDb实例来存储它的数据.我注意到LocalDb分配标识的方式有些怪癖(这里有更多解释)我想避免.链接的答案解释了这可以通过设置SQL Server跟踪标志来完成,并解释如何为"全脂"SQL Server执行此操作.
是否可以在LocalDb上设置跟踪标志?当我的应用程序按需启动时,可以通过连接字符串完成吗?
SQLLocalDB 无法启动并抛出如下错误。
**C:\Windows\system32>sqllocaldb c MSSQLLocalDB**
Creation of LocalDB instance "MSSQLLocalDB" failed because of the following error:
Error occurred during LocalDB instance startup: SQL Server process failed to start.
***Note:*** Command started with Run as Administrator.
Run Code Online (Sandbox Code Playgroud)
事件查看器显示以下日志:
Windows API call WaitForMultipleObjects returned error code: 575. Windows system error message is: {Application Error}
The application was unable to start correctly (0x%lx). Click OK to close the application.
Reported at line: 3714.
Source: SQLLocalDB 15.0
Event ID: 528
Level: Error
Run Code Online (Sandbox Code Playgroud)
操作系统: Windows 11 …