Сбросить нулевой столбец идентичности в SQL Server?

Как я могу сбросить столбец Identity таблицы в ноль в SQL Server?

Редактировать:

Как мы можем сделать это с помощью LINQ to SQL?

6 ответов

Решение
DBCC CHECKIDENT (MyTable, RESEED, NewValue)

Вы также можете создать таблицу усечений, но, конечно, это также удалит все строки из таблицы.

Для этого через L2S:

db.ExecuteCommand("DBCC CHECKIDENT('MyTable', RESEED, NewValue);");

Или вы можете вызвать хранимую процедуру из L2S, чтобы сделать это

DBCC CHECKIDENT ( ‘databasename.dbo.yourtable’,RESEED, 0)

Дополнительная информация: http://msdn.microsoft.com/en-us/library/ms176057.aspx

Используйте команду LINQ to SQL ExecuteCommand для запуска необходимого SQL.

db.ExecuteCommand("DBCC CHECKIDENT('table', RESEED, 0);");

LINQ - это язык запросов, не зависящий от источника данных, и не имеет встроенных средств для этого вида функций, специфичных для источника данных. LINQ to SQL не предоставляет конкретной функции для этого либо AFAIK.

Используйте этот код

DBCC CHECKIDENT(‘tableName’, RESEED, 0)

Общий метод расширения:

    /// <summary>
    /// Reseeds a table's identity auto increment to a specified value
    /// </summary>
    /// <typeparam name="TEntity">The row type</typeparam>
    /// <typeparam name="TIdentity">The type of the identity column</typeparam>
    /// <param name="table">The table to reseed</param>
    /// <param name="seed">The new seed value</param>
    public static void ReseedIdentity<TEntity, TIdentity>(this Table<TEntity> table, TIdentity seed)
        where TEntity : class
    {
        var rowType = table.GetType().GetGenericArguments()[0];

        var sqlCommand = string.Format(
            "dbcc checkident ('{0}', reseed, {1})",
            table.Context.Mapping.GetTable(rowType).TableName, 
            seed);

        table.Context.ExecuteCommand(sqlCommand);
    }

Использование: myContext.myTable.ReseedIdentity(0);

Для выполнения той же задачи в таблице SQL Compact используйте:

db.CommandText = "ALTER TABLE MyTable ALTER COLUMN Id IDENTITY (1,1)";   
db.ExecuteNonQuery(  );
Другие вопросы по тегам