Quantcast
Channel: Für Entwickler: SQL Server Forum
Viewing all 1772 articles
Browse latest View live

Normalisierung einer Tabelle

$
0
0

Hallo,

ich bin noch recht neu auf dem Gebiet und stehe vor folgendem Problem.
Die Daten, die vorliegen, sollen normalisiert werden.

MANDT	VTINT		SLNID	ATINN				VALC
200		0000000304	00001	G_GEAR_VERSION		10
200		0000000304	00001	G_GEAR_VERSION		20
200		0000000304	00001	G_GEAR_VERSION		30
200		0000000304	00001	G_GEAR_VERSION		NICKEL
200		0000000304	00001	G_GEAR_VERSION		SIDEL
200		0000000304	00001	B_COUNTRY_SELECTION	DE

200		0000000304	00002	G_GEAR_VERSION		PH_K
200		0000000304	00002	G_GEAR_VERSION		STD
200		0000000304	00002	G_GEAR_VERSION		VACUUM
200		0000000304	00002	B_COUNTRY_SELECTION	DE
200		0000000304	00002	B_COUNTRY_SELECTION	US

200		0000000304	00003	G_GEAR_VERSION		BDW
200		0000000304	00003	G_GEAR_VERSION		BDW_LL
200		0000000304	00003	G_GEAR_VERSION		FD
200		0000000304	00003	G_GEAR_VERSION		FD_LL
200		0000000304	00003	G_GEAR_VERSION		LL
200		0000000304	00003	B_COUNTRY_SELECTION	US

Als Endprodukt bräuchte ich diese Tabelle

Die Spalteanzahl kann dabei ebenfalls variable sein.

MANDT	VTINT		SLNID	G_GEAR_VERSION	B_COUNTRY_SELECTION
200	0000000304	00001	10		DE
200	0000000304	00001	20		DE
200	0000000304	00001	30		DE
200	0000000304	00001	NICKEL		DE
200	0000000304	00001	SIDEL		DE

200	0000000304	00002	PH_K		DE
200	0000000304	00002	STD		DE
200	0000000304	00002	VACUUM		DE
200	0000000304	00002	PH_K		US
200	0000000304	00002	STD		US
200	0000000304	00002	VACUUM		US

200	0000000304	00003	BDW		US
200	0000000304	00003	BDW_LL		US
200	0000000304	00003	FD		US
200	0000000304	00003	FD_LL		US
200	0000000304	00003	LL		US

Gibt es eine einfache Möglichkeit dies zu erreichen?







dbo Schema

$
0
0

Hallo,
gibt es eine Möglichkeit beim Import von Tabellen (Bsp. Access) vor den Tabellennamen kein Schema! (z.B. dbo oder anderes) zu setzen, sondern
das der Tabellennamen unverändert bleibt?
Hintergrund ist die Migration von DB auf SQL Server 2014, welche anschließend mit Access als Frontend verknüft werden sollen.
Nach der Verknüpfung mit Access Tabellennamen = dbo_Tabellennamen, so funktionieren die Abfragen auf die Tabellen nicht mehr.


Gruß ro_grille

Linked Server für PostgreSQL/PostGIS

$
0
0

Hallo Leute,

Ich habe folgendes Problem:

Ich habe Lokal eine PostgreSQL Datenbank mit der räumlichen erweiterung  PostGIS. Was ich gerne möchte ist, dass ich über das Microsoft SQL Server Managament Studio diese Datenbank anspreche.
Das ganze funktioniert leider nur zu einem Teil, ich habe es geschafft eine Verbindung aufzubauen und Querys zu erstellen. Jedoch funtioniert das ganze nicht wenn in einem Table eine Geometry Spalte inkludiert ist. Wenn ich dann eine Abfrage erstelle kommt folgende Fehlermeldung:

Msg 7356, Level 16, State 1, Line 1
The OLE DB provider "MSDASQL" for linked server "LOCAL POSTGRESQL" supplied inconsistent metadata for a column. The column "geom" (compile-time ordinal 8) of object ""postgis"."public"."kg"" was reported to have a "DBCOLUMNFLAGS_ISLONG" of 128 at compile time and 0 at run time.

