15

SQL Server でテーブルの ID 列をゼロにリセットするにはどうすればよいですか?

編集:

LINQ to SQL でそれを行うにはどうすればよいでしょうか?

4

6 に答える 6

24
DBCC CHECKIDENT (MyTable, RESEED, NewValue)

Truncate Table を実行することもできますが、もちろん、テーブルからすべての行も削除されます。

L2S 経由でこれを行うには:

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

または、L2S からストアド プロシージャを呼び出して実行することもできます。

于 2010-12-19T19:33:14.480 に答える
9
DBCC CHECKIDENT ( ‘databasename.dbo.yourtable’,RESEED, 0)

詳細: http://msdn.microsoft.com/en-us/library/ms176057.aspx

于 2010-12-19T19:34:03.277 に答える
6

LINQ to SQL ExecuteCommand を使用して、必要な SQL を実行します。

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

LINQ はデータ ソースに依存しないクエリ言語であり、この種のデータ ソース固有の機能のための組み込み機能はありません。LINQ to SQL は、これを行うための特定の関数を提供していません。

于 2010-12-19T19:54:57.713 に答える
3

一般的な拡張方法:

    /// <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);

于 2012-10-02T00:16:29.647 に答える
2

このコードを使用してください

DBCC CHECKIDENT(‘tableName’, RESEED, 0)
于 2010-12-20T04:22:19.773 に答える
0

SQL Compact テーブルで同じタスクを実行するには、次を使用します。

db.CommandText = "ALTER TABLE MyTable ALTER COLUMN Id IDENTITY (1,1)";   
db.ExecuteNonQuery(  );
于 2014-04-22T12:05:39.727 に答える