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

Verwendung des Hilfsprogramm BCP zur Erstellung einer Formatdatei zum Bulk Import

$
0
0

Hallo Zusammen,

ich möchte gerne per BULK INSERT viele CSV Files in meine Datenbank übernehmen.

Dummerweise sind diese csv Files etwas sonderbar aufgebaut und quasi zweigeteilt.

In den ersten drei Zeilen stehen jeweils in einer Spalte Informationen zum Dokument selbst die ich aber auch benötige.

Dann kommt eine Lehrzeile und die eigentlichen Daten beginnen. Diese stehen in 17 Spalten und n Zeichen. Die werte sind jeweils in "" gefasst und durch , getrennt.

In der OH habe ich gelesen, dass man eine Formatdatei mit dem Hilfsprogramm BCP erstellen muss. Leider habe ich nicht gefunden (oder nicht verstanden) wie ich dieses Programm benutzen muss um eine Formatdatei für mein csv File zu erstellen.

Kann mir da ggf. jemand helfen?

Ich nutze SQL Server 2005.

Vielen Dank und viele Grüße

Patrick


Probleme bei der Formatierung von Zellen in Tablix-Objekten in SSRS mit Gruppenbezug für Zeilen und Spalten

$
0
0

Ich möchte einen Report erstellen, der in etwa wie folgt aussehen soll:

Für folgende Anforderungen habe ich aber Probleme, die richtige Lösung in SSRS 2014 zu finden:

  • Bei jedem Wechsel der Gruppe2 soll eine schwarze statt graue Trennlinie gezeichnet werden. Mit einer Formel in der Form=iif(Fields!Group2.Value<>Previous(Fields!Group2.Value),"Black","LightGrey")für die jeweils obere Rahmenlinie klappt das für die Zeilenköpfe wie erwartet. Wenn ich diese Formel aber auf den Detailbereich ausweite bekomme ich die Fehlermeldung: "Die Verwendung einer Previous-Aggregatfunktion in einer TablixCell innerhalb der matrix1-Tabelle wird nicht unterstützt", was ja auch logisch ist, da hier nicht mehr eindeutig ist, ob sich Previous() auf die vorhergehende Zeile oder Spalte bezieht. Ich bräuchte also Funktionen wie PreviousRow() oder PreviousColumn() um das zu lösen. Solche Funktionen habe ich aber nicht gefunden. Gibt es hierfür eine Lösung?
  • Die hinter dieser Matrix liegende Abfrage liefert für jedes Detail genau einen Wert, sodass es zunächst unerheblich ist, ob ich die Sum(), Min(), Max() oder Avg()-Formel für den Detail-Bereich verwende. Innerhalb der untersten Gruppe3 sollten die Werte für ein Merkmal M1, M2 usw. theoretisch immer identisch sein, aber das ist praktisch nicht immer der Fall. Deshalb sollen gerade die Zellen farblich hervorgehoben werden, wo diese Einheitlichkeit nicht zutrifft. Ich habe dafür zunächst die Formel =iif(me.value <> Avg(Fields!M.Value, "Group2"),"Orange","White")verwendet, aber dabei bildet die Avg()-Formel den Mittelwert über sämtliche Merkmale M1, M2, M3 ... . Ich möchte aber den Mittelwert pro Merkmal haben und müsste somit bei der Avg()-Formel im Detail-Bereich sowohl eine "RowGroup" als auch eine "ColumnGroup" als Bezug angeben. Ist das möglich? Wie lautet dann die Syntax? Oder gibt es eine andere Lösung, um dieses Problem zu lösen?

Ich hoffe, ich habe meine Ideen einigermaßen verständlich beschrieben.

SQL-Abfrage - Where-Bedingung mit 4 bit-Spalten - und Parameter dazu

$
0
0

Hallo

Ich stehe gerade bei einer Abfrage total "auf der Leitung" - und habe die Bitte, vielleicht kann mir hier jemand dazu weiterhelfen.

Es gibt bei einem Kunden einen View, und dafür muss ich eine Statistik bauen. Dieser View beinhaltet unter anderem 4 bit-Spalten (ich nenne diese als Beispiel: Check-A, Check-B, Check-C und Check-D).

Bei der Statistik kann unter anderem auch mit diesen 4 Spalten als Suchkriterium die Statistik gestartet und ausgewertet werden. Es kann also alles mit Check-A (=true) und Check-B (=true); aber genauso nur Check-B (=true) usw. usw. usw. ausgewertet werden.