Mein allgemeines Vorgehen zur erstellen der Verbindung habe ich hier abgeschaut
https://www.mssqltips.com/sqlservertip/3662/sql-server-and-postgresql-linked-server-configuration--part-2/

Ich hoffe ihr könnt mir weiterhelfen.

Hochkomma maskieren in tsql

$
0
0

Hi,

Mein Problem ist folgendes ich habe bis vor kurzem einen Report  gehabt der im Reportserver einfach das SQL Statement zusammengesetzt hat

z.b. ="select * from Person where Vorname in (" & Parameters!Namen.value ")"

Das hat wunderbar geklappt weil der Parameter wie folgt aussieht 'Albert','Heinrich','Ilse'

Nun musste ich den Bericht allerdings verändern und aus der ehemaligen Abfrage musste nun eine Prozedur werden.

Jetzt kann ich natürlich den Abfragestring auch in der Prozedure zusammensetzen in dem ich einfach es wie folgt mache:

Declare @sqlstring as nvarchar(max)

set sqlstring = 'select * from Person'

execute sp_executesql @sqlstring

Das würde ja an sich soweit klappen aber nun kommt das Problem ins spiel:

In meiner Variabel Name steht es natürlich so drin:  'Albert','Heinrich','Ilse'

Das Statement würde so lauten

Declare @sqlstring as nvarchar(max)

Declare @Name as nvarchar(max)

set @Name = 'Albert','Heinrich','Ilse'

set sqlstring = 'select * from Person where Name in (' + @Name + ')'

execute sp_executesql @sqlstring

und nun sehen wir schon das Problem ich kann natürlich keine Hochkommawerte so in einer Variable speichern und schon gar nicht so in den SQL String einbauen d.h. ich muss die Hochkomma irgendwie maskieren und hier scheitere ich sowohl mit meinem Wissen als auch mit der Suche nach einer Lösung.

Ziel sollte also sein das ich am Ende dieses Statement ausführe select * from Person where Name in ('Albert','Heinrich','Ilse')

Ich bedanke mich im voraus für jeden Hilfreichen Kommentar.

mfg & thx

Massenimport von großen Datenmengen automatisieren

$
0
0

Hallo zusammen,

ich stehe vor folgendem Problem, und weiß leider nicht mehr weiter. Auch die Suche in diversen Foren brachte mich nicht weiter.

Ich habe auf einen SQL-Server 2008 R2 eine Datenbank erstellt, die mit Testdaten soweit ganz gut funktioniert. Jetzt möchte ich die Reeelen Daten in eine Tabelle laden. Dazu möchte ich weitesgehend vollständig automatisiert ca. 100 CSV-Dateien/Excel-Dateien mit jeweils ca. 500.000 Datensätze importieren. Anschließend kommt dann jeden Tag eine Datei mit ca. 25.000 Datensätze hinzu, die ebenfalls am besten vollautomatisiert importiert werden soll.

Meine Problem ist jetzt: Manuell über den import-Assistent könnte ich das bewerkstellungen, würde mich aber ca 2 Monate meines Lebens kosten :-).

Wie geht man an solch eine Aufgabe heran ???

Für Hilfe währe ich unendlich Dankbar

Viele Grüße

Andreas

Import von langen CSV-Texteinträgen nicht möglich!? Datenkonvertierungsfehler beim Abschneiden ergibt Statuswert '4'

$
0
0

Hallo zusammen,

der Import von csv-Dateien bereitet mir leider ständig Probleme. Ich habe in der Datei 2 Felder "Bemerkungen" und "Betreff" die u.a. auch Sonderzeichen wie das Simikolon als Trennzeichen beinhalten und ziemlich viel Text enthalten. Die Semikolon im Text habe ich erst mal gelöscht.

Über den Verbindungsmanager habe ich die csv-Datei verbunden. Über den Quellenassient habe ich die angelegt Quelle verknüpft und habe dann execute-Task ausgeführt.

