Heidisql: AUTO_INCREMENT no funciona en el servidor MSSQL

Creado en 30 oct. 2018  ·  5Comentarios  ·  Fuente: HeidiSQL/HeidiSQL

Pasos para reproducir este problema

  1. Cree una tabla en un servidor SQL;
  2. Agregue una columna de ID;
  3. Configure la columna ID para que se incremente automáticamente configurando el valor predeterminado en AUTO_INCREMENT;
  4. Guarda la tabla. Puede resultar en la creación o actualización de la tabla. esto falla

Comportamiento actual

No crea ni modifica la tabla.
Da un error en la parte AUTO_INCREMENT de la declaración.

Comportamiento esperado

Debe crear o actualizar la tabla.
No debe dar error.

Solución posible

En lugar de usar AUTO_INCREMENT, el servidor SQL requiere IDENTIDAD (1,1).
El primer número entre paréntesis es el valor inicial, el segundo es el incremento.
Ejemplo:
CREAR TABLA Personas (
ID int IDENTIDAD(1,1) CLAVE PRINCIPAL,
Nombre varchar(255) NO NULO
);

Ambiente

  • Versión HeidiSQL:
    9.5.0.5315, última compilación nocturna. En realidad, no quiero usar una compilación nocturna, sino una compilación estable.
  • Sistema de base de datos y versión:
    Servidor SQL, todas las versiones.
  • Sistema operativo:
    Windows 10 en el cliente, desconocido en el servidor.

Todos 5 comentarios

¿Es esto un gran cambio? ¿Sería fácil para un primer PR?

Tengo el mismo problema.
¿Hay una solución a este problema?

¡Oh Dios! Es 2020 y esto sigue abierto. Chicos, arreglen esto lo antes posible.
FYI: estoy usando HeidiSql v10.3

También me encuentro con esto hoy. Una de las únicas razones por las que tengo que abrir SSMS :(

Aquí hay un script para generar una tabla en MS SQL 12.0.5223.6 que ilustra el problema:

CREATE TABLE [dbo].[User](
    [Username] [nvarchar](20) NOT NULL,
    [FullName] [nvarchar](50) NOT NULL,
    [EmailAddress] [nvarchar](100) NULL,
    [LastLoginDate] [datetime] NULL,
    [IsAdministrator] [bit] NULL,
    [Roles] [int] NOT NULL,
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [CreatedAt] [datetime2](7) NOT NULL,
    [CreatedBy] [nvarchar](20) NOT NULL,
    [ModifiedAt] [datetime2](7) NULL,
    [ModifiedBy] [nvarchar](20) NULL,
    [LastPortfolioId] [int] NULL,
 CONSTRAINT [PK__User__536C85E5B3CDBFE3] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[User] ADD  DEFAULT (getdate()) FOR [CreatedAt]
GO

ALTER TABLE [dbo].[User] ADD  DEFAULT (suser_sname()) FOR [CreatedBy]
GO

HeidiSQL 10.3.0.5838 no detecta la clave principal:
image

Aquí hay una secuencia de comandos que selecciona índices de clave principal en MS SQL (probablemente no en versiones muy tempranas de MS SQL):

select schema_name(tab.schema_id) as [schema_name], 
    tab.[name] as table_name, 
    pk.[name] as pk_name,
    col.name as col_name
from 
  sys.tables tab
  left outer join sys.indexes pk on tab.object_id = pk.object_id and pk.is_primary_key = 1
  left join sys.index_columns ic on ic.index_id = pk.index_id and ic.object_id = tab.object_id
  inner join sys.columns col on ic.object_id = col.object_id and ic.column_id = col.column_id
order by schema_name(tab.schema_id),
    tab.[name]
¿Fue útil esta página
0 / 5 - 0 calificaciones