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

SSRS Momentaufnahme am Monatsletzen

$
0
0

Hallo,
gibt es eine Möglichkeit, an jedem Monatsletzten um 23:59 Uhr eine Momentaufnahme per Zeitplan anzulegen?
Danke für die Hilfe!
Viele Grüße
Olaf


Where- Klausel mit Select

$
0
0

Hallo zusammen,
folgendes Problem. Hier eine WHERE-Klausel:

and
(ltrim(rtrim(nf3.Such))) COLLATE database_default
in

(SELECT (ia.Such) as  VergleichFROM[BI02].[dbo].[Industrielle_Automation_01]ia

Die Spalte nf3.Such enthält Zeichenfolgen aus 2, 3 oder mehr Zeichen.
Die Spalte ia.Such enthält Zeichenfolgen aus 2 oder 3 Zeichen.
Jetzt möchte ich so etwas erreichen wie nf3.Such like ia.Such + '%'. Wie kann man so etwas in diesem Select einbauen?

Danke für die Hilfe!
Viele Grüße
Olaf 



Werte mit Bedingung nebeneinander

$
0
0

Hallo zusammen,

ich stehe aktuell auf dem Schlauch und komme nicht weiter und würde mich sehr über eure Unterstützung freuen.

Ich möchte gerne aus einer Tabelle die Kontaktdaten abfragen. Die Kontaktdaten stehen in der Spalte "Data" und können über den "GroupKey" identifiziert werden.

NameDataGroupKey
Horst089123456Telefon
Horst089654321Fax
Horstinfo@horst.comEmail

So soll das Ergebnis hinterher aussehen:

NameTelefonFaxEmail
Horst089123456089654321info@horst.com
Peter040123456NULLpeter@horst.com
Manfred02212233440221223355manni@eiszeit.de

Ich habe es mit "Case" versucht, bekomme dadurch aber leere Zellen und der Name wird gedoppelt.

CASE WHEN Communication.GroupKey = 'Telefon' THEN Communication.Data ELSE null END AS Telefon,
CASE WHEN Communication.GroupKey = 'Fax' THEN Communication.Data ELSE null END AS Fax,
CASE WHEN Communication.GroupKey = 'Email' THEN Communication.Data ELSE null END AS Email


NameTelefonFaxEmail
Horst089123456

Horst089654321

Horst

info@horst.com

Habt ihr eine Idee für mich?




SQL-Formel auf definierte Alias-Namen beziehen

$
0
0

Hallo,

ich spiele mich gerade etwas in SQL herum.

Ist es möglich, dass ich in SQL ein Feld berechnen lasse, dieses sich auf ein vorher errechnetes Feld bezieht, diesem ich einen eigenen Namen gegeben habe? Ich hoffe mit diesem Bild kann ich besser beschreiben was ich meine:

Mein Ziel ist es, dass ich den neuen Wert direkt über die Felder "Step_In" und "Step_out" ermitteln kann und nicht immer über den kompletten "Pfad" (dbo.Tabele.Feldname) gehen muss.

Danke im voraus.

SQL-JSON: Konvertieren einer Kombination an Spalten mit variablen Länge und unterschiedlichen "Separatoren" in eine JSON formatierte Spalte

$
0
0

Hallo Zusammen, 

ich wäre dankbar für alle Vorschläge zur Lösung folgender Problem:

Input als Ergebnis einer SQL Abfrage: 
---------------------------------------------------------------------------------------------------------------------------------------
| instance| value                                                          | created                            | 
---------------------------------------------------------------------------------------------------------------------------------------
| ABC_20201007_EFG_Server1_Server2       | Intel(R) Xeon(R) CPU ... @ 2.60GHz               | 2020-06-07 01:22:13.000|
---------------------------------------------------------------------------------------------------------------------------------------

Output Dataset mit einer Spalte (Instance+Value) in JSON Format und den allen übrigen Werten in ursprünglicher Datentyps: 

[{"sidInstance":"ABC"
,"DatumInstance":"20201007"
,"ServerInstance":"EFG"
,"VirtualServerInstance":"Server1"
,"VirtualServerInstance":"Serever2"
, "OptionalColumn": "Server3"
,"CPUType":"Intel(R) Xeon(R) CPU ..."
,"Frequence":"2.60GHz"}]

Danke und Gruß

Irina


Irina

sqlmetall nicht installiert???

$
0
0

Hallo :)

Ich möchte das Tool Linqer nutzen. Dieses sucht aber nach einer Installation von sqlmetall...