Fehlermeldung:

Fehler bei der Datenkonvertierung. Die Datenkonvertierung für die Bemerkung-Spalte gab den Statuswert '4' und den Statustext 'Der Text wurde abgeschnitten, oder ein oder mehrere Zeichen hatte(n) auf der Zielcodepage keine Entsprechung.' zurück. Selbst, wenn ich die Spalte rausnehme kommt das nächste Feld und meckert rum :(

Frage:

Was ist der Grund und wie kann ich vernüftig solche Dateien auf den Server importieren. Insbesondere habe ich auch bei der Konvertierung ständig Probleme und weiß nicht was ich auswählen soll (Zeichenfolge DT_STR bringt beim Import in die Zieltabelle als nvarchar 255 usw. Probleme, da hier Unicode-Zeichenfolge verlangt wird). Die Tabelle hatte ich damals per Excelimport automatisch genereriert. Vielen Dank für ein paar für mich erleuchtende Erläuterung zum Verständnis, damit die Tüftellei etwas reduzieren kann und der Import ermöglicht wird. 

Gruß Chris

SSAS - Datenaggregation

$
0
0
Hallo

Da ich erst seit kurzer Zeit einige Cubes "baue", stoße ich gerade an meine Grenzen. Im Großen und Ganzen habe ich das Prinzip schon verstanden, stehe aber vor dem folgenden Problem. Mein Cube hat eine benutzerdefinierte Hierachie, ebenso auch Attributhierachien, hat aber mit dem eigenlichen Problem weniger zu tun. Wenn ich alle Hierachien aufspanne, sehe ich bis ins Detail aufgelöst folgende Zeilen und Spalten (ich konstruiere hier nur ein einfaches Beispiel)

Rubrik----------x----------------y---------------------z
Bsp1-----------2---------------4----------------------2
Bsp2-----------2---------------7---------------------4.5
Total-----------4---------------11-------------------2.75

Also z = y/x  --> z resultiert aus einer Kalkulation (Reiter: Calculation)

In der Totalzeile (und nur dort) soll z nicht mit y/x ermittelt werden, sondern stattdessen eine Addition der Z Spalte vorgenommen werden, also auf das Beispiel bezogen soll z = 6,5 sein. Gibt es eine Möglichkeit, in der Totalen von der Zeilenberechungsmethode abzuweichen ?

Gruß

Oliver






Kein Dataset ausgeben lassen für eine "zwischen" Prozedur

$
0
0

Hallo Kollegen,

habe ein tricky Problem, möglicherweise weil ich die Hilfe nicht verstehe ;-)

Was will ich tun:

Habe eine Prozedur welcher ich zwei Variablen übergebe.

In dieser Prozedur muss ich einen Remotecommand absetzen, der mir nur sagt ob der Command erfolgreich war oder nicht.

EXECUTE @erg = dbo.%Prozedur% @variable

Danach läuft die weitere Verarbeitung wo am Schluss mein Result Dataset kommt.

dumm ist das, ich ein Dataset become für die oben genannte "zwischen Prozedur".

Ich will das Dataset aber nicht bekommen.

Was kann ich da tun?

Danke


thx Martin


Ausblenden von Spalten nicht möglich, da Eigenschaft ausgegraut

$
0
0

Hallo zusammen,

ich habe einen relationalen Bericht per Assistent erstellt, wo in der Spalte die Datenart (Plan/Ist) und in den Zeilen die Artikel angezeigt werden. Unter den Artikeln sind per +-Zeichen die Kunden zu sehen. Gerne möchte die Spalte ausblenden solange die Ebene "Kunde" nicht aufgeklickt wird. Leider ist die Spaltensichtbarkeit ausgegraut. In den Eigenschaften der Spalte habe ich bei Size mal 2;2 eingegeben und plötzlich hat sich die ganze Gruppe in Höhe und Breite verändert.

Was läuft da schief bzw. wer kennt die Zusammenhänge und einen Lösungsansatz? Vielen Dank.

Gruß Chris

