sql-server - programacion - tipo de dato logico en sql server
La conversión de ''identificador único'' a ''int'' no se admite en el servidor de base de datos conectado (3)
Estoy a punto de migrar mi base de datos de usar la membresía antigua a la que se incluye en mvc4, que usa int
lugar de guid
.
Al cambiar el tipo me sale el siguiente error:
La conversión de int a identificador único no se admite en el servidor de base de datos conectado.
¿Cómo puedo cambiar UserId
a int
través de SQL Server Management Studio?
La respuesta anterior es correcta, pero no hay "vinculación" con el valor original.
Puedes ~ intentar esto. Pero puede resultar en un valor negativo.
Guid g = new Guid("{cccc3333-3333-3333-cccc-cccc3333cccc}");
byte[] _bytes = g.ToByteArray();
Int64 i = ((Int64)_bytes[0]) | ((Int64)_bytes[1] << 8) | ((Int64)_bytes[2] << 16) | ((Int64)_bytes[3] << 24);
Int64 i = -3333333;
Guid g = new Guid(i, 0, 0, new byte[] {0, 0, 0, 0, 0, 0, 0, 0});
Ese es uno de estos "yo arranqué de Internet", así que úsalo bajo tu propio riesgo.
Me gustaría ir con la respuesta anterior de Thomas Haratyk. Pero ofrezco esto como una opción.
Primero, cambie el tipo de datos a cualquier otro tipo compatible, como varbinary o cualquier cosa. entonces puedes convertir de eso a lo que quieras.
ALTER TABLE ADD [NewId] INTEGER
agregar una nueva columna ( ALTER TABLE ADD [NewId] INTEGER
) y luego ejecutar lo siguiente para completar la nueva columna de identificación:
WITH Cte
AS
(
SELECT *
, ROW_NUMBER() OVER(ORDER BY [Your GUID Column Here] DESC) AS RowNumber
FROM YourTable
)
UPDATE Cte
SET [NewId]= RowNumber
GO
Allí tiene una nueva columna de ID que puede usar una clave primaria agrupada