Wie bekomme ich die WHERE-Bedingung für diesen Statistik-SELECT am besten so hin, dass ich mit 4 Parameter jede Möglichkeit in dieser WHERE-Bedingung meiner bit-Felder abfragen kann.

Ist es überhaupt möglich in einem SELECT / mit einer WHERE-Bedingung; oder geht dies gar nicht so einfach. Ich bin momentan beim herum-probieren in eine Sackgasse geraten...

Vielleicht hat hier jemand einen Tipp für mich.

Vielen Dank schon mal für Eure Bemühungen & schönen Gruß

Michael


Michael Erlinger

Prüfung ob der Server lokal installiert ist

$
0
0

Hallo,

kann ich ermitteln, ob sich der SQL Server auf dem gleichen PC befindet wie die .NET Anwendung, die über eine ODBCConnection verfügt?

Danke und Grüße,
Christian

Benchmark

BULK INSERT einer Textdatei in Zieltabellemit höherer Anzahl an Spalten

$
0
0

Hallo Zusammen,

mit Hilfe einer Formatdatei bekomme ich einen BULK INSERT eines csv Files sehr gut hin.

Nun möchte ich aber ein CSV File importieren, das weniger Spalten als die Zieltabelle hat.

Hierzu habe ich die Formatdatei wie folgt angepasst:

8.0
5
1 SQLCHAR 0    255    "\",\""     1    Rechnungsbereich    Latin1_General_CI_AS
2 SQLCHAR 0    255    "\",\""     2    Produktfamilie    Latin1_General_CI_AS
3 SQLCHAR 0    50    "\",\""     3    Anbieter    Latin1_General_CI_AS
4 SQLCHAR 0    50    "\",\""     6    Anschlussart    Latin1_General_CI_AS
5 SQLCHAR 0    255    "\",\""     7    Anschluss    Latin1_General_CI_AS

leider erhalte ich hier aber die Fehlermeldung: INSERT-Fehler: Spaltennamen oder Anzahl der bereitgestellten Werte entspricht nicht der Tabellendefinition.

Was mache ich falsch?

Vielen Dank für Hilfe

Patrick

Berechtigungen auf dem SQL Server

$
0
0

Hallo zusammen,

ich weiß nicht weiter und hoffe ihr könnt mir helfen.

Wir haben einen SQL Server 2012 Standard mit Windows Authentifizierung. Dort sind mehrere Datenbanken für verschiedene Bereiche angelegt (z.B. Technik, Personal, Vertrieb). Wir haben jetzt eine Anwendung im Personalbereich mit VB, die auf die Datenbank im Personal zugreift, speichert, löscht usw.(über Linq). Jeder MA kann über die VB Anwendung NUR seine Daten lesen. Wir haben eine AD Gruppe "Alle", die ist jetzt als Anmeldung hinterlegt und der Datenbank zugeordnet (Datareader + Datawriter). Funktioniert auch alles.

Jetzt zum Problem: Sollte sich eine MA, warum auch immer, das Managementstudio runterladen, so kann er sich mit dem Server verbinden (wegen Windows Authent..) und hat Zugriff auf die DB (weil ja die Anmeldung "Alle" die DB Personal zugeordnet ist) und kann auch die Tabellen lesen und schreiben (durch Datareader + Datawriter). Der Zugriff auf die DB über das Managementstudio soll aber NICHT erlaubt werden.

Wo kann ich das denn einstellen, oder muß ich meine Denk + Arbeitsweise ändern?

Vielen Dank schonmal

Gruß Daniel

Problem mit xp_cmdshell

$
0
0

Die EXECUTE-Berechtigung wurde für das xp_cmdshell-Objekt, mssqlsystemresource-Datenbank, sys-Schema, verweigert. ODBC.QueryDef

Dies ist die Fehlermeldung, die ich erhalte, wenn ich aus einer Access-DB heraus eine SToredProcedure aufrufe, die u.a. einen Aufruf einer xp_cmdshell enthält. Der Befehl soll eine Datei löschen, die zuvor in eine FielTable transferiert wurde.

Ich habe schon einiges geggogelt und die Prozedur an sich freigegeben, dem Login für eine bestimmte Windows-gruppe die Berechtigung Execute erteilt und auch den Prox-Account auf genau diesen Benutzer eingestellt.

Ich bin jetzt also soweit, daß ein Beispielaufruf "exec xp_cmshell 'dir *.exe' " durchläuft wenn  ich dies als Benutzer aus der berechtigten Gruppe tue. Das war zuvor (ohne Proxy-Account) nicht möglich.

