Avatar
Mirek Senk
Člen
Avatar
Mirek Senk:7.9.2016 13:00

Ahoj, asi se budu pro většinu lidí ptát úplně hloupě.
Mám 2 databáze, jedna je lokální vytvořená přímo v MS SQL Server 2016 Studiu a je jako testovací.
Do druhé se připojuji z toho samého studia ale je na síti a je ostrá, ale již starší 3-5 let.
Když napíšu INSERT pro vložení více řádků:

INSERT INTO [Customer] ([No_], [Name], [No_NAV], [Passwd])
VALUES
('Z02380', 'XXX111222', 'Z02380', '11111c987323­87165bf8e396c0f2dad2'),
('Z01567', 'YYY222333.', 'Z01567', '11111c987323­87165bf8e396c0f2dad2'),
('Z01393', 'ZZZ333444', 'Z01393', '11111c987323­87165bf8e396c0f2dad2')
;

Tak v testovací DB se vše zapíše do tabulky a není problém, u ostré databáze mi to ale vyhodí hlášku:

Msg 102, Level 15, State 1, Line 3
Incorrect syntax near ','.

Pokud zadám INSERT jen na jeden řádek, tak vše proběhne korektně v obou DB.
Nevíte někdo v čem může být problém? Evidentně někde v oddělení jednotlivých záznamů, ale proč to pak v jedné DB projde a v druhé ne. DO obou to vkládám přes stejné Management studio 2016.

Děkuju za jakoukoliv přínosnou radu :)

 
Odpovědět 7.9.2016 13:00
Avatar
Odpovídá na Mirek Senk
Michal Štěpánek:7.9.2016 15:00

Abych pravdu řekl, zatím jsem se s tímto způsobem vkládání více záznamů nesetkal. Možná je to novinka v poslední verzi... Ale nemůže to být tím, že ta starší DB toto "multi" vkládání prostě neumí?

Nahoru Odpovědět 7.9.2016 15:00
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Mirek Senk
Člen
Avatar
Odpovídá na Michal Štěpánek
Mirek Senk:7.9.2016 15:35

No já se učim SQL teprve 3 týdny a toto byl první (a jediný) způsob, který mne napadl, jak vložit více záznamů. Jak byste to napsal vy?

 
Nahoru Odpovědět 7.9.2016 15:35
Avatar
Odpovídá na Mirek Senk
Michal Štěpánek:7.9.2016 15:45

V první řadě si tu tykáme. V druhé řadě já přímo v Management Studiu MSSQL dělám jen nutné úpravy tabulek, programuji (snažím se) v C#, tam bych se připojil k DB a v nějakém cyklu bych ty hodnoty vložil "po jednom". Jak jsem psal výše tento způsob multiinsertu vidím prvně...

Nahoru Odpovědět 7.9.2016 15:45
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
JMS
Člen
Avatar
JMS:7.9.2016 16:01

A na té druhé je jaká verze SQL serveru? Od 2008 to funguje jak máš v příkladu, u starších se to řeší přes UNION.

 
Nahoru Odpovědět 7.9.2016 16:01
Avatar
Paul
Člen
Avatar
Odpovídá na Mirek Senk
Paul:7.9.2016 16:52

Abych řekl pravdu, tak ani jeden ze zápisů insertu jsem zatím neviděl. Ani to jak to máš napsané ty, ani pomocí UNIONu, jak napovídá JMS.
V praxi to chodí tak, že co řádek to jeden samostatný insert.
Nejlepší by tedy bylo si vytvořit nějaký cyklus, který ti tam data postupně nasype.

Pokud to řešíš ručně, je potřeba napsat inserty v následující struktuře:

INSERT INTO [Customer] ([No_], [Name], [No_NAV], [Passwd]) VALUES ('Z02380', 'XXX111222', 'Z02380', '11111c98732387165bf8e396c0f2dad2');
INSERT INTO [Customer] ([No_], [Name], [No_NAV], [Passwd]) VALUES ('Z01567', 'YYY222333.', 'Z01567', '11111c98732387165bf8e396c0f2dad2');
INSERT INTO [Customer] ([No_], [Name], [No_NAV], [Passwd]) VALUES ('Z01393', 'ZZZ333444', 'Z01393', '11111c98732387165bf8e396c0f2dad2');
Editováno 7.9.2016 16:55
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  ±0 7.9.2016 16:52
Avatar
Mirek Senk
Člen
Avatar
Odpovídá na Paul
Mirek Senk:8.9.2016 9:03

Tak řešením je opravdu zřetězení příkazu. Asi je tam opravdu něco staršího než 2008 (myslim, že 2006).
Každopádně děkuju všem za reakce. Po 3 týdnech práce s DB sem fakt na začátku btw. k Funkci UNION jsem se ještě nedostal :)

 
Nahoru Odpovědět 8.9.2016 9:03
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 7 zpráv z 7.