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

Daten (Replizierung) von MySQL nach MsSQL 2012 - wenn Möglich in Echtzeit

$
0
0

Hi,

habe folgende Anforderung.

Ich muss die Tabellen relativ Zeitnah, echte Echtzeit muss es nicht unbedingt sein, von einem MySQL - System auf ein MS-SQL2012 System bekommen um es dort u.a. im Datawarehouse weiter zu bearbeiten.

Aktuell mach ich das mit Openquery (via DTM ODBC Manager) und einem Skript, welches mir immer die Gesamte Tabelle neu rüber kopiert.

Laufzeit für eine ganze Datenbank beträgt ca 10 Stunden. Das ist zu lang.

Nur die Änderungen rüberholen sollte ja das optimale sein.

Hab schon mit Triggern auf Mysql -Seite rumexperimentiert, aber so das wahre war es auch nicht.

Hab auch DBSync von DBconvert.com getestet. Das hab aber soviel Last auf MySQL Seite verursacht, das die Datenbank dort nicht mehr zu nutzen war.

Gibt es elegantere Lösungen ? Vergleichbar mit der MS SQL Server integrierten Replikation?

Danke

Gruß Andre


Aus der MSDN-Entwickler-Hotline: SQL-Migration mit CROSS-JOIN

$
0
0
Hallo zusammen,
heute wurde uns bei der MSDN-Entwickler-Hotlineunter anderem folgende Frage gestellt:

Bei einem Kunden hatte sich im Zuge eines Projektupdates das Datenbankschema verändert. Die Migration sollte per SQL-Skript geschehen. Jeder Benutzer im System hatte in der alten Version einen Integer-Wert der seine Extraarbeit beschrieb. Dieser Wert sollte in der neuen Datenbank abgeschaft werden und Extraarbeit sollte individuell im System beantragt werden können. Dazu gibt es eine neue Tabelle, die alle Anträge mit der Anzahl Extraarbeit enthält. Bei der Migration sollte die Extraarbeit natürlich als genehmigter Antrag übernommen werden.

Unsere Antwort bzw. unser Lösungsvorschlag darauf war:

SQL:

WITH RowTemplate
AS
(
	SELECT [SubmitDate], [Justification]
	FROM (VALUES(GETDATE(), 'Übernahme der Extraarbeit.')) AS RowType(SubmitDate, Justification)
),
QuantityValues
AS
(
	SELECT [ExtraWork] AS [Quantity], [UserID] FROM [OldDatabase].[dbo].[User]
)

INSERT INTO [NewDatabase].[dbo].[ExtraWork]
	([Quantity]
      ,[Justification]
      ,[UserID]
	  ,[SubmitDate])

SELECT [Quantity]
      ,[Justification]
      ,[UserID]
	  ,[SubmitDate]
FROM QuantityValues CROSS JOIN RowTemplate

Das SQL-Query letgt zunächst eine "Vorlage" mit dem Namen "RowTemplate" für alle neuen Zeilen in der ExtraWork-Tabelle an. Die Werte in dieser Vorlage werden für alle Anträge zum Schluss gleich sein. Danach wird der Wert für die Extraarbeit und die ID für jeden Benutzer mit "QuantityValues" benannt. QuantityValues und RowTemplate werden per CROSS-JOIN zusammengefügt.

Wir hoffen, vielen Besuchern der MSDN Foren durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.

Viele Grüße,
Tobias K.
Entwickler-Hotline für MSDN Online Deutschland

Disclaimer:
Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN-Entwickler-Hotline: http://www.msdn-online.de/Hotline
MSDN-Entwickler-Hotline: Schnelle & kompetente Hilfe für Entwickler: kostenfrei!

Es gelten für die MSDN-Entwickler-Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu Markenzeichen,Informationen zur Datensicherheitsowie die gesonderten Nutzungsbedingungen für die MSDN-Entwickler-Hotline .


Prozedur mit zwei INSERT Anweisungen und SCOPE_IDENTITY

$
0
0

Hallo Zusammen,

ich habe eine Prozedur die zunächst eine INSERT Anweisung ausführen soll, danach will ich eine Veriable über SCOPE_IDENTITY mit der neu erstellten ID aus dem INSERT füllen um diese dann in einem zwieten INSERT zu nutzen.

Das Ganze sieht wie folgt aus bei mir:

