1

经常出现以下错误。我想知道有没有人经历过这个或者是什么原因?连接到SQL Azure数据库时出错

我使用实体框架4.0和。 NET 4.0和Visual Studio 2010以及Windows Azure SDK 1.7和2.0。

下面是连接字符串:

<add name="MyEntities" 
    connectionString="metadata=res://*/Model.ModelMy.csdl|res://*/Model.ModelMy.ssdl|res://*/Model.ModelMy.msl; 
     provider=System.Data.SqlClient; 
     provider connection string=&quot; 
     data source=myserver.database.windows.net; 
     initial catalog=MyDatabase; 
     persist security info=True; 
     user id=myUser; 
     password=myPassword; 
     multipleactiveresultsets=True; 
     Trusted_Connection=False; 
     Encrypt=True; 
     Connection Timeout=30; 
     App=EntityFramework&quot;" 
    providerName="System.Data.EntityClient" 
/> 

错误信息:

Server Error in '/' Application. 

Database 'MyDatabase' on server '[NAMEMYSERVER]' is not currently available. Please retry the connection later. If the problem persists, contact customer support, and provide them the session tracing ID of 'efb529ba-14eb-46d0-8311-d48b03435cee'. 
Login failed for user 'myUser'. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlClient.SqlException: Database 'MyDatabase' on server '[NAMEMYSERVER]' is not currently available. Please retry the connection later. If the problem persists, contact customer support, and provide them the session tracing ID of 'efb529ba-14eb-46d0-8311-d48b03435cee'. 
Login failed for user 'myUser'. 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 


[SqlException (0x80131904): Database 'MyDatabase' on server '[NAMEMYSERVER]' is not currently available. Please retry the connection later. If the problem persists, contact customer support, and provide them the session tracing ID of 'efb529ba-14eb-46d0-8311-d48b03435cee'. 
Login failed for user 'myUser'.] 
    System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +706 
    System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +89 
    System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +6425518 
    System.Data.SqlClient.SqlConnection.Open() +300 
    System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) +67 

[EntityException: The underlying provider failed on Open.] 
    System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +4728195 
    System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +1725 
    MyProjectRules.Negocio.MyDatabaseHotel.HotelRN.PesquisarTodos(Include include) +0 
    MyProjectWebRole.MyDatabaseHotel.Views.ListaHoteis.CarregarGridViewEntidade() +183 
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25 
    System.Web.UI.Control.LoadRecursive() +71 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3064 

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.551 

回答

1

第1步:简化您的连接字符串。我们是这样的:

<add name="[CONTEXTNAME]" 
    providerName="System.Data.SqlClient" 
    connectionString=" 
     Server=tcp:[SERVER].database.windows.net,1433; 
      Database=[DATABASE]; 
      User ID=[USER]@[SERVER]; 
      Password=[PASSWORD]; 
      Trusted_Connection=False; 
      Encrypt=True; 
      Connection Timeout=30;"/> 

所以看你的连接字符串,我会尝试这样的:

<add name="MyEntities" 
    providerName="System.Data.SqlClient" 
    connectionString=" 
      metadata=res://*/Model.ModelMy.csdl|res://*/Model.ModelMy.ssdl|res://*/Model.ModelMy.msl; 
      Server=myserver.database.windows.net; 
      Database=MyDatabase; 
      User [email protected]; 
      Password=myPassword; 
      Multipleactiveresultsets=True; 
      Trusted_Connection=False; 
      Encrypt=True; 
      Connection Timeout=30; 
      App=EntityFramework;" /> 

步骤2:看起来你“用户ID”丢失的服务器名称。它需要是myUser @ myServer。尝试添加回来。

步骤3:可能不是关键,但你错过了服务器地址的“,1433”