Trotzdem bekomme ich unverändert dieselbe Fehlermeldung. Es scheint ein generelles Problem mit der xp_ zu sein, nicht mit der zu löschenden Datei.


Ungültiger Objektname '#...' bei Verwendung einer OPENROWSET-Anweisung

$
0
0

Hallo zusammen,

die Ausgangssituation ist folgende:

ich habe eine Stored Procedure (Bezeichnung beispielhaft: spQuelle) geschrieben, die mehrere temporäre Tabellen verwendet, welche wiederum mit INSERT INTO #... SELECT ... befüllt werden.

Diese Stored Procedure möchte ich als Datenlieferant für eine andere Stored Procedure (Bezeichnung beispielhaft: spZiel) verwenden. Das von spQuelle gelieferte Rowset soll in spZiel wieder in eine temporäre Tabelle gespeichert werden.

Hier der auf das Wesentliche abgespeckte Code der Stored Procedure spQuelle:

create table #tResult(
Nachname varchar(50))

insert into #tResult select Nachname from Kunden

In der Prozedur spQuelle werden etliche, natürlich komplexere temporäre Tabellen auf diese Weise erzeugt.

Zum Schluß werden die einzelnen temporären Tabellen über Joins miteinander verknüpft und als ein einziges Ergebnis-Rowset zurückgegeben.

Beim Aufruf der Prozedur mit

exec spQuelle

tritt kein Fehler auf und die Prozedur liefert das erwartete Ergebnis-Rowset.

Dieses Ergebnis-Rowset wiederum soll in der die spQuelle aufrufenden Stored Procedur spZiel in einer temporären Tabelle gespeichert werden. Dafür wollte ich erst folgende Anweisung verwenden:

create table #tQuelldaten (
Nachname varchar(50))

insert into #tQuelldaten exec spQuelle

Allerdings erhalte ich hier die Meldung, dass INSERT INTO-Anweisungen nicht geschachtelt werden können.

Nach einigen Recherchen im Internet bin ich auf die OPENROWSET-Anweisung gestoßen und habe die ursprüngliche INSERT INTO-Anweisung in spZiel folgendermaßen abgeändert ("myDB" ist die beispielhafte Bezeichnung der Datenbank):

insert into #tQuelldaten
SELECT Nachname FROM OPENROWSET ('SQLOLEDB','Server=(local);TRUSTED_CONNECTION=YES;','EXEC [myDB].[dbo].[spQuelle]')
Hier erhalte ich jetzt allerdings die Meldung:

Ungültiger Objektname '#tResult'

Die Frage: Die Stored Procedure spQuelle funktioniert anstandslos, wenn sie mit "exec spQuelle" aufgerufen wird. Weshalb erhalte ich die oben genannte Meldung, wenn ich sie mit OPENROWSET aufrufe und wie kann ich das Problem beheben?

Oder gibt es noch eine andere, optimalere Lösung, auf das Ergebnis-Resultset einer Stored Procedure zuzugreifen, wenn diese temporäre Tabellen verwendet? Vielleicht eine CLR-Assembly?

Ich dachte auch schon an eine Table-Variable, befürchte aber Performanceeinbußen.

Vielen Dank und viele Grüße

Michael



ExecuteReader & timeout - verursacht durch Transaktion ?

$
0
0

Ich habe hier ein eigenartiges Problem das möglicherweise seine Ursache im Aufruf während einer Transaktion hat:

1. Ich habe ein VB.net Kommandozeilenprogramm, dass u.a. Daten aus einer temporären Tabelle liest und dann weiter verwendet. Dieses Tool funktioniert wenn man es solo verwendet.

2. Dieses Tool wird innerhalb einer stored procedure über xp_cmdshell aufgerufen. In diesem Fall aber gibt es einen Fehler ausgerechnet in dem Programmteil, der mit Exceutereader die Daten aus der temporären Tabelle liest und zwar gibt es einen timeout.

3. Der Aufruf erfolgt innerhalb einer Transaktion

4. Irgendwo habe ich was gelesen, daß eine "uncommited transaction" das verursachen kann. Ist das wirklich so? Kann ich das irgendwie vermeiden ? 

gewünschte Datenbank in SSMS vorselektieren

$
0
0

