Tenemos un problema muy extraño con una base de datos que se ha movido de la etapa a la producción.Sql Excepción: Error al convertir el tipo de datos numérico a numérico
La primera vez que se movió la base de datos fue separando, copiando y volviendo a conectar, la segunda vez que intentamos restaurar desde una copia de seguridad de la puesta en escena.
Ambos servidores SQL son la misma versión de MS SQL 2008, que se ejecuta en hardware de 64 bits.
El código que accede a la base de datos es la misma compilación, construida con el framework .NET 2.0.
Aquí está el mensaje de error y parte de la traza de la pila:
Exception Details:
System.Data.SqlClient.SqlException: Error converting data type numeric to numeric.
Stack Trace:
[SqlException (0x80131904): Error converting data type numeric to numeric.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +1953274
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4849707
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +204
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +954
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +175
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +137
Version Information: Microsoft .NET Framework Version:2.0.50727.4200; ASP.NET Version:2.0.50727.4016
Si utilizo Red Puerta SQL Comparar para comparar la base de datos provisional y vivir, que son los mismos.
Aquí es el procedimiento almacenado que provoca el error en el servidor en vivo:
ALTER PROCEDURE [dbo].[File_Files_InsertUpdateSingleItem]
(
@FileId numeric(18,0) output,
@Filename nvarchar(255),
@Guid uniqueidentifier,
@Name nvarchar(100),
@ContentType nvarchar(50),
@Size numeric(18, 0),
@Description nvarchar(2000),
@DateCreated datetime,
@DateModified datetime,
@IsUserUploaded bit,
@UploadedByUserID numeric(18, 0)
)
AS
SET NOCOUNT ON
IF @FileId > 0
BEGIN
UPDATE
[dbo].[File_Files]
SET
[Filename] = @Filename,
[GUID] = @Guid,
[Name] = @Name,
[ContentType] = @ContentType,
[Size] = @Size,
[Description] = @Description,
[DateCreated] = @DateCreated,
[DateModified] = @DateModified,
[IsUserUploaded] = @IsUserUploaded,
[UploadedByUserID] = @UploadedByUserID
WHERE
[FileID] = @FileId
END
ELSE
BEGIN
INSERT INTO [dbo].[File_Files](
[Filename],
[GUID],
[Name],
[ContentType],
[Size],
[Description],
[DateCreated],
[DateModified],
[IsUserUploaded],
[UploadedByUserID])
VALUES(
@Filename,
@Guid,
@Name,
@ContentType,
@Size,
@Description,
@DateCreated,
@DateModified,
@IsUserUploaded,
@UploadedByUserID)
SET @FileId = scope_identity()
END
instante mi favorito nombre de usuario/icono combinado, 1 – slf
Por favor enviar el DDL de la mesa File_Files, extraído de su producción base de datos. Gracias. –