【问题标题】:.NET Deployment to Azure.NET 部署到 Azure
【发布时间】:2018-01-26 14:06:17
【问题描述】:

所以我终于部署到 Azure,我的应用程序已经上线,虽然它没有传递我的数据库,我在底部得到错误。

我使用本地数据库并安装了 SQL Server express。如何使用它将我的数据库发布到 Azure?我已将数据源连接字符串更改为通用名称:

Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True

我发现了一篇关于 SQL Server compact 的帖子,这是最好的方法吗?

我使用我读过的最简单的代码优先迁移,只是真的需要一些关于什么是最好的方向,因为我一无所知!

[Win32Exception (0x80004005): The system cannot find the file specified]

[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 52 - Unable to locate a Local Database Runtime installation. Verify that SQL Server Express is properly installed and that the Local Database Runtime feature is enabled.)]
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling) +821
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +332
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +38
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +699
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +89
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +426
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +78
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +191
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +154
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +21
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +90
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +209
System.Data.SqlClient.SqlConnection.Open() +96
System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.<Open>b__36(DbConnection t, DbConnectionInterceptionContext c) +10
System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch(TTarget target, Action`2 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed) +72
System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(DbConnection connection, DbInterceptionContext interceptionContext) +360
System.Data.Entity.SqlServer.<>c__DisplayClass33.<UsingConnection>b__32() +426
System.Data.Entity.SqlServer.<>c__DisplayClass1.<Execute>b__0() +10
System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Func`1 operation) +189
System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation) +78
System.Data.Entity.SqlServer.SqlProviderServices.UsingConnection(DbConnection sqlConnection, Action`1 act) +175
System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection(DbConnection sqlConnection, Action`1 act) +556
System.Data.Entity.SqlServer.SqlProviderServices.CreateDatabaseFromScript(Nullable`1 commandTimeout, DbConnection sqlConnection, String createDatabaseScript) +86
System.Data.Entity.SqlServer.SqlProviderServices.DbCreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection) +164
System.Data.Entity.Core.Common.DbProviderServices.CreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection) +76
System.Data.Entity.Core.Objects.ObjectContext.CreateDatabase() +134
System.Data.Entity.Migrations.Utilities.DatabaseCreator.Create(DbConnection connection) +119
System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) +142
System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) +78
System.Data.Entity.Internal.DatabaseCreator.CreateDatabase(InternalContext internalContext, Func`3 createMigrator, ObjectContext objectContext) +89
System.Data.Entity.Internal.InternalContext.CreateDatabase(ObjectContext objectContext, DatabaseExistenceState existenceState) +116
System.Data.Entity.Database.Create(DatabaseExistenceState existenceState) +218
System.Data.Entity.CreateDatabaseIfNotExists`1.InitializeDatabase(TContext context) +151
System.Data.Entity.Internal.<>c__DisplayClassf`1.<CreateInitializationAction>b__e() +76
System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +60
System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() +357
System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c) +7

它继续,但我认为不再相关!

【问题讨论】:

  • 使用 Azure SQL 可能更好,因为它是 PaaS 服务
  • 如果您希望数据库嵌入到您的应用程序中,SQLite 可能是一个不错的选择。除非您使用自己的 VM,否则不能在 Azure 中以这种方式使用 LocalDB。
  • 您将什么部署到 Azure?您是否部署到 Azure VM 或 PaaS 产品?
  • @virusstorm 我相信 PaaS?我只是右键单击并发布到网络应用程序

标签: c# .net asp.net-mvc azure


【解决方案1】:

根据您的问题和 cmets,我相信您已将应用程序发布到 Azure PaaS 解决方案。您遇到的问题是 Azure App Services 不允许您使用 LocalDB。您将需要为您的应用程序使用 Azure SQL 数据库。在不了解您如何创建和使用数据库的更多信息的情况下,我无法确定解决问题的最佳方法是什么。您可能需要使用 SQL Server 数据库项目和 DACPAC 来部署您的数据库,或者您可能只需要预配一个 Azure SQL 数据库并授予您的应用服务对它的访问权限。

以下链接可以帮助您找到正确的方向。

Using a LocalDb MDF file on Azure

Build an ASP.NET app in Azure with SQL Database

【讨论】:

  • 感谢您的帮助似乎是一个很好的起点 :) 自从我研究以来一直在研究 SQL Server Compact,这是否可行?我在创建 Azure SQL 数据库时读到它不利于可扩展性?
  • 我不确定您在哪里读到 Azure SQL 数据库无法扩展,但我知道它确实可以扩展。有很多方法可以扩展它,前提是您了解扩展的要求。我也不相信 SQL Compact 会起作用,但更重要的是,它不支持运行 Azure 应用服务。所以我不建议尝试在任何 PaaS 产品上使用它。
  • 啊那太好了,然后会调查一下!您链接的第一篇文章实际上是我正在使用的,最好的答案建议 SQL 紧凑,但如果它可扩展,我宁愿天蓝色。所以我的理解是我必须为我的 webconfig 创建一个转换文件才能使用我的 sql azure,将我的 mdf 上传到 sql azure,然后它应该可以发布应用程序?
  • 我不确定您是如何创建 MDF 文件的,但您无法将其直接上传到 Azure。通常,您会使用 SQL Server 数据库项目部署到 Azure,或者提前预配数据库,然后简单地先使用 EF 代码来部署数据库。
猜你喜欢
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
相关资源
最近更新 更多