Hallo,
wie ist es denn möglich im Management-Studio SQL Server 2014 im DropDown-Menü verfügbare Datenbanken die Einstellung so zu ändern, dass
nicht immer die master Datenbank an erster Stelle steht, sondern die Datenbank die ich aktuell bearbeiten möchte?
Wenn ich eine normale Tabellenabfrage (Select Top 1000) mache und anschließend eine neue Abfrage auf die Tabelle, dann wird immer die master DB im DropDown-Menü eingestellt. Das ist ganz schön nervig, wenn ich immer meine aktuelle DB auswählen muss und dann erst weiter machen kann ^^.



Gruß ro_grille

verschiedene Abfragen hintereinander ausführen

$
0
0

Hallo,
gibt es eine Möglichkeit mehrere unterschiedliche Abfragen, welche einzeln als Query gespeichert sind in einer Abfrage auszuführen?
Vielleicht eine Funktion?
Das ausführen mehrerer Abfragen in einer Abfrage mit dem Schlüsselwort "GO"ist mir bekannt, aber da ich sehr viele Abfragen habe die nacheinander ausgeführt werden sollen, möchte ich der Übersichthalber mit den gespeicherten Abfragen (Query-Name oder so ...) arbeiten.
SSIS steht nicht zur Verfügung!


Gruß ro_grille

Automatische Leerzeile nach Gruppierung einfügen

$
0
0

Hallo zusammen,

ist es möglich, und wenn ja wie, in eine Select-Anweisung mit einer Group By-Klausel automatisch nach jeder Gruppe eine Zeile mit leeren Spalten (also eine Leerzeile) einzufügen?

1 aaa
1 bbb
1 ccc

2 ddd
2 eee

3 fff

4 ggg
4 hhh

Vielen Dank und viele Grüße

Michael

Fehlende Datum in SQL_Tabelle ergänzen

$
0
0

Hallo Zusammen,
ich kenne mich nicht mit Sql_Pragrammierung. Ich habe eine Frage und hoffe, dass mir jemand weiterhelfen kann. Ich habe eine SQL Abfrage bekommen. Hierzu lierfert meine Sql Abfrage eine tabelle mit datum und Anzahl

Datum           :        Anzahl
2015-01-15            68
2015-01-16            44
2015-01-19            16
2015-01-20            98
2015-01-21            47
2015-01-22            50
2015-01-21             1   

Wie kann ich meiner SQL_Abfrage ergänzen, damit die fehlende datum(hier ZB: 2015-01-17 und 2015-01-18 ) eingefügt werden und mit 0 ausfüllen.

so habe ich die Sql Abfrage bekommen

USE BarForce SELECT CONVERT(date, ProductionDate) AS Datum, COUNT(CONVERT(date, ProductionDate)) As Anzahl FROM Slitte WHERE ProductionDate IS NOT NULL GROUP BY CONVERT(date, ProductionDate) ORDER BY CONVERT(date, ProductionDate)

Dake für eure Hilfe


XML Schema Collection generieren

$
0
0

Hallo Experts,

wie könnte ich im SQL Server für die Daten, welche ich aus der Datenbank abfrage und in XML Format kovertiere, automatisch, anhand vorhandener Datenstruktur (Abfrage oder Tabelle) eine XML Schema Collection erstellen?

mir ist auch leider nicht klar, welche Bedeutung ein Verweis auf targetNamespace hat. 



Irina


Report von SQL Express Reporting Services automatisch in Verzeichnis herunterladen?

$
0
0

Ich nutze aktuell einen SQL Express 2008 R2 inklusive den Reporting Services als Datenbankserver. Ich habe einen Report erstellt und benötige diesen als PDF-Datei. Ich habe bereits den Hyperlink so modifiziert, dass ein Parameter für die ID und für das Dateiformat PDF übergeben wird - allerdings kommt hier immer die Aufforderung zum Download! Gibt es irgendeine Möglichkeit diesen sofort in ein bestimmtes Verzeichnis zu speichern (eventuell mit JavaScript, etc.)?

Ich würde diese Datei für eine automatisierte Weiterverarbeitung benötigen... vielen Dank für eure Hilfe!

Problem beim Versuch eine eigene DLL für CLR zu registrieren ...

$
0
0

Ich versuche folgende Befehle aufzurufen:

CREATE ASSEMBLY [System.DirectoryServices] AUTHOrIZATION dbo
FROM 'C:\Windows\microsoft.net\framework\v4.0.30319\System.DirectoryServices.dll'
WITH PERMISSION_SET = UNSAFE
GO

create assembly ManagedCodeAndSQLServer
AUTHORIZATION dbo
FROM '\\GALILEO2010\GUTACHTEN\UTILITIES\ExchPublicFolders.dll' WITH PERMISSION_SET=UNSAFE