Leider kann ich dieses Programm nicht finden. Google sagt, es würde automatisch mit Visual Studio installiert. Ich habe VS 2019 installiert... 

Mein System ist Windows 10.

Bestimmt kann mir hier jemand helfen. Danke schon mal :)


.::datekk::.

Merge-Replikation mit FILESTREAM-Spalten - Konflikttabelle

$
0
0

Hallo zusammen,

ich bin heute über ein Problem gestolpert, das nur auf Tabellen mit Filestream-Spalten auftritt.

Wenn ich solch eine Tabelle als Artikel in der Merge-Replikation habe, dann erstellt SQL Server eine Konflikttabelle, die anders aussieht als bei denen ohne FILESTREAM-Spalte. Bei letzteren gibt es keinen Primary Key, sondern nur einen zusammengesetzten Schlüssel bestehend aus dem Primary Key der Artikeltabelle und der Spalte data_source_origin. Macht ja auch Sinn - denn nur so können Konflikte aus unterschiedlichen Abonnennten gespeichert werden. 

Für den Artikel mit FILESTREAM-Spalte hingegen erstellt die Merge-Replikation auf der zugehörigen Konflikt-Tabelle einen Unique Key auf der Rowguid-Spalte der Ausgangstabelle. Muss ja auch, denn die Regeln für eine Tabelle mit Filestream-Spalten besagen, dass es einen UK auf der ROWGUID-Spalte geben muss - und letztlich entspricht die Konflikt-Tabelle ja der Ausgangstabelle. Die Spalte data_source_origin findet hier hingegen keine Verwendung, was zur Folge hat, dass auf dem Verleger nur ein konfliktierender Abonnent protokolliert werden kann. Kommt ein zweiter mit einer Änderung auf dem gleichen Datensatz, kommt es zur Schlüsselverletzung auf dem UK der Konflikttabelle und der ganze Synchronisationsvorgang schlägt fehl bis der Konflikt manuell aufgelöst bzw. aus der Konflikttabelle entfernt worden ist.

Jetzt könnte man versuchen als Workaround die Tabelle zu droppen und mit eine UK auf ROWGUIDCOL und data_source_origin neu zu erstellen - geht aber auch nicht, weil data_source_origin NULLABLE ist. 

Der Hintergrund ist auch klar - unter der ROWGUIDCOL (oder dem UK?) werden die Dateien im FILESTREAM abgelegt - gäbe es zwei mit gleichem Schlüssel, würden die Dateien sich überschreiben.

Hat jemand hierzu schon mal eine Lösung gesehen oder gibt es hierzu vielleicht einen Bugreport bei Microsoft? Ich bekomme das Verhalten in allen Versionen von 2012-2017 - also ein durchaus altes "Feature".


Vergleich von 2 Spalten in unterschiedlichen Tabellen

$
0
0

Hallo zusammen,

Leider konnte ich bislang keine Lösung für mein Problem finden, daher versuch ichs jetzt mal hier :)

Folgendes Szenario:
Ich habe 2 Tabellen, in denen in je einer Spalte ein Name steht. Tabelle 1 beinhaltet dabei die Namen, nach denen ich suchen möchte und Tabelle 2 ist der Ort, an dem ich suchen möchte. Am Ende hätte ich also gerne eine neue Tabelle, in der alle Einträge aus Tabelle 2 sind, die ich auch in Tabelle 1 finden konnte.
Kleines Problem dabei: Die Namen werden auch immer wieder unterschiedlich geschrieben (ss - ß, ae - ä, zweiter Name, usw.). Deswegen wär hier vielleicht auch sowas wie ein fuzzy search notwendig.
Bislang habe ich das mit einem Fulltext Index und CONTAINS gemacht. Aber so bekomme ich natürlich die Unschärfen nicht mit ins Ergebnis.

Kann mir hier jemand helfen/einen Tipp geben?


Beim Aendern von Tabellen werden Berechtigungen gelöscht

$
0
0

Hallo Allerseits

Wissensstand über SQL Server:    Anfänger

System:            Terminal-Server

SQL Server:      Version 13.0.5102.14

Zugriffs-Tool:    dbForge Studio Express 2019  Version 5.8.107 (für Berechtigungen und anderes)

                        SSMS (Einbinden der User)

Mein Problem:

Ich muss das FE, das in Access 365 ist, und die Berechtigungen im BE qualifizieren und nach der Qualifizierung die aktiven Daten importieren.

Zum Importieren muss ich die Identity-Spalten ausschalten da sonst beim Datenimport aus dem "alten" Access 2003 BE ein Fehler auftritt. Nach dem Import muss ich die Spalte wieder auf Identity setzen.