Zähler in Tabelle in Abhängigkeit von weiteren Werten einfügen

$
0
0

Hallo, ich habe das Problem, dass ich in einer Tabelle einen Zähler benötige, der aber in Abhängigkeit von Werten in den Spalten 1-3 immer wieder bei 1 anfängt, sobald sich die Gruppe verändert. Als Beispiel:

Feld1-----Feld2----Feld3---Zähler
111-------1--------A--------1
111-------1--------A--------2
111-------1--------A--------3
111-------1--------A--------4
111-------1--------B--------1
111-------1--------B--------2
111-------2--------A--------1
111-------2--------A--------2
111-------2--------B--------1
222-------1--------A--------1
222-------1--------A--------2
222-------1--------A--------3
222-------1--------A--------4
222-------1--------B--------1
222-------2--------A--------1
222-------2--------A--------2
222-------2--------A--------3
222-------2--------B--------1

Es geht dabei um Tabellen, die immer wieder neu eingelesen werden. Ich dachte an eine Update-Funktion, die nach dem Import die Zählerspalte füllt. Jemand eine Idee?

Meta-Daten für Felder in SQL-Server 2014

$
0
0

Hallo Zusammen !

Im  Visual-Foxpro-Datenbank-Container kann man für jedes Feld Meta-Daten
wie Format, Eingabe-Maske und Überschrift/Caption hinterlegen. Diese Daten
kann man zur Laufzeit mittels DBGetProp abfragen.

Gibt es beim SQL-Server auch eine "einfache" Möglichkeit Meta-Daten je Feld
zu hinterlegen?
Mir geht es hierbei um die Überschrift/Caption welche für den Benutzer
lesbar ist um kombinierte Suchfilter erstellen zu können. Die Erstellung soll dabei

data-driven sein, also in der Datenbank hinterlegt und nicht in der Applikation/GUI.


Zur dynamischen Erzeugung/Konfiguration des VFP-Cursor-Adpaters hole ich
mir die Tabellen und Feldinformation aus der Systemansicht
'Information_Schema.Columns'.
Kann/darf man da Änderungen vornehmen und wird diese Änderung in der zugehörigen
Applikations-Datenbank hinterlegt damit auch in der Kunden-Datenbank diese
Information enthalten ist?

Vielen Dank schonmal im Vorraus.

--

Hans-Peter


JPG-Bilder ueber einen Pfad als Binaer-Obrekt in eine Tabelle einfuegen

$
0
0

Hallo,

auf einem MS SQL-Server 2008 R2 habe ich eine Tabelle ("BilderPfad"), die für jeden Datensatz einen Pfad für eine JPG-Datei beinhaltet.
Jetzt möchte ich die Datensätze in die Tabelle ("BilderVerwaltung") übernehmen, allerdings die JPG-Datei als Binärobjekt einfügen.

Tabelle "BildPfad"
GUID (PS, uniqueidentifier, Nicht NULL)
ErstelltAm (datetime, NULL)
ErstelltDurch (nvarchar(50), NULL)
GeändertAm (datetime, NULL)
GeändertDurch (nvarchar(50), NULL)
DokumentFlag (bit, Nicht NULL)
BildFlag (bit, Nicht NULL)
Bemerkung (nvarchar(max), NULL)
ZeitStempel (timestamp, NULL)
Objekt (uniqueidentifier, Nicht NULL)
MenueFunktion (uniqueidentifier, NULL)
TabellenName (nvarchar(50), NULL)
DatenbankTyp (nvarchar(10), NULL)
Bildpfad (nvarchar(255), NULL)
AnzeigeIdentifizierer (nvarchar(100), NULL)
BildNummer (int, Nicht NULL)
LetzteBildÄnderung (datetime, nicht NULL)