ALTER PROCEDURE [dbo].[Proz_meineProzedur]

@Input1 int,
@Input2 numeric,
@Input3 datetime

AS
DECLARE @newID int /*neue VorgangNr*/

INSERT INTO dbo.meineTabelle
(Wert1, Wert2, Wert3)
SELECT      Wert1, Wert2, Wert3
FROM          dbo.meineQuelledaten;

Select @newID = Scope_Identity()

INSERT INTO dbo.meineTabelle
                        (Wert1, Wert2, Wert3)
SELECT      Wert1, Wert2, @newID
FROM          dbo.meineQuelledaten;

Aber es wird nur die erste INSERT Anwesiung ausgeführt. Die Zweite wird ohne Meldung übersprungen.

Was mache ich falsch?

Vielen Dank für Eure Hilfe

Patrick

BULK INSERT Wie bekommen ich die Anführungszeichen aus derm Ergebnis

$
0
0

Hallo Zusammen,

ich nutzte BULK INSERT zusammen mit einer Formatdatei um CSV Daten in SQL zu importieren. Das klappt auch gut, nur sind manche Felder in der CSV Datei zusätzlich durch Anführungszeichen (") umschlossen.

Wie erkläre ich das der Formatdatei? Folgender EIntrag erwirkt, dass die " am Ende des Feldes erkannt werden.

4    SQLCHAR    0    10    "\";\"" 4    Rahmenvertragsnummer    ""

Aber die " am Anfang stehen weiter da. Was muss ich tun um auch die weg zu bekommen?

Danke für Hilfe

Viele Grüße

Patrick

Timestamp in INT un normales Datum/ Zeit umwandeln

$
0
0

Hallo,

ich habe einen Export einer Oracle DB in meinem SQL Server. Die Timestamps sind alle im INT Format( Unix Timestamps UTC ) . Für die User die auf diese Daten zugreifen brauchen aber ein normales Datum. Meide Idee ist eine Funktion zu schreiben , die bei einer Abfrage automatisch die Timestamps in Normnalzeit umrechnet. Am besten auch Sommer und Winterzeit . Da ich eher von der ADMIN Seite komme. wäre ich für ein paar Tips dankbar. Mein Ansatz ist so

 declare @utc float, @d float ,@t bigint ,@e int,@test1 bigint ,@ts int
  set @t = 1422392262567
  select @utc = @t /1000 + 3600 -- der Unix-Timestamp
  select @d = convert(float,cast('1.1.1970' as datetime)) + @utc  /86400


  select cast(@d as datetime)
  set @test1 = @d

Wobei 1422392262567 der Timestamp ist. Vielleicht hat einer eine Idee oder einen Anstoss für mich.

LG

"Select" nur, wenn ein Datensatz zu dem noch weitere gehören, ein bestimmtes Merkmal enthält

$
0
0

Hallo SQLer,

ich habe in einer Tabelle mehrere Datensätze die zusammengehören. Die zusammengehörenden erkenne ich an der gleichen "nummer". Es sollen aber nur alle zusammengehörenden ausgegeben werden, wenn in mindesten einem der zusammengehörenden Datensätze ein bestimtes anderes "merkmal" vorhanden ist.

nummer   merkmal
1              81
2              34
3              63
2              94
4              44
1              29

Wenn in diesem Beispiel nach "merkmal" 34 suche, dürfen nur die Datensätze 2 und 4 ausgegeben werden. Ich denke dass dieses minimalistische Beispiel am Besten mein Anliegen verdeutlicht. Vermutlich benötige ich eine Aggregatefunktion, oder?

Danke schon mal vorab

Michael

SQL Server Upgrade / Migtation Scenario (2005-2012)

$
0
0

Hallo Experts,

bitte um Euere Ratschläge hinsichtlich einer strukturierten Vorgehensweise - salop gesagt:"Wo anfangen?...". Ein virtueller Server, Betreibssystem ( Server 2012 R2) ist aufgesetzt. Wir könnten den SQL Server 2012 sofort installieren. Es sollen die Daten aus einem SQL Server 2005 migriert werden. Ich möchte mehrere Instanzen einrichten: Prod, DWH (gab es noch nicht. Alle Reports, Intranet usw. sind momentan mit dem Prod Server 2005 verbunden). Eine Testumgebung könnten wir ewtl auf dem alten Prod Server betreiben. 

Dank und Gruß

Ich freue mich über Euere Antworten


Irina

Cube via SQL2012 in SSAS erstellt - keine Filterfelder, kein Drill down...

$
0
0

Hallo liebes Forum,

ich habe nun meinen ersten Cube erstellt und auf meiner mehrdimensionalen Instanz bereitgestellt. Das erste Projekt ist also fast geschafft.

Im Browser kann ich meine Measures und Dimensionen per Drag&Drop in das mittlere Fenster ziehen. Allerdings fehlen die Filterfelder, auf die man normalerweise die Dimensionen zieht. Ein Drill-Down ist nicht möglich.

Zudem werden die Measures im Cube nicht formatiert:

Unter Cubestruktur habe ich bei den Measures unter Eigenschaft - FormatString - Currency bzw. #,# für Mengen angegeben und gespeichert. Bei erneutem bereitstellen verändern sich die Measures nicht.

Was könnte die Ursache für meine Probleme sein? Vielen Dank für Antworten!

VG Sebastian


BULK INSERT Drei-geteiltes CSV File

$
0
0

Hallo Zusammen,

wie ich mit Hilfe von BULK INSERT und einer Formatdatei ein CSV File importieren kann, habe ich mittlerweile ganz gut raus.

Auch kann ich mit FIRSTROW bestimmen, dass die ersten Zeilen der Datei, die leider ein anderes Format aufweisen, übersprungen werden.

Jetzt habe ich aber noch das Problem, dass nach den eigentlichen Daten nach einer Leerzeile noch Summendaten für das File kommen, die ich nicht haben will.

Wie kann ich diese vom Import ausschließen?

Das CSV File baut sich wie folgt auf:

Zeile 1: 34 Spalten

Zeile 2: leer

Zeile 3 - x : 22 Spalten

Zeile x+1:  Leerzeile

Zeile x+1 bis x+y: = 7 Spalten

Mich interessieren die Spalten 3 bis x

Wie kann ich festlegen, dass der Import nach der zweiten leeren Zeile, bzw. wenn ich FIRSTROW = 3 setze, nach der ersten leeren Zeile beendet ist? Ich müsste wohl vor dem Import herausfinden, welche Spaltennummer die zweite leere Zeile hat. Dann kann ich BULK IMPORT sagen importiere Zeile 3-x. Aber wie kann ich das rausfinden?

Vielen Dank für die Hilfe

Patrick

Installation SQL Server 2008 R2

$
0
0

Hallo zusammen,

ich möchte eine SQL Server 2008 R2 Developer auf meinem Rechner installieren. Die erforderlichen Dateien habe ich mir von Dreamspark besorgt.

Mein Betriebssystem ist ein WIN7 x64.
Wenn ich das Setup ausführe, klicke ich auf "neue Installation". Danach testet das Setup ob meine momentanen Einstellungen in Ordnung sind.
Dann erfolgt eine Installation von Setup-Unterstützungsdateien. Nachdem ich auf "Installieren" klicke erscheint kurze Zeit später folgende Fehlermeldung:

TITLE: Microsoft SQL Server 2008 R2-Setup
------------------------------

Fehler:

Fehler beim Lesen von Datei: C:\Users\01557\Desktop\sql_2008\1031_DEU_LP\x64\setup\sqlsupport_msi\PFiles\SqlServr\100\Setup\fe72iemr\icukg0yl\x64\1031\mkfe6j_g.rtf.  Überprüfen Sie, ob die Datei vorhanden ist und Sie darauf zugreifen können.

For help, click: http://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft+SQL+Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=10.50.1600.1&EvtType=0xDF039760%25401201%25401

------------------------------
BUTTONS:

OK
------------------------------

Folge ich nun diesem Pfad in meinem Dateisystem, ist an der Stelle nach ...\fe72iemr\ der Ordner "icukg0yl\.." nicht vorhanden.

Die Installation wurde direkt von Dreamspark(MSDNAA) heruntergeladen und sollte ja eigentlich nicht irgendwie defekt sein.
Ich hoffe jemand kann mir weiterhelfen.

Vielen Dank und ein schönes Wochenende.

INSERT über MERGE-Befehl funktioniert nicht (Fehler bezüglich NULL-Wert)

$
0
0

Ich habe eine Tabelle mit einem Primärschlüssel (wird nicht automatisch hochgezählt!), die ich aktualisieren möchte. Als Quelle nutze ich einen ADSI-Verbindungsserver, um Daten vom LDAP abzurufen. Wenn ich bei dieser Tabelle einen reinen INSERT laufen lasse, funktioniert das problemlos (z.B. "INSERT INTO Tabelle1 (PK, V1, V2, V3) VALUES ((SELECT MAX(PK)+1 FROM Tabelle1), 'A', 'B', 'C')"). 

Nun versuche ich über einen MERGE-Befehl ein INSERT bei NOT MATCH laufen zu lassen und bekomme hier nur den Fehler, dass PK keine NULL-Werte zulässt. Stelle ich bei der Tabelle ein, dass PK automatisch hochgezählt wird, funktioniert das! Ich möchte den PK aber im Standard belassen, da diese Tabelle automatisch von einer Software erstellt wurde. Gibt es hierfür eine Lösung? Es scheint hier Probleme mit der Unterabfrage "SELECT MAX(PK)+1 FROM Tabelle1" beim INSERT zu geben. 

Danke für eure Hilfe!

View zuletzt genutzt

$
0
0

Hallo Zusammen,

gibt es eine möglichkeit mir den Zeitpunkt dre letzten Nutzung aller Views (und Prozeduren) meiner Datenbank anzeigen zu lassen?

Ich habe SQL Server 2005.

Vielen Dank für Eure Hilfe

Grüße

Patrick

Keine Verbindung von SQLClient

$
0
0

Hallo,

ich habe einige SQLServer-Express Instanzen auf mehreren VServern installiert.
auch per Code über eine nur eine Adresse (Form:  xx.xx.xx.xx\SQLSERVER2012) macht unklare Probleme.

Über das Managementstudio kann ich zwar eine Verbindung herstellen, im VS aber geht es nicht (nur bei dieser einen Adresse - andere gehen).
Dim CS = "Data Source=" & Adresse
Dim Conn As New SqlClient.SqlConnection(CSB.ConnectionString)
Conn.Open()

Da kommt der Fehler:
Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt.

Woran kann es liegen, dass nur genau diese eine Adresse nicht gefunden wird?

Vielen Dank!
Grüße von Torsten

SQL Group By Problem

$
0
0

Hallo zusammen,

ich habe eine Tabelle am SQL Server mit folgenden Feldern

- ID

- PLZ

- Produkt

- Datum

- und noch vielen anderen Feldern..

Nun möchte ich eine View die mir nach PLZ und Produkt gruppiert und die jeweilige ID anhand des aktuellesten (also MAX) Datum ausgibt. Ich steh hier irgendwie auf der Leitung, bin in SQL nicht ganz so fit.

Dass ich ein GROUP BY für PLZ und Produkt brauche, sowie ein MAX für das Datum weißt ich. Aber wie geb ich dazu die IDs mit aus`?

SQL Server 2014 von 32 auf 64 bit

$
0
0

Hallo,

wir haben vor kurzem unsere Datenbank auf einen neuen Server umgezogen.

Diese läuft nun dummerweise auf einem SQL Server 2014 in 32 Bit.

Richtig wäre aber die 64 Bit - Version gewesen.

Ist es problemlos möglich die 64 Bit Version nach zu installieren und dann die Datenbanken über Trennen und Anfügen umzustellen? Oder kann ich "einfach" das Datenverzeichnis kopieren?

Herzlichen Dank für eure Antworten vorab.

Gruß

Udo


Variable innerhalb einer Table Valued Function

$
0
0

Hallo Zusammen,

ich nutze eine Table Valued Function mit mehreren Eingabeparametern. Nun möchte ich zusätzlich zu den Parametern auch noch eine Variable definieren um aus zwei Eingabeparametern (Monat und Jahr) einen Wert (Datum des ersten Tages dieses Monats) zu errechnen.

Meine Table Valued Function sieht vereinfacht so aus:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[ft_meineTVFunction]
(@SubjektNr int = NULL,
@RgMonat as int = null,
@RgJahr as int = null)

RETURNS TABLE
AS
  RETURN (SELECT      R.MeinWert1, R.MeinWert2
FROM    dbo.meineTabelle R
           WHERE       (Linkbeginn <= @Startdatum AND (Linkende >= @Enddatum) OR
                                                      Linkende IS NULL) AND SubjektNr = @SubjektNr or @SubjektNr is null));

Doch wo (und wie) kann ich die beiden Variablen @Startdatum und @Enddatum definieren und dann errechnen

Errechnen des Datums dann so?:

SET @Startdatum = CAST('01.' + CAST(RgMonat AS varchar(2)) + '.' + CAST(RgJahr AS varchar(4)) AS Datetime)

SET @Enddatum = DATEADD(m,1,@Startdatum)

Vielen Dank für Hilfe

Viele Grüße

Patrick

SSIS: Metadaten aus Eingabespalten auslesen

$
0
0

Hallo zusammen,

ich muss leider für ein Projekt dynamisch immer wieder eine Tabelle anlegen, in der temporär Daten abgelegt werden. Das Problem ist jetzt, dass die jeweilige Quelle immer unterschiedliche Metadaten liefert. 

Ist es möglich per Skript die Metadaten auslesen einer OLE DB Quelle auszulesen, um damit ein Create Statement zu erstellen? In der Komponente "OLE DB Ziel" gibt es ja den Knopf 'Neu...', diese Funktion muss ich entsprechend in meinen Ablauf einbauen.

Bin für jede Hilfe sehr dankbar :-)

Viele Grüße
Marco

Migration einer ganzen Instanz / SQL Server Upgrade: Backup Jobagent

$
0
0

Hallo Experts,

ich mache eine Side-by-Side Migration einer gesamten DB Instanz SQL Server 2005 in SQL Server 2012.

Erste Frage: könnte einen Backup einer gesamten Instanz erstellen inklusive aller User Datenbanken? Wie könnte ich den Jobagent übertragen? bzw. irgendwie automatisch für alle Jobs Scripte erstellen. Es sind sehr viele und manuell ist hier kein guter Weg. Bin gespannt was mit meinem Service Broker dann passiert...

Danke und viele Grüße



Irina

SQL Reporting Services. Fehlermeldung. Benutzer einrichten...

$
0
0

Hallo Experts,

ich habe eine neue SQL Server Instanz installiert. Bei der Kontenzuweisung habe ich vorerst einfachheitshalber allen Services den selben Benutzer Kono zugewiesen: domain\adm-service. Wie wäre die Fehlermeldung zu interpretieren? Diese erscheint bei aufrufen der SQL Reporting Services im Browser: http://server/Reports/Pages/Folder.aspx

Der Benutzer "domain\adm-service" verfügt nicht über die erforderlichen Berechtigungen. Stellen Sie sicher, dass ausreichende Berechtigungen erteilt und die Einschränkungen der Windows-Benutzerkontensteuerung (UAC) behandelt wurden.

Ich bin als "domain\adm-service" angemeldet und habe damit alles installiert.

Danke und Gruß


Irina

Tagcloud am SQL Server vorbereiten - ohne extra Tabelle

$
0
0

Hallo zusammen,

ich experimentiere schon geraume Zeit, komme aber nicht weiter. In einem Forum soll eine Tagcloud erstellt werden nach folgenden Bedingungen:

  1. es dürfen nur Nomen verwendet werden (erster Buchstabe muss groß, die folgenden bis zum nächsten Leerzeichen kleingeschrieben sein)
  2. es darf keine zusätzliche Tabelle herangezogen werden, keine zusätzlicher Wartungsaufwand
  3. die Wörter dürfen nur aus dem öffentlichen Bereich des Forums stammen
  4. es dürfen nur die 30 am häufigsten Vorkommen verwendet werden
  5. Floskeln, wie Anreden oder dergleichen müssen rausgefilter werden
  6. Letztendlich soll die TC eine View auf der Tabelle sein

Die Punkte 3, 4, 5 und 6 sind klar und einfach. Die ersten Beiden kosten mich meine grauen Zellen.

Gespeichert sind alle Nachrichten die der Tabelle "Posts", Spalte ist "Message" vom Typ ntext. Die Spalte / Tabelle hat entsprechende Indizes und hat etwa 70000 Zeilen, pro Tag etwa 100 neue Zeilen im Schnitt.

Ich habe zwar eine extra tabelle für die Tags angeregt, stößt aber auf taube Ohren, das Ganze muss vollautomatisch geschehen.

Habt ihr Ideen dazu?

Vielen Dank,

Stephan

Viewing all 1772 articles
Browse latest View live


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