Beim Aus- und Einschalten der Identity-Spalte werden die Tabellen von SQL Server gelöscht und neu erzeugt und dabei werden auch die erfassten Berechtigungen gelöscht. Damit ist die Qualifizierung der Berechtigungen dahin, ich muss sie neu erfassen, neu Qualifizieren und die Daten neu einlesen d.h. ich dreh mich in einer Endlosschleife.

Kennt jemand dieses Problem und hat ev. eine Lösung dazu ?

Ich bin für jeden Tipp dankbar.

Reiner Berger


Reiner Berger

unterschiedliches Abfrageverhalten SQL Server 2012 zu 2016

$
0
0

Hallo zusammen,

ich habe festgestellt, dass eine Datenbank auf dem SQL Server 2016 DEV im Kompatibilitätsmodus 2012 läuft (warum weiß ich nicht, sollte nie so sein, gab kein 2012er).

Nach der Umstellung des Kompatibilitätsgrad auf 2016 zeigt sich ein Verhalten, dass ein View anstatt 2 Sekunden jetzt über 2 Minuten benötigt. Die Ursache habe ich lokalisiert. Allerdings benötige ich input, warum es dieses Verhalten zwischen den Versionen gibt.

Der Teil der Probleme macht ist folgender, der IN-Befehl:

CASE WHEN kai.sparte = 'S' THEN 
    'Retail' 
WHEN ocu.okcuno IN (SELECT oschl1 FROM dbo.erpOCHCUS) THEN 
    och1.oschl1 
WHEN och.oschct IS NULL THEN 
    'keine HBZ' 
ELSE 
    och.oschct 
END AS HANDELSBEZIEHUNG

VG Jürgen


Grundsätzliches zu Datentypen

$
0
0

Hallo,

wir haben seit über 15 Jahren gewachsene Datenbanken mit unzähligen Tabellen und einer wilden Kombination von Datentypen.
Mir geht es aktuell um einen optimalenDatentypen für Textfelder.
Meine Überlegung war als Datentyp für Text grundsätzlich NVARCHAR zu verwenden, da wir in den Datenbanken zumindest teilweise mit "internationalen" (zumindest europäischen) Zeichen klar kommen müssen.
Darüber habe ich mal irgendwo gelesen das NVARCHAR und VARCHAR Felder immer nur so viel Speicherplatz benötigen wie auch Zeichen darin gespeichert sind.

Da ich in einem NVARCHAR Feld maximal 4000 und in einem VARCHAR Feld das Doppelte speichern kann, frage ich mich ob es wirklich die beste Lösung komplett auf NVARCHAR umzusteigen.

Wir habe Tabellen mit teilweise mehreren Millionen Datensätzen und in einigen Fällen auch sehr vielen Feldern.

Hat jemand Erfahrung mit diesem Thema?

Bin für jeden Tipp dankbar.

Kein Zugriff auf FileTable- Freigaben

$
0
0

Ich habe Probleme mit FileTables in SQL 2016.

Ich sehe lediglich die Freigabe "mssqlserver" ( aber in klein, anstatt wie in SQl-Server konfiguriert in Grossbuchstaben).

Klicke ich darauf, dann erhalte ich eine Fehlermeldung, daß ich wohl keine Berechtigung habe.

Ich sehe nicht einmal die Freigaben für die FileTables!

Was ist da verkehrt?

SSIS Identity Spalten übertragen

$
0
0

Hallo SQL-Profis!

Ich möchte per SSIS in einem Datenflusstask eine Tabelle mit einer Identity-Spalte auf eine identische Tabelle auf einen anderen SQL-Server kopieren. SQL-ServerA.TabelleA -> SQL-ServerB.TabelleA und dabei die ID-Werte der TabelleA auf ServerA beibehalten werden sollen!!!

Ohne Einbeziehung der Identity-Spalte (autoincrement bei TabelleA auf ServerB) wird die TabelleA problemlos zwischen den SQL-Servern kopiert. 

Ein vorausgehender SQL-Task mit: SET IDENTITY_INSERT  TabelleA ON verhindert nicht, dass derDatenflusstask bei Einbeziehung der Identity-Spalte auf der Ziel-Tabelle, einen Fehler anzeigt und nicht gestartet werden kann.

Wie kann man denn Identity-Spalten in einem Datenflusstask mit kopieren???

Backup-Files für Restore auslesen

$
0
0

Hallo zusammen,

ich muss ab und an ein Restore einer Datenbank zu einem spezifischen Zeitpunkt durchführen, das mache ich auf einem Test-System um Daten auszulesen, die bestehende Datenbank bleibt auf dem aktuellen Stand.

