asp.net mvc 3 - tutorial - Las tablas sin un índice agrupado no son compatibles en esta versión de SQL Server
asp.net core sql server (2)
Estoy trabajando en vs 2010 y EF 4.1 con base de datos SQL server . El código mencionado a continuación funciona bien con la base de datos del servidor SQL local (SQL 2008).
Pero cuando publiqué la aplicación MVC para Windows AZURE cloud y SQL Azure , aparece el error mencionado más abajo .
- ¿Por qué este error solo devuelve SQL Azure (trabajando con el servidor SQL de escritorio 2008)?
- ¿Cómo deshacerse de esto?
Mi código de repositorio muestra como se muestra a continuación. El error mencionado anteriormente aparece cuando se llama al método Catalog.SaveChanges () .
using (var catalog = new DataCatalog())
{
var retailSaleReturn = new RetailSaleReturn
{
ReturnQuantity = returnQuantity,
Product = saleDetailObj.Product,
Owner = owner,
Provider = provider,
};
//add to context
Catalog.RetailSaleReturns.Add(retailSaleReturn);
//save for db
Catalog.SaveChanges();
}
DbUpdateException es como a continuación:
{"An error occurred while saving entities that do not expose foreign key properties for their relationships. The EntityEntries property will return null because a single entity cannot be identified as the source of the exception. Handling of exceptions while saving can be made easier by exposing foreign key properties in your entity types. See the InnerException for details."}
InnerException es como a continuación:
{"Tables without a clustered index are not supported in this version of SQL Server. Please create a clustered index and try again."}
StackTrace es como a continuación
at System.Data.Entity.Internal.InternalContext.SaveChanges()
at PawLoyalty.Data.Repositories.CustomersRepository.ReturnRetailOnlySales(Guid saleDetailId, Int32 returnQuantity, String providerKey, String ownerKey) in D:/PawLoyalty Module/PawLoyalty/PawLoyalty/PawLoyalty.Data/Repositories/CustomersRepository.cs:line 550
at PawLoyalty.Web.Areas.Providers.Controllers.CustomersController.ReturnRetailOnlySales(String providerKey, String ownerKey, String petKey, Guid saleDetailId, Int32 returnQuantity) in D:/PawLoyalty Module/PawLoyalty/PawLoyalty/PawLoyalty.Web/Areas/Providers/Controllers/CustomersController.cs:line 942
at lambda_method(Closure , ControllerBase , Object[] )
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
Debe crear un índice agrupado en todas las tablas de SQL Azure a las que desee agregar filas; de lo contrario, la instrucción de inserción siempre falla.
CREATE UNIQUE CLUSTERED INDEX Idx_TableName ON TableName(yourGUIDColumn);
Aquí hay una referencia a las pautas generales y limitaciones específicamente relacionadas con estos índices: MSDN Link
Aquí hay otro artículo que explica el razonamiento detrás de esto: link
Me pareció más fácil actualizar a v12.
Tuve que hacer BACKUP (¡porque soy así de inteligente!), Luego actualizar todos mis DB (usando la consola anterior manage.windowszaure.com) del nivel Web al básico. Luego siga las instrucciones aquí para actualizar ( https://azure.microsoft.com/en-us/documentation/articles/sql-database-v12-upgrade/ )
Simplemente pon:
- Abra portal.azure.com
- Seleccione Sqlserver
- Operaciones
- Última actualización de la base de datos SQL
Para monitorear el progreso usando azul powershell:
Add-AzureAccount
Switch-AzureMode -Name AzureResourceManager
Get-AzureSqlServer -ServerName ''<<yoursqlservername>>'' -ResourceGroupName ''<<sqlserverresourcegroupname>>''