Diskuze: Increments in SQL DB

Ostatní jazyky SQL SQL a databáze Increments in SQL DB

Avatar
Franc Beran
Člen
Avatar
Franc Beran:

Zdravím všechny. Vytvořil jsem si již pár SQL DB a využívám je v C#. Databáze vytvářím buď v SQL Management studiu nebo v mém C# programu, kde po vytvoření tabulky do ní exportuji Excel soubor. Ať ve studiu nebo v programu dávám ID v tomto tvaru:
ID int IDENTITY(1,1) PRIMARY KEY
Nevím proč se mi pak dějí incrementy po 1000. V čem je chyba?

 
Odpovědět 21.10.2015 8:31
Avatar
shaman
Člen
Avatar
Odpovídá na Franc Beran
shaman:

Syntax je spravna a nemalo by to robit.
Pouzivas SQL 2012?
Incrementuje to po 1000 stale alebo len po restarte?

Nahoru Odpovědět 21.10.2015 11:10
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Milan Křepelka
Redaktor
Avatar
Milan Křepelka:

Co si ukazuje MS po vytvoření DB na tom sloupci. Jaký je tam identity ?

 
Nahoru Odpovědět 21.10.2015 12:26
Avatar
Franc Beran
Člen
Avatar
Odpovídá na shaman
Franc Beran:

Používám MS SQL 2012, a vesele to přidává pořád po 1000. Řešil jsem to přesypáním tabulky do jiné, kterou jsem pak přejmenoval, tam jsou increments po 1, ale pak se to třeba po dvou dnech opět přihodí. (???)

 
Nahoru Odpovědět 22.10.2015 8:47
Avatar
Franc Beran
Člen
Avatar
Odpovídá na Milan Křepelka
Franc Beran:

Když začínám psát data do tabulky inkrementuje to po 1. Ale potom přidám záznam třeba druhý den a najednou je tam skok. Tady je příklad mojí tabulky:
string SP_create_query = " (ID int IDENTITY(1,1) PRIMARY KEY,"
+ "Datum nvarchar(50) NULL, "
+ "Balance nvarchar(50) NULL, "
+ "Charge nvarchar(50) NULL, "
+ "Item nvarchar(50) NULL, "
+ "Notes nvarchar(MAX) NULL, "
+ "LifeRest nvarchar(50) NULL, "
+ "ChargeRest nvarchar(50) NULL, "
+ "ChargeIndex int NULL); ";
Zkuste se nevyděsit toho, že u určitých typově jasných položek jsem se uchýlil ke stringu. Měl jsem potíže s UPDATE a INSERT tak to za mne vyřešil C#. Tímto bych taky požádal o jasnou praxi se zadáváním typu DATETIME a INT a FLOAT v těchto rutinách.

 
Nahoru Odpovědět 22.10.2015 9:10
Avatar
Milan Křepelka
Redaktor
Avatar
Milan Křepelka:

Je to zajímavé. Jestli chceš, pošli mi prázdný backup, zkusím jestli to je databází nebo serverem. Teďka mám dovolenou a doma nemám velký server, ani 2012, ale v pondělí bych se na to zkusil kouknout.

Editováno 22.10.2015 9:52
 
Nahoru Odpovědět 22.10.2015 9:51
Avatar
shaman
Člen
Avatar
Odpovídá na Franc Beran
shaman:

Takze nasledujuci den, ked sa ti PC restartuje a s nim aj SQL, tak ti to prida 1000. Je to znamy bug. Chyba je teda v SQL.
Tu je nejaky tip na riesenie ale neviem ci to funguje: http://stackoverflow.com/…ver-database

Nahoru Odpovědět 22.10.2015 11:16
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na shaman
Milan Křepelka:

Heh, tak to je fakt úlet.

 
Nahoru Odpovědět  +1 22.10.2015 11:22
Avatar
Franc Beran
Člen
Avatar
Odpovídá na Milan Křepelka
Franc Beran:

Nejspíš to dělá Server 2012. Našel jsem toto, udělal to a dávám to dál:
http://stackoverflow.com/…ver-database
Přesypu ty svoje DB a uvidím, teď mi to leze aspoň po 1. 6003, 6004, 6005 atd.

 
Nahoru Odpovědět 24.10.2015 6:14
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Franc Beran
Milan Křepelka:

J už ti to sem poslal shaman. Je to opravdu laciný bug. V těch komentářích to popisujou v čem je problém.

 
Nahoru Odpovědět 24.10.2015 10:06
Avatar
Franc Beran
Člen
Avatar
Odpovídá na Milan Křepelka
Franc Beran:

Tady jsem našel asi konečný řešení:
http://www.codeproject.com/…alue-Jump-Is
V management studiu jsem přesypal tabulky a inkrement se chová jak má. Je to tím severem 2012 a přidáním "-t272" do startup parametrů serveru. Jinak já používám localdb.

 
Nahoru Odpovědět 25.10.2015 7:36
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.