Die Backups werden mit FULL, LOG, DIFF mit einem Backup-Plan erstellt.

Um zu wissen welche Backup-Files ich brauche, verwende ich gerne die Timeline der bestehenden Datenbank, fühle mich aber immer unwohl durch Gewohnheit den hier ungewollten Restore zu starten :-)

Jetzt suche ich nach einer Möglichkeit aus der bestehenden Datenbank die Files auszulesen um an einen spezifischen Stand zu gelangen. Was muss ich den abfragen um eine Liste der Files zu bekommen die es dazu braucht?

Viele Grüsse,
Daniel

Query wird extrem langsam, sobald TOP N im Spiel ist

$
0
0

Hallo zusammen,

Ich habe hier eine Anforderung eine Query zu bauen um herauszufinden welche als Pflicht deklarierte Software auf welchen Server NICHT installiert ist.

Als Datenbasis habe ich 3 Tabellen.

1. Die Liste aller vorhandenen Server
2. Die Liste der Software Installationen. Hier ist für jede gefundene Software eine Zeile pro Server enthalten.
3. Eine manuell gepflegte Liste an SW-Paketen nach denen gesucht werden soll. Die Einträge können auch Wildcards enthalten.

Die überschneidende Spalte zwischen 1. und 2. Tabelle ist der Servername.

Wir reden hier von Datenmengen von 

1. Ca. 2.000 Zeilen
2. Ca. 110.000 Zeilen
3. Derzeit nur 1 Zeile

Führe ich diese Query aus oder mach ein Select * von der neuen View ist die in unter einer Sekunde durch und liefert ca. 360 Rows.
Leider arbeitet unser Webfrontend aber gerne mit TOP N für die Pagination und das bricht mir gerade das Genick.

Sobald Top N im Spiel ist scheint das überhaupt nicht mehr fertig zu werden. Meistens brech ich so nach 3-4minuten ab. Das Webfrontend würde wohl nach 20 Sekunden aufgeben.

Hättet ihr Ideen wie ich das besser machen kann?
Plan B wäre es die View asynchron in eine Table zu materialisieren. Aber mehr Schahm hätte es schon, wenn das alles mit Live-Daten funktionieren würde.

ALTER view View_Device_Server_Win_Missing_Required_SW
AS

-- 1. CTE erstellt eine Namensliste aus manueller Searchliste und realer SW-Installations-Liste
WITH cte_Required_SWPackages
AS (
	SELECT DISTINCT Installed.Displayname
		,Installed.[Version]
	FROM p_Device_Software_Installations Installed
	INNER JOIN CFGRequiredSoftware Req ON (
			Installed.Displayname LIKE Req.Displayname
			AND Installed.[Version] LIKE (
				CASE 
					WHEN Req.[Version] IS NULL
						THEN '%'
					WHEN Req.[Version] = ''
						THEN '%'
					ELSE Req.[Version]
					END
				)
			)
	)
	-- 2. CTE filtert nur die "Aktive" Server raus
	,cte_Active_Windows_Servers
AS (
	SELECT [Name]
		,Verw
		,DeviceType
		,id
	FROM View_Device_Server_Win
	WHERE InstallStatus = 'active'
	)

	-- 3. CTE filtert nur gesuchte Software/Server-Zeilen aus der Gesamt Tabelle
	,cte_Currently_Installed
AS (
	SELECT p_Device_Software_Installations.Computername
		,p_Device_Software_Installations.DisplayName
		,p_Device_Software_Installations.[Version]
	FROM p_Device_Software_Installations
	WHERE p_Device_Software_Installations.DisplayName IN (
			SELECT Displayname
			FROM cte_Required_SWPackages
			)
		AND p_Device_Software_Installations.[Version] IN (
			SELECT [Version]
			FROM cte_Required_SWPackages
			)
	)
	-- 4. CTE baut ein Kartesisches Produkt aus Active-Serverlist und gesuchter Softwareprodukte
	,cte_workinglist
AS (
	SELECT *
	FROM cte_Required_SWPackages
	FULL JOIN cte_Active_Windows_Servers ON (0 = 0)
	)

-- Finaler Query stellt das Kartesische Produkt gegenüber der reduzierten SW-Installliste cte_Currently_Installed um raus zufinden was nur im K-Produkt enthalten ist
SELECT cte_workinglist.[Name]
	,cte_workinglist.[Version]
	,cte_workinglist.DisplayName
	,cte_workinglist.Verw
	,cte_workinglist.DeviceType
	,cte_workinglist.id
