Autor Beitrag
Holonet
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 24.04.12 07:35 
Hallo zusammen.

Ich habe eine C#-Anwendung die mehrere DataTables in einem DataSet hält(nicht permanent, es erstellt diese zur Laufzeit basierend auf CSV-Files). Diese Daten sollen in SQL Server gespeichert werden.

Was ist die einfachste Möglichkeit diese zu verschieben? Ich habe mir etwas von Table Valued Parameters sagen lassen, damit könne man die Tabellen quasi einfach rüberschieben. Ich habe dazu mal den Artikel auf MSDN gelesen und bin nicht wirklich schlau draus geworden... mein SQL-Wissen ist sehr basic. Ausserdem will ich ja nicht bei jedem Speichervorgang eine neue Tabelle auf dem Server(das stell ich mir unter "rüberschieben" vor), sondern die sollen alle in die gleichen Tabelle und sich dann über IDs identifizieren.

Lohnt es sich Zeit in TVP zu investieren oder bietet sich ein anderer Weg an?
Holonet Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 24.04.12 16:14 
Ich habe jetzt mal ein bisschen gelesen und versucht einen Prototypen zu basteln(basteln trifft es wirklich ganz gut).

Nach Anleitung habe ich die Tabellen, SP und Benutzerdefinierten Tabellentyp erstellt:

ausblenden volle Höhe SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
CREATE TABLE manual_input
(
InputID INT PRIMARY KEY,
Auftraggeber VARCHAR(30),
Testgrund VARCHAR(30),
Projekt VARCHAR(30)
)
GO 


create type manual_inputType as table
(
Auftraggeber VARCHAR(30), Testgrund VARCHAR(30), Projekt VARCHAR(30)
);
GO


CREATE Procedure InsertManualInput
@InsertManualInput_TVP manual_inputType READONLY
AS
INSERT INTO manual_input(Auftraggeber,Testgrund,Projekt)
SELECT * FROM @InsertManualInput_TVP;
GO

DECLARE @ManualInputTVP AS manual_inputType;

INSERT INTO @ManualInputTVP(Auftraggeber,Testgrund,Projekt)
VALUES('Ich','einfach so','ANNO1291');

EXEC InsertManualInput @ManualInputTVP;
GO


Wenn ich das so ausführe funktioniert das auch. Natürlich müssen nun aber die hartcodierten Eingabewerte Variabeln weichen. Und da bricht bei mir alles zusammen und mir fehlt jeglicher Durchblick.
Wo muss ich die Variabeln deklarieren? Ich würde sagen bei der SP aber dann kennt er beim Ausführen der SP die Parameter nicht. Im Moment versteh ich nichtmal mehr, was der letzte Codeabschnitt überhaupt macht.
Ich hoffe ihr könnt mir irgendwie helfen, hier den Durchblick zu erlangen.

Gruss Holo