Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

MSSQL 2008 Express Tabellen kopieren bzw low level Copy

Frage Entwicklung Datenbanken

Mitglied: Chaos99

Chaos99 (Level 1) - Jetzt verbinden

21.08.2012 um 12:49 Uhr, 3172 Aufrufe, 8 Kommentare

Hallo,

wir nutzen ein Programm dass uns in regelmässigen Abständen Werte ausliest und diese in SQL ablegt.

Dazu gibt es je nach Wert-typ verschiedene Tabellen.

Die Ablage erfolgt auf einem Hauptserver.

Es gibt noch einen Ersatzserver der ebenfalls aktuell gehalten werden soll (am besten permanent)
Wie bekomme ich die neu eingetragenen Werte am geschicktesten in den Ersatzserver (identische Struktur)


Der Daten Durchfluss soll möglichst gering gehalten werden.

D.h. komplette Datenbank umkopieren ist bei unsrer Struktur quasi Selbstmord.

Habe ich eine Möglichkeit herauszufinden welche Einträge neu sind bzw welche Tabellen bearbeitet wurden?
auf diese Weise könnte ich ja einen SQl Auftrag anschmiessen ala "tabelle bearbeitet => kopiere tabelle um"


Über Hilfestellung würde ich mich sehr freuen.

Mit freundlichen Grüßen Christian
Mitglied: Biber
21.08.2012, aktualisiert um 18:06 Uhr
Moin Chaos99,

du willst doch wohl nicht im Ernst jedesmal die ganze Tabelle kopieren, wenn sich ein Datensatz oder ein paar Datensätze geändert haben???

Stehen denn "Server" und "Ersatzserver" in Verbindung/sind Datenbank-User von \\Server\DeineDB auf \\ErsatzServer\DeineDB berechtigt?

Es wären alle möglichen Lösungen von Triggern bis Replikation denkbar- aber natürlich nur dann, wenn die Datenbanken "Verbindbar" sind.

Und eine entscheidende Frage ist zusätzlich, wie viel oder wie wenig die "Hauptserver"-Datenbank belastet werden darf - wenn dieser Server keine weiteren Zeitaufwände haben darf/haben sollte, dann muss der Datenabgleich eben asynchron/zeitversetzt per Batchjob meinetwegen nachts zwischen 03:07h und 03:23h stattfinden und nicht in Quasi-Echtzeit bei jedem Datensatz-Update im Operativsystem.

Grüße
Biber
Bitte warten ..
Mitglied: Chaos99
21.08.2012 um 13:57 Uhr
Hallo Biber!

nein ich möchte das nicht ;) garantiert nicht jedesmal wenn sich eine eintragung in der tabelle ändert ;)

Server und Ersatzserver sind verbunden und entsprechend berechtigt ja.

Eine Replikation ist meiner Meinung nach nicht wirklich möglich.
Es handelt sich immerhin (siehe titel) um MSSQL 2008 express.

Mir wäre neu dass der das unterstützt. Ausserdem haben wir keine sonderlich guten erfahrungen mit replikationen gemacht und mein chef ist deswegen dagegen...

Die fleißaufgabe wäre es also in visual studio 2010 mit vb.net sowas selber zu machen.
Also auszulesen wann haben wir neues (wie auch immer ich das mache)
und diese dann gezielt zu übertragen.

wie funktionieren trigger? (okay ich google das mal)

das ganze muss halt entsprechend sicher sein und nahezu synchron.

den batchjob habe ich schon vor monaten implementiert.
genügt dem cheffe nicht...
Bitte warten ..
Mitglied: it-frosch
21.08.2012 um 14:07 Uhr
Hallo Chaos99,

Trigger sind vereinfacht gesagt "SQL Scripte" die bei einem bestimmte Ereignis einer Tabelle (Insert, Update, Delete) ausgelöst werden.

Biber meinte, dass du z.B. auf die Tabelle einen Insert und Update Trigger setzen könntest die die eingefügten bzw. geänderten Datensätze in die andere DB übertragen.

grüße vom it-frosch
Bitte warten ..
Mitglied: Biber
21.08.2012, aktualisiert 22.08.2012
Moin it-frosch,

Zitat von it-frosch:
Biber meinte, dass du z.B. auf die Tabelle einen Insert und Update Trigger setzen könntest die die eingefügten bzw.
geänderten Datensätze in die andere DB übertragen.
Jepp, das meinte Biber. Und ich würde auch einen ON DELETE-Trigger einbauen.
Danke fürs Erläutern.

Ergänzend zu der vom Cheffe gestellten Aufgabe:

Sollten die beiden Server sowohl eine Replikationslösung wg. unterschiedlicher Versionen verweigern und auch nicht "verbindbar" sein...