FROM cte_workinglist
LEFT JOIN cte_Currently_Installed ON (cte_workinglist.[Name] = cte_Currently_Installed.Computername AND cte_workinglist.DisplayName = cte_Currently_Installed.DisplayName AND cte_workinglist.[Version] = cte_Currently_Installed.[Version])
WHERE Computername IS NULL


SQL Server 2019 - Fremdschlüsselspalte als Primary Key

$
0
0

Hallo zusammen,

ich möchte in einer Tabelle den Primary Key gleichzeitig mit einem

Fremdschlüssel belegen.

Im Management Studio klappt das. In Visual Studio wird mir eine 

Fehlermeldung angezeigt. 

Die Tabelle hätte keinen Primärschlüssel.

Kennt sich jemand aus??

Danke

Dirk

Anzahl von Datensätzen in Gruppen aufteilen

$
0
0

Hallo

ich möchte eine Anzahl von x Datensätzen einer Tabelle nach dem Zufall in x Gruppen aufteilen (z.B. 50 Datensätze in 5 Gruppen), damit ich die einzelnen Gruppen dann später selectieren kann. 

Über ein Update sollen dann jeweils die Zahlen 1-5 in ein integer Feld der Datensätze eingetragen werden.

Hat jemand einen Tipp für mich?


Liebe Grüße, die Luzie!

Ausführen einer Stored Procedure auf einem Linked Server mit _Rückgabeparametern_

$
0
0

Hallo,

ich beiße mir grade die Zähne an folgendem Problem aus:

Unsere Kundenverwaltung ist auf dem Server [SQL_01] installiert. Über eine Erweiterung soll sie nun in einer anderen Datenbank auf dem Server [SQL_02] eine Stored Procedure ausführen. Das ganze muss über ein VBS-Skript funktionieren, das auf dem [SQL_01] läuft.

Dazu habe ich den [SQL_02] als linked Server im [SQL_01] angelegt.

Ich kann nun mit

EXEC ('[DBName].[Schema].[Procname] @param1=<value>') AT [SQL_02]

eine Stored Procedure aufrufen.

Ich schaffe es aber nicht, die von der SP generierten Werte (Return-Werte, Ergebnisse eines Selects, Call-by-Reference-Variablen) auszulesen. Für die Ergebnisse bin ich also blind.

Kann mir da jemand weiterhelfen?

Danke im Voraus

Wolfgang

SQLPutData -> Fehler 22001 (String data right truncation)

$
0
0
Guten Tag Zusammen,

ich implementiere in einem ANSI C Programm Lesen und Schreiben der BLOB-Felder von unbekannter Größe (Tabellen-Feld: VARBINARY(MAX)). Die Idee ist - lesen und schreiben in Segmenten und im Programm Speicher nach dem Bedarf allozieren.

Habe die Benutzeranleitung zu den Funktionen SQLBindParameter, SQLParamData, SQLPutData (fürs Schreiben) und SQLGetData (fürs Lesen) mehr oder weniger verstanden. Als Erstes habe ich versucht, ein 40K array mit Ziffern 0-9 zu füllen, in 1К-Segmenten mit SQLPutData zu schreiben, dann Lesen und wieder schreiben - alles funktionierte. Als 2. Schritt habe ich die realen Daten (gespeichertes Bild) gelesen. Größe mit DATALENGTH() geprüft -7233. Beim Lesen - kein Problem. Beim Schreiben auch - solange ich die ersten 7 Segmente schreibe. Aber beim Rest von 233 Bytes kommt ein Fehler 22001 (String data right truncation). Durch Lesen der Fehlerbeschreibung in Microsoft-Doku wurde ich nicht  wirklich schlau. Rest vom array nach 7233 Bytes ist mit 0 (binär) gefüllt - warum meint der ODBC-Driver, dass "more data was send for a long parameter... than was specified in the length buffer"??? Ich habe schon alles mögliche versucht - komme aber nicht weiter. Hat jemand eine Idee?

DB Offline schalten ohne Ergebnis

$
0
0

Hallo!

Ich möchte auf einem MS SQL-Server 2012 im MSSMS eine Datenbank Offline schalten. 

Der Vorgang (Task -> Datenbank Offline schalten) wird zwar gestartet, aber ohne eine Fehlermeldung, niemals beendet. Die DB bleibt online, das Task-Fenster wird nicht geschlossen.


Welche "Verbindungen" könnten denn das offline schalten im Hintergrund blockieren?

Fred.

Viewing all 1772 articles
Browse latest View live


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