erhalte aber folgende Fehlermeldung(en):

Warnung: Die Microsoft .NET Framework-Assembly 'system.directoryservices, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a, processorarchitecture=msil.', die Sie registrieren, wurde nicht vollständig in einer Umgebung mit SQL Server als Host getestet und wird nicht unterstützt. Wenn Sie diese Assembly oder .NET Framework in Zukunft aktualisieren oder warten, ist die CLR-Integrationsroutine möglicherweise nicht mehr funktionsfähig. Ausführliche Informationen finden Sie in der SQL Server-Onlinedokumentation.
Meldung 10327, Ebene 14, Status 1, Zeile 4
Fehler bei CREATE ASSEMBLY für die System.DirectoryServices-Assembly, weil die System.DirectoryServices-Assembly für PERMISSION_SET = UNSAFE nicht autorisiert ist. Die Assembly ist autorisiert, wenn eine der folgenden Bedingungen zutrifft: Der Datenbankbesitzer (DBO) hat die UNSAFE ASSEMBLY-Berechtigung, und für die Datenbank ist die TRUSTWORTHY-Datenbankeigenschaft aktiviert; oder die Assembly ist mit einem Zertifikat oder einem asymmetrischen Schlüssel signiert, das bzw. der einen entsprechenden Anmeldenamen mit der UNSAFE ASSEMBLY-Berechtigung aufweist .
Meldung 10301, Ebene 16, Status 1, Zeile 2
Die ExchPublicFolders-Assembly verweist auf die system.directoryservices, version=2.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a.-Assembly, die in der aktuellen Datenbank nicht vorhanden ist. SQL Server hat versucht, die Assembly, auf die verwiesen wird, am gleichen Pfad wie die verweisende Assembly zu suchen und automatisch zu laden. Dieser Vorgang ist jedoch fehlgeschlagen (Ursache: 2(Das System kann die angegebene Datei nicht finden.)). Laden Sie die Assembly, auf die verwiesen wird, in die aktuelle Datenbank, und wiederholen Sie die Anforderung.

Die zweite Meldung stammt von meiner eigenen DLL.

Dort war bei den Verweisen diese ominöse system.directoryservices aufgeführt, konnte dann aber über "nichtverwendete Verweise" entfernt werden.

Trotzdem gelingt mir die Regiatrierung nicht.

Kann mir jemand genau sagen was ich machen muss ?

BULK INSERT mit Tabelle als Formatdatei

$
0
0

Hallo Zusammen,

ich nutze erfolgreich Bulk Insert mit einer als Textfile vorliegenden Formatdatei. Nun ist das erstellen und Pflegen einer solchen Formatdatei doch recht umständlich.

Gibt es auch einen Weg wie man das Format anhand einer Tabelle bzw. Sicht in der Datenbank definieren kann?

Vielen Dank für die Hilfe.

Viele Grüße

Patrick

Einen Report exportieren in Excel ohne verbundene Zellen

$
0
0

Guten Tag

Ich habe einen Report welcher in etwa so aussieht: 

Bei einem Export in Excel wird z.B. Hos-Klasse drei Spalten  (D E und F) verbunden. Bei der Zeile letzte Aktualisierung spielt das eigentlich keine Rolle. 

Mache ich zwischen Letzte Aktualisierung und der Tabelle einen Seitenumbruch funktioniert das Ganze korrekt. Je Spalte FallNr Disziplin je eine Spalte in Excel. Ich möchte das ganze aber auf einer Seite haben. Gibt es da irgendeine Einstellung?

Danke

Freundliche Grüsse

Walo Beck



Aufbau - Select

$
0
0

Hallo,

ich hoffe irgendjemand kann mir helfen - Sorry für den Titel, keine Ahnung wie ich es Bezeichnen soll.

Ich muss Daten aus einer MSSQL-DB abfragen, aber ich weiß nicht wie ich das SELECT aufbauen soll.

Anhand von diesem Bsp. oben, versuche ich es zu erklären.

Audi: In dem Fall möchte ich alle Zeilen ausgeben.

Vw: In diesem Fall möchte ich keine Zeile ausgeben.

Wert3, ist immer mit Nummerischen Daten befüllt, nur wenn z.B.: bei VW die Spalte Wert1 und Wert2 leer ist - Datensätze nicht Anzeigen. 

Vielen Dank,

Danijel





Viewing all 1772 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>