Tabelle: "BildVerwaltung"
GUID (PS, uniqueidentifier, Nicht NULL)
ErstelltAm (datetime, NULL)
ErstelltDurch (nvarchar(50), NULL)
GeändertAm (datetime, NULL)
GeändertDurch (nvarchar(50), NULL)
DokumentFlag (bit, Nicht NULL)
BildFlag (bit, Nicht NULL)
Bemerkung (nvarchar(max), NULL)
ZeitStempel (timestamp, NULL)
Objekt (uniqueidentifier, Nicht NULL)
MenueFunktion (uniqueidentifier, NULL)
TabellenName (nvarchar(50), NULL)
DatenbankTyp (nvarchar(10), NULL)
Bild (varbinary(max), NULL)
AnzeigeIdentifizierer (nvarchar(100), NULL)
BildNummer (int, Nicht NULL)
LetzteBildÄnderung (datetime, nicht NULL)



Jetzt habe ich mit dem SQL-Befehlen OPENROWSET schon alles probiert, aber ich finde keine Lösung.

Ich weiss nicht, wie das fertige SQL-Script aussehen soll???

Es wäre toll, wenn hier jemand eine Lösung hat, und mich als Anfänger unterstützen würde.

Vielen Dank.



Datensatz splitten

$
0
0

Hallo,

ich möchte gerne einen Datensatz in einzelne Teilen Splitten.

Um das Problem genauer zu beschreiben. Es gibt einen Auftrag mit der Stückzahl n für jedes Teil soll nun eine Prüfung statt finden. Also möchte ich eine Tabelle mit n Zeilen um für jedes Teil Prüfung ok oder eben nicht ok eingetragen werden kann. Wie kann ich es über SQL lösen das solch eine Tabelle erstellt wird.

Microsoft Server SQL 2012 auf 2008

$
0
0

Gibt es eine Möglichkeit meine Daten aus 2012 in eine Datenbank zu importieren die unter 2008 läuft?

Außerdem möchte ich wissen, ob es Möglich ist mit der 2008er Version eine Verbindung von Excel (Client) auf die SQL-Datenbank (Server) herzustellen.

Vielen Dank für Eure Antworten.

Datenkonvertierungsfehler bei csv-Datenimport von Numeric-Felder mit Nachkommastelle (Statuswert 2)

$
0
0

Hallo zusammen,

ich habe eine csv-Datei und die Felddefintion aus dem ERP-System Int(zzz,zz9.99). In der angelegten Tabelle auf dem SQL-Server habe ich das Feld einmal als numeric (6,2) und auch als decimal (6,2) definiert. Da die CSV-Datei scheinbar keine brauchbaren Formate hat und ich auch in Excel vorher als Versuch das Format der Spalte geändert habe, habe ich im Datenfluss eine Konvertierung vor dem Mapping gesetzt. Hier kommt der Fehler nach execute Task:

[Datenkonvertierung [47]] Fehler: Datenkonvertierungsfehler beim Konvertieren der Breite-Spalte (141) in die Kopie von 'Breite'-Spalte (91). Die Konvertierung gab den Statuswert '2' und den Statustext 'Der Wert konnte aufgrund eines möglichen Datenverlustes nicht konvertiert werden.' zurück.

In der Ziel OLE-Zieltabelle kommt nichts an, der Job bricht bei 9500 Datensätzen ab und ich erkenne in der csv-Datei keinen Unterschied in dem Datensatz der den Fehler verursachen könnte. Ein Import als char(50) macht keine Probleme. Ich habe die Konvertierung mit Numerisch [DT_NUMERRIC] und auch als Decimal[DT_DECIMAL] vorgenommen (mit 8 0 oder mit 6 2 usw.). Es erscheint immer die Fehlermeldung :(  Numeric ohne Nachkommastellen lassen sich importieren. Hat die ev. etwas mit dem Komma/Punkt zu tun und wie umgehe ich dieses Problem?

Was läuft da schief :( Vielen Dank für eure Tipps!

Gruß Chris

 



INSERT EXEC aus Stored Procedure nicht für alle Spalten

$
0
0

Hi,

bei "INSERT INTO <MyTable> EXEC <MyStoredProc>" muss die Spaltendefinition von <MyTable> ja der Ausgabe von <MyStoredProc> entsprechen.

Gibt es jedoch eine Möglichkeit, nur ein Teil der Spalten des Resultsets der Stored Proc in die Tabelle einzufügen? Ich habe hier eine SP mit 50 Ergebnisspalten, brauche aber davon nur 3 Spalten, die ich nach <MyTable> übernehmen möchte. Geht das?

Vielen Dank schon mal.

Franz

Datumsdifferenz in Tagen minus Wochendend und Feiertage

$
0
0

Hallo, ich habe eine Tabelle mit einem Eingangsdatum und einem Ausgangsdatum. Dazu habe ich eine Funktion, die bei einem konkreten Datum feststellt, ob es sich um ein Werktag, ein Wochenende oder einen Feiertag handelt.

Jetzt möchte ich die Differenz zwischen Eingangsdatum und Ausgangsdatum in Tagen ermitteln, dabei sollen dann aber die Tage eliminiert werden, bei denen es sich um einen Feiertag oder ein Wochenende handelt. Als konkretes Beispiel:

Eingangsdatum: 24.03.2016
Ausgangsdatum: 30.03.2016

Differenz wäre 6 Tage, nach Abzug Wochenende und Feiertage aber nur zwei Tage.

GETDATE() oder NOW() per SQL ohne Uhrzeit abfragen

$
0
0

Hallo zusammen,

ich brauche das aktuelle Datum ohne Uhrzeit. Wie kann ich dies abfragen bzw. im Anschluss mit 0:00:00:000 ausgeben? Ich bekomme es nicht ohne Uhrzeit hin :( Vielen Dank.

Gruß Chris

was für absolute SQL Cracks - Ein Feld zusammensetzten aus mehreren Datensätzen

$
0
0

Hallo

ich habe eine Tabelle die ich ausgeben will.

Thema ist, dass ich den selben User öfters  habe in unterschiedlichen Firmen.

SELECT [BBFIRM] FIMRA,[BBMNGR]  ,[BBBENU]      ,[BBBEZE]      ,[EBENE]
FROM [Berechtigungen].[XPPS].[BENUTZER]
WHERE BBBENU = 'MWENDEL'

FIMRA	BBMNGR	BBBENU	BBBEZE	EBENE
	#JOBS	        MWENDEL	Martin Wendel	2
1	#JOBS	        MWENDEL	Martin Wendel	2
3	#JOBS	        MWENDEL	Martin Wendel	2
	INST	        MWENDEL	Martin Wendel	2
1	INST	        MWENDEL	Martin Wendel	2
3	INST	        MWENDEL	Martin Wendel	2
	#SYSTEMS	MWENDEL	Martin Wendel	1
1	#SYSTEMS	MWENDEL	Martin Wendel	1
3	#SYSTEMS	MWENDEL	Martin Wendel	1


Ergebnis sollte sein:
1 + 3	#JOBS	        MWENDEL	Martin Wendel	2

die BLANKS DS würde ich da rausfiltern ;-)

Hat jemand eine Idee, wie man das machen kann, und ob das geht?

verwende einen SQL Server 2008 R2

Danke


thx Martin

2 Tabellen mit 1:1-Beziehung synchronisieren?

$
0
0

Hallo,

ich habe zwei Tabellen:

  • personal
    idx int,fname varchar(50),lname varchar(50),
    primary key(idx)
  • personal_detail
    idx int,detail_1 int,detail_2 int,
    primary key (idx),
    foreign key (idx) references personal(idx) on delete cascade

Diese beiden Tabellen sollen immer synchron sein, d. h. wenn für jeden Eintrag in der Tabelle personal soll es einen Eintrag in der Tabelle personal_detail geben.

Das kann ich natürlich auf Anwendungsebene machen, aber ist es auch auf Datenbankebene möglich?

Wie würde man das realisieren? Falls man es mit einem INSTEAD OF-Trigger lösen könnte, wie würde dieser dann genau aussehen? Wie geht man insbesondere damit um, wenn ein INSERT-Befehl nur einige aber nicht alle Attribute enthielte?

Danke
Magnus

Viewing all 1772 articles
Browse latest View live
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>