tipos tipo programacion logico implicita entero ejemplos datos dato convert conversion sql-server uniqueidentifier ssms

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