-> dann würde ich mich weigern, auf die "Quasi-synchron-Daten"-Anforderung einzugehen.

Denn dann bleibt unterm Strich nur ein nächtliches Backup/Restore oder ein Attach/Detach und Transport via USB-Stick oder irgendeine ähnliche Blumenladen-Lösung.

In diesem Fall wäre es 2708x sinnvoller, via Trigger einen Satz "Schattentabellen" mit den historisierten Daten auf demselben Server befüllen zu lassen und davon regelmäßg ein Backup zu ziehen oder auf CD zu brennen.

Grüße
Biber
Bitte warten ..
Mitglied: Chaos99
22.08.2012 um 08:47 Uhr
Moin liebe Helfer ;)

das ganze konzept mit triggern sieht für mich sehr gut aus.

ich denke damit kann ich mal wieder probieren ihm eine lösung zu zaubern.

als skript kann man ja zumindest viel machen


sollte allerdings der hauptserver abschmieren wird bei uns in den ersatzserver eingespeichert.

wenn ich dann meine trigger auf tabellen des hauptservers habe brauche ich dafür eine lösung...

kann ich trigger von einer tabelle wieder entfernen?


so könnte ich ja quasi eine syntax rausjagen die erstmal die trigger des hauptservers löscht (obwohl das ja in dem sinne nicht mal nötig ist oder?)
und trigger für alle relevanten tabellen des ersatzservers anlegt


gedanken dazu nehm ich gern an ;)

und merci zwischendrin ;)
Bitte warten ..
Mitglied: Biber
22.08.2012, aktualisiert um 09:06 Uhr
Moin Chaos99,

nicht, dass ich deinen Eifer bremsen will, aber...

-> in meinem ersten Kommentar stehen so ein, zwei Zeilen, die mit einem "?" enden.

Kannst du darauf denn antworten?

bei Datenbankspielereien habe ich schon ganz gern ein bisschen festen Boden unten den Füssen.

Eine Frage kann ich aber pauschal beantworten:
kann ich trigger von einer tabelle wieder entfernen?
Bei Datenbankobjekten ist die Welt noch ganz einfach.
Alles, was du mit CREATE erzeugen kannst, lässt sich mit einem DROP auch wieder rückstandsfrei entsorgen.
Trigger lassen sich zusätzlich auch Enablen/Disablen, d.h. deaktivieren.

Grüße
Biber
Bitte warten ..
Mitglied: Chaos99
22.08.2012 um 09:17 Uhr
du willst doch wohl nicht im Ernst jedesmal die ganze Tabelle kopieren, wenn sich ein Datensatz oder ein paar Datensätze
geändert haben???

nein das will ich definitiv nicht ;)

Stehen denn "Server" und "Ersatzserver" in Verbindung/sind Datenbank-User von \\Server\DeineDB auf
\\ErsatzServer\DeineDB berechtigt?


Server und Ersatzserver sind über Switch via Gigabit LAN verbunden.
Die SQL Server teilen sich die Nutzer und sind von daher voll aufeinander zugriffsberechtigt.
ich sehe da kein Problem.




Meinen "Eifer" bremst du sicherlich nicht ;)
Ich bin nur wie immer Mädchen für alles und während ich mich mit 5 Projekten simultan bespasse versuche ich ein bisschen gezielten Input zu den Sachen zu bekommen bei denen ich mich suboptimal auskenne ^^


das mit dem drop ist schonmal gut...
Bitte warten ..
Mitglied: MadMax
22.08.2012 um 13:27 Uhr
Hallo Christian,

nicht ganz so aktuell aber dafür wahrscheinlich etwas einfacher wäre noch das LogShipping. Da werden einfach die Sicherungen vom Transaktionslog zum Ersatzserver übertragen und dort eingelesen. Wird in anderen als der Expreß-Edition von SQL Server unterstützt, dürfte aber auch bei Expreß relativ leicht zu automatisieren sein. Wie es geht findet man z.B. in einem Artikel auf inside.sql.

Gruß, Mad Max
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
SAN, NAS, DAS
gelöst Low Level formatierung einzelner Sektoren? (11)

Frage von Rapante90 zum Thema SAN, NAS, DAS ...

Windows Server
gelöst Update von sql server express 2005 sp4 auf 2008 klappt nicht (11)

Frage von jhaustein zum Thema Windows Server ...

Windows Server
gelöst NTP Server auf einem Windows Server 2008 R2 DC standardmäßig schon drauf? (11)

Frage von M.Marz zum Thema Windows Server ...

Batch & Shell
Ordner erstellen ll Datei hinein kopieren (1)

Frage von heyalice zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (22)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...