使用.mdf数据库发布ASP.NET项目
我有一个ASP.NET项目,它使用存储在App_Data文件夹中的本地.mdf数据库。 我通常将本地网站发布到桌面,然后将所有文件上传到asp.net服务器。
上传成功后,出于某些原因访问数据库是不可能的。
我在web.config中包含了数据库的连接字符串
<connectionStrings>
<clear />
<add name="LocalSqlServer" connectionString="Data Source=(LocalDB)v11.0;AttachDBFilename=|DataDirectory|database.mdf;database=database;Integrated Security=True;User Instance=False;Context Connection=False;" providerName="System.Data.SqlClient"/>
</connectionStrings>
不是我见过几个在线解决方案,声称改变LocalDB) v11.0到。 SQLEXPRESS; 在连接字符串中,但这不起作用。
请告知如何正确上载数据库与项目并设置适当的访问权限。
当我尝试打开数据库连接时,出现以下错误消息
System.Security.SecurityException:请求失败。 在System.Security.CodeAccessSecurityEngine.Check(PermissionSet permSet,StackCrawlMark&stackMark)上System.Security.PermissionSet.Demand()在System.Data.LocalDBAPI上的System.Security.CodeAccessSecurityEngine.Check(对象需求,StackCrawlMark&stackMark,布尔isPermSet)。在System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo,SqlInternalConnectionTds connHandler,Boolean ignoreSniOpenTimeout,Int64 timerExpire,布尔加密,布尔trustServerCert,布尔integratedSecurity,布尔withFailover)上System.Data.LocalDBAPI.CreateLocalDBInstance(String实例)上的DemandLocalDBPermissions()在System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo,String newPassword,SecureString newSecurePassword,Boolean)上System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo,String newPassword,SecureString newSecurePassword,Boolean ignoreSniOpenTimeout,TimeoutTimer timeout,Boolean withfailover) redirectedUserInstan 在System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer超时,SqlConnectionString connectionOptions,SqlCredential凭据,字符串newPassword,SecureString newSecurePassword,布尔redirectedUserInstance)在System.Data.SqlClient.SqlInternalConnectionTds上的SqlConnectionString连接选项,SqlCredential凭据,TimeoutTimer超时)。在System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项,DbConnectionPoolKey poolKey,对象poolGroupProviderInfo,DbConnectionPool池,DbConnection的ctor(DbConnectionPoolIdentity身份,SqlConnectionString连接选项,SqlCredential凭据,对象providerInfo,字符串newPassword,SecureString newSecurePassword,布尔redirectedUserInstance,SqlConnectionString userConnectionOptions) owningConnection,DbConnectionOptions userOptions)在System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool池,DbConnectionOptions选项,DbConnect (System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnectionOptions userOptions)at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout)在System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnectionOptions userOptions) (DbConnection owningObject,TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
,Boolean allowCreate,Boolean onlyOneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal&connection)at System.Data.ProviderBase.DbConnectionPool.TryGetConnection 1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
1 retry,DbConnectionOptions userOptions,DbConnectionInternal&connection)at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory ,TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
1重试)在System.Data.SqlClient.SqlConnection.Open()在Database.establishConnection()失败的操作是:Demand类型第一个失败的权限是:System.Security.PermissionSet失败的程序集的区域是:MyComputer
为什么不发布你的数据库作为脚本而不是.mdf它比使用.mdf更稳定!
使用SQL管理工作室图像
SQLExpress是一个有限的SQL Server版本(2008R2之后的存储容量为10GB,在R2之前它的版本为2-4GB)
并且由于它是安全需求的服务器,您需要设置密码,用户,角色等。除了这些要求,对于ASP.NET或通常在WWW解决方案中,很多主机提供商不支持将db解决方案自动附加到它们的DB服务器..
所以当你选择在Web Project中使用SQLExpress时,
你可以复制创建脚本(根据项目需要创建数据库,表,安全需求,存储过程,视图等等)到服务器端并在服务器端运行这些脚本 - 就像alggban建议的那样 -
或者从服务器端手动创建所有需求(提供者具有这些实现的设置页面)
或向你的提供者询问他们是否允许附加,决定你的方式
{
通过使用像你一样的代码已经尝试在你的连接字符串中 - AttachDBFileName
语句 - 你需要在你的连接字符串中添加“ UserInstance
”语句并将其设置为“ true
”而不是false!
由于从连接字符串中弃用了“ UserInstance
”语句,因此您的主机提供商可能不允许使用此语句。 所以,至少在这种情况下,您需要向您的提供商咨询
}
如果你仍然想在这里使用SQLExpress,你就是WWW连接字符串的一个例子:
Server=SQLServerNameorIPAddressofYourHostProviderSQLServerInstanceNameofYourHostProvider;Database=yourDatabaseName;User Id=yourUserName;Password=yourPassword;
如果我们假设我们的Hosting Provider是Stackoverflow,那么我们的连接字符串可以是这样的:
//演示了stackoverflow.com提供程序在publicservers子域下提供数据库服务器,并在该子域MSSQL2008R2目录下
Server=publicservers.stackoverflow.com/MSSQL2008R2stackExpress;Database=myDB;User Id=theUser;
Password=WhateverPassword;
本地V11几乎是一个新的解决方案(如果我从2011年第四季度开始就没有错误),它是嵌入像SQLCE(.sdf扩展数据库文件)或作为旧时尚访问数据库或其他嵌入式解决方案,但在其存储容量(Access最大为2 GB,.sdf db文件最大1 GB):与SQL Server Express => 10 GB相同。
要使用本地数据库,如果您的VS版本不是+2012您需要复制必需的Dll,您可以在ProgramFiles目录下找到或在操作系统中安装LocalDB的位置。 在VS2012和2013本地数据库中安装VS. 但无论如何检查您的项目的本地文件的本地复制dll的本地快车..
而对于本地数据库它的运行时要求,您的目标框架应至少v 4.0.2 ..检查此也..
找到类似的问题http://www.codeproject.com/Questions/677651/How-to-publish-mdf-database-file-into-a-asp-net-我们有一个解决方案,希望它有帮助。
链接地址: http://www.djcxy.com/p/56707.html