usuario users una template solo script puede password new independiente for datos create crear contraseña con active azure-sql-database

azure sql database - users - ¿Cómo puedo cambiar la clave principal en SQL Azure?



create users azure sql database (5)

Voy a cambiar la clave principal en SQL Azure. Pero arroja un error cuando se usa Microsoft SQL Server Management Studio para generar los scripts. Porque cada tabla en SQL Azure debe contener una clave primaria. Y no puedo dejarlo caer antes de crear. ¿Qué puedo hacer si debo cambiarlo?

Script generado

IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N''[dbo].[mytable]'') AND name = N''PK_mytable'') ALTER TABLE [dbo].[mytable] DROP CONSTRAINT [PK_mytable] GO ALTER TABLE [dbo].[mytable] ADD CONSTRAINT [PK_mytable] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) GO

Mensaje de error

Msg 40054, Level 16, State 2, Line 3 Tables without a clustered index are not supported in this version of SQL Server. Please create a clustered index and try again. Msg 3727, Level 16, State 0, Line 3 Could not drop constraint. See previous errors. The statement has been terminated. Msg 1779, Level 16, State 0, Line 3 Table ''t_event_admin'' already has a primary key defined on it. Msg 1750, Level 16, State 0, Line 3 Could not create constraint. See previous errors.


Aprecio que esto pueda llegar tarde en el día para ti, pero puede ayudar a otros.

Hace poco me encontré con este problema y encontré que la solución menos dolorosa era descargar la base de datos de Azure, restaurarla localmente, actualizar la clave principal localmente (ya que la restricción clave es un problema específico de SQL Azure) y luego restaurar la base de datos en Azure .

Esto guardó cualquier problema relacionado con el cambio de nombre de las bases de datos o la transferencia de datos entre ellas.


Esta pregunta no está actualizada porque el cambio de PK ya es compatible con la última versión de SQL Azure. Y no tienes que crear una tabla temporal.


Me encontré con este problema exacto y me puse en contacto con el equipo de Azure en los foros. Básicamente no es posible. Tendrá que crear una nueva tabla y transferir los datos a ella.

Lo que hice fue crear una transacción y dentro de ella hacer lo siguiente:

  • Cambió el nombre de la tabla anterior a OLD_MyTable.

  • Cree la nueva tabla con la clave primaria correcta y llámela MyTable.

  • Seleccione los contenidos de OLD_MyTable en MyTable.

  • Soltar OLD_MyTable.

También es posible que deba llamar a sp_rename en cualquier restricción para que no entren en conflicto.

Consulte también: http://social.msdn.microsoft.com/Forums/en/ssdsgetstarted/thread/5cc4b302-fa42-4c62-956a-bbf79dbbd040


Puedes probar los siguientes scripts. Cámbiala para adaptarla a tu tabla def.

EXECUTE sp_rename N''[PK_MyTable]'', N''[PK_MyTable_old]'', ''OBJECT'' CREATE TABLE [dbo].[Temp_MyTable]( [id] [int] NOT NULL, [text] [text] NOT NULL CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED ( [id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)) INSERT INTO dbo.[Temp_MyTable] (Id, Text) SELECT Id, Text FROM dbo.MyTable drop table dbo.MyTable EXECUTE sp_rename N''Temp_MyTable'', N''MyTable'', ''OBJECT''


actualización de SQL V12 y montones son compatibles con él. Así que puedes soltar la clave principal y recrearla.