blog.atwork.at

news and infos about microsoft, technology, cloud and more

Wie bekomme ich binäre Dokumente (BLOBs) in den SQL Server?

Zu Artikel Teil Eins - Wie bekomme ich binäre Dokumente (BLOBs) aus dem SQL Server? - nun das Gegenstück: Teil Zwei - Wie kann ich Dateien IN den SQL Server bringen? Das heißt Files als BLOB (Binary Large Object) in eine Tabelle speichern - und das Ganze möglichst einfach. Diese Lösung ist ebenfalls mit T-SQL zu bewerkstelligen. Die Idee dazu ist von databasejournal.com - Storing Images and BLOB files in SQL Server Part 2 entnommen, hier das Script: (Das ganze Script gibt es hier zum Download, es läuft in SQL Server 2005 und 2008.) Das Einlesen eines Files wird wieder in einer Stored Procedure "savefromfile" gemerkt. Den gewünschten Filestream liefert OPENROWSET (Zeile 11, die Hilfe informiert: ...also supports bulk operations through a built-in BULK provider that enables data from a file to be read and returned as a rowset). Damit wird das File eingelesen. Das INSERT (Zeile 9) fügt einfach den Output des SELECTS (Zeile 10-11) in die Tabelle "MyFiles" ein. Also simpel. Screenshot der Original-Tabelle: hier. Nach dem Starten von "exec savefromfile" und Anzeigen der Tabelle  sieht das Ergebnis so aus: Das File "00006_Bild 1.jpg" wurde mit seinem Inhalt in die Tabelle MyFiles eingefügt. Fertig! Noch ein Tipp für "Massen-Imports" - wenn mehrere Dateien so in die Datenbank insertiert werden sollen: Hier kann man sich sehr rasch damit behelfen, in der Kommandozeile im Bilder-Verzeichnis die Dateinamen mit dir /w > import.txt in ein Textfile zu schreiben. Das Textfile "import.txt" dann mit Notepad öffnen, und die Dateinamen per Zwischenablage in eine neue Excel-Datei kopieren. In Excel werden die SQL-Befehle für die gewünschten Files zusammengebaut, beispielsweise so: Die Bildnamen stehen in Spalte A, in Spalte B wurde - wenn z.B. die ID aus dem Dateinamen weiterverwendet werden soll - diese aus dem Dateinamen extrahiert (B1: =LINKS(A1;5) ). Die "Formel" für Zelle C1: ="INSERT INTO MyFiles (FIL_ID, FIL_FileName, FIL_Content) SELECT " & WERT(B1) & ", '" & A1 & "', BulkColumn FROM OPENROWSET(Bulk 'D:\Temp\bin\" & A1 & "', SINGLE_BLOB) AS BLOB);" Die Formel ergibt dann das korrekte T-SQL-Statement für die jeweilige Datei: INSERT INTO MyFiles (FIL_ID, FIL_FileName, FIL_Content) SELECT 6, '00006_Bild 1.jpg', BulkColumn FROM OPENROWSET(Bulk 'D:\Temp\bin\00006_Bild 1.jpg', SINGLE_BLOB) AS BLOB); Nun Zelle C1 bis ans Ende der Dateinamen "ausfüllen" lassen: Und die so erzeugten SQLs per Zwischenablage im SQL Management Studio einfügen und laufen lassen. GO! Tipp: Excel als Hilfsmittel zum Erzeugen von SQL-Befehlen und zum Nachbearbeiten von Daten ist übrigens eine Methode, die ich wirklich oft verwende und als äußerst praktisch empfehlen kann. Viel schneller gehts kaum. ;-) Mit diesen Werkzeugen ist auch das Manipulieren von BLOBs in SQL Server rasch umsetzbar!

Wie bekomme ich binäre Dokumente (BLOBs) aus dem SQL Server?

Das Leben als Datenbank-Administrator steckt voller Überraschungen. Mal gehören Indizies erstellt oder neu aufgebaut, Volltextkataloge rebuildet, Datenbanken gebackupt, gewartet, restored und natürlich ist ein DB-Admin Ansprechpartner für alle weiteren auftretenden Probleme und Wünsche der IT und der Anwender. So hatte ich vor kurzem die Anforderung, in einer Datenbank gespeicherte Bilder "herauszuholen", also klassische BLOBs (Binary Large Objects) als Dateien zu speichern. In meiner Datenbank existiert eine Tabelle "MyFiles" mit einer Spalte vom Typ IMAGE. Das Pendant ab SQL Server 2005 wäre der "neue" Datentyp VARBINARY; in meinem Fall handelt es sich um eine konvertierte DB aus SQL 2000 in SQL 2005. In der Spalte "FIL_Content" ist der Dateistream einer Datei enthalten, z.B. JPG-Bilder, Word- und Excel-Dokumente, PDFs, (BLOB), also ganz egal welche Files (ab SQL 2008 gibt es übrigens einen eigenen Filestream-Datentyp. ;-) Die binären Dokumente können nicht simpel mit Copy & Paste herausgeholt werden, nur die entsprechende Applikation liest und schreibt die Dateien von und in die Datenbank. Diese binären Informationen aus der Tabelle sollen als Files gespeichert werden um sie weiterzuverwenden. So sieht die vereinfachte Tabelle aus, Auszulesen ist die Spalte FIL_Content: Natürlich könnte ich eine kleine .NET Applikation dafür bauen, aber ich wollte eine möglichst rasche Lösung. Und ich habe sie auch gefunden! Ein kleines T-SQL Script im SQLTeam.com Forum von "Peso". Dieses habe ich analysiert und wie folgt angepasst. (Das ganze Script gibt es hier zum Download, es läuft in SQL Server 2005 und 2008.) Ich habe das Script als Stored Procedure "save2file" angelegt. Die Funktionsweise kurz erklärt: Mit einem Cursor (Zeile 16) wird die gesamte Tabelle "MyFiles" durchlaufen und die selektierten Felder in Variablen eingelesen (Zeile 21). Dann wird der Pfad aus Feld FIL_ID und Dateiname zusammengebaut und ausgegeben (Zeile 25-28). Jetzt kommt der Clou: Es wird ein ADODB-Stream als OLE-Objekt angelegt (Zeile 30) und mit den Werten befüttert (Zeile 31 bis 34). Dieser Stream wird auf die Festplatte geschrieben (Zeile 33, 34) und das OLE Objekt zerstört (Zeile 36). Und weiter mit dem nächsten Datensatz (Zeile 38). Anzupassen ist natürlich der Pfad, wohin die Dateien gespeichert werden sollen (Zeile 27). Ausgeführt wird das Script wie gewohnt mit exec save2file Voila! Wenn alles stimmt, wurden die binary Contents als Files in den gew. Pfad extrahiert: Hinweis: Diese Vorgangsweise ist sehr rasch anwendbar, aber nicht unbedingt für "daily use" geeignet. Je nach Datenmenge ist das Erstellen eines OLE-Objekts nicht unbedingt "günstig". Aber für den Ab-und-zu Export verdient das Script meine Empfehlung als "best practice"! Eine weitere Methode: KB258038: How To Access and Modify SQL Server BLOB Data by Using the ADO Stream Object mit dem VB Beispiel "Saving the Data in a SQL Server Image Column to a File on the Hard Disk" und "Transfer the Image Stored in a .gif File to an Image Column in a SQL Server Table". In Teil Zwei geht es dann um den umgekehrten Weg - wie bekomme ich Files per T-SQL als BLOB in die Datenbank... Möge T-SQL immer so hilfreich sein! ;-) Beitrag von Toni Pohl

Outlook Folder in der Landessprache

Alt aber gut: immer wieder erhalte ich Anfragen, wenn ein Outlook beim Einrichten plötzlich meint, es sei englisch und der Posteingang heißt dann plötzlich Inbox, Gesendete Objekte heißen Sent Items u.s.w. Grundsätzlich ist dies nur ein kosmetisches Problem, trotzdem stört es die meisten User. Ursache dafür ist meistens, dass "irgendeine" Software, z.B. ein Virenscanner oder etwas anderes statt der Landessprache in Englisch eingestellt ist oder man beim ersten Start von Outlook sein System noch in Englisch eingestellt hat. Die Lösung dafür ist sehr einfach: Es gibt in Outlook eine Reihe von Command Line Switches, die man verwenden kann. In diesem Fall heißt der magic Key: resetfoldernames. Aufzurufen so: outlook.exe /resetfoldernames Eine Liste aller Befehlszeilenoptionen finden Sie hier. Beitrag von Martina Grom

Fesche Silverlight Zoomery Gallery

Auf www.zoomery.com gibt es eine hübsche Bild-Galerie downzuladen. Das Tool Zoomery Gallery ist eine WPF-Applikation, welche interaktive Online-Fotoalben mit Silverlight Deepzoom-Technologie erstellt - siehe auch DeepZoom - am Beispiel einer Harley Davidson und Deep Zoom Composer final released. Wie sieht eine Zoomery Gallery aus? So zum Beispiel - Klick aufs Bild fürs Online-Album mit Fotos von der Microsoft TechEd 2009 in Berlin (Silverlight PlugIn erforderlich): Gesteuert wird die Diashow mit der Navigation unten und natürlich durch Maus Ziehen und Scrollrad. Eine Single-Lizenz kostet 50 US$, siehe Für alle Interessierten: Hier die step-by-step Anleitung zum Evaluieren von Zoomery Gallery. Der Download ist frei, für die Evaluierung benötigt man eine Lizenz-Datei, welche man auf BuyZoomeryGallery mit seiner E-Mail Adresse gleich anfordern kann. So sieht es dann auf der Festplatte aus: Nach dem Entpacken des ZIPs erhält man Setup.exe und ein msi-Paket. Start mit Setup; nun muss nur noch das license-File ins installierte Zoomery-Programmverzeichnis kopiert werden (bei meinem Windows 7 x64 in C:\Program Files (x86)\Response\Zoomery Gallery). Danach im Startmenü (sorry, das heißt seit Vista ja Pearl-Button, oder?) und Zoomery starten. Zunächst ein neues Projekt anlegen: Und ein Verzeichnis mit Bildern auswählen (darin können auch weitere Bilder-Verzeichnisse enthalten sein, Zoomery Gallery verwendet dann alle Bilder hier drin): Mit Finish werden die Bilder importiert. Optional können auch die Properties auf andere Einstellungen und Verzeichnisse angegeben werden. Gestartet wird das Generieren mit dem großen "Generate Scene"-Button: Dann - je nach Bilder-Anzahl und Qualität - Kaffee trinken, Abendessen, Weihnachten feiern oder Ähnliches - das Erstellen des DeepZoom-Albums kann schon einige Zeit dauern, bei mir war es mit dieser Menge fast eine Stunde. Ich habe das Album dann reduziert und neu berechnet, das dauerte dann nur mehr etwa 10 Minuten. Wenn fertig, "View in Browser". Das Ergebnis ist wie oben zu bewundern. Platz braucht so ein Deepzoom schon: Aus den 36 Fotos mit 6.6MB wurden mit meinen gewählten Einstellungen 923 Ordner und fast 2.900 Dateien mit insgesamt etwa 88MB. Aber der Output ist toll und macht Spaß! So weit so hübsch. Bei meinem Test haben nur ein paar kleine Dinge nicht funktioniert: Das Downloaden eines Bildes bringt einen Javascript-Fehler und bislang ist mir nicht klar, wie das Durchsuchen funktioniert - ich habe EXIF, IPTC und JPG-Kommentare in den Fotos hinzugefügt, die wurden aber nicht erkannt. Und wo die Diashow-Dauer eingestellt werden kann werde ich auch noch herausfinden... Mir gefällt die Zoomery-Gallery sehr gut, sie ist einfach handzuhaben und besitzt eine ansprechende, interaktive Bedienung! Viel Spaß mit dem Deepzoom-Album!

Wie löscht man sehr tiefe Verzeichnisse?

Ich mag robocopy. Ich mag robocopy wirklich (siehe u.a. windowsblog.at Robocopy - Mein Lieblingstool für Kopieren und Backup). Es hat nur einen Nachteil: Es tut, was man ihm sagt…! Wie so oft saß das Problem vor dem Computer: Vor Weihnachten sitze ich vor meinem Notebook und will noch “rasch” ein paar Daten von meinem SBS2008 aufs Notebook mitnehmen. Also robocopy anwerfen: Die Daten sind in meinem Laufwerk H: und ich kopiere sie in mein lokales Verzeichnis C:\Daten\H: !! NICHT NACHMACHEN !! ;-) robocopy H:\ H:\Daten\H /s /MIR (… und sonst noch die üblichen Schalter wie /R:3 /W:3 etc…) ENTER. Der Befehl arbeitet einige Zeit und erzeugt viel Copy-Output. Moment mal, da stimmt doch was nicht! Ich $&}$%! Die Finger waren schneller als das Hirn, das angegebene Ziel war ja die Quelle H:\Daten… statt C:\Daten\H !!! Abbrechen und nachsehen, was da passiert ist: Super, robocopy hat wirklich getan, was ich beauftragt habe: Das Verzeichnis H:\ rekursiv in sich selbst kopiert! Na gut, halb so schlimm. Dann wechsle ich mal auf den Server und lösche eben mal die Daten und Verzeichnisse, oder? Also, Das Verzeichnis am Server lautet D:\Daten\H. Und hier drin die ewige Verzeichnisstruktur. Damit ich versehentlich nichts kaputt mache – da sind ja noch mehr Daten drauf! - benenne ich das zu löschende Verzeichnis um: Aus D:\Daten\H\Daten wird gleich mal D:\Daten\H\x und da drin das erste Verzeichnis x1 – so fühle ich mich irgendwie “sicherer”. Kommandozeile öffnen und versuchen in D:\Daten\H\x\x1 die Daten und die Verzeichnisse zu löschen: del daten /S /F /Q Hm. Klappt nicht. Genauso wenig klappt das Löschen der Verzeichnisse mit rd: Blöd. Na gut, dann versuchen wir es mal mit PowerShell: Genau dasselbe Ergebnis… next attempt: vielleicht geht es mit Rekursion? Wieder nichts! Langsam steigt ein ungutes Gefühl in mir auf… Zwei Tage später: Jetzt zu den Feiertagen kann ich mich ja wieder darum kümmern und versuchen, den “Datenmüll” wieder zu entfernen. Wie bekomme ich diesen tiefen Verzeichnispfad wieder weg? Wahrscheinlich habe ich nicht die richtigen Suchbegriffe in die Suchmaschinen eingetippt, denn ich habe nichts (rasch) brauchbares gefunden… Ich überlege, mir ein winziges Programm zu schreiben, das rekursiv in das letzte Verzeichnis wechselt und dort alles löscht, dann eine Ebene höher geht usw. Aber das wird wohl auch nicht funktionieren, denn beim Löschen beschwert sich das Dateisystem ja immer, dass die Verzeichnistiefe zu groß ist. Dann wird Löschen auch nicht gehen. Oder Umbenennen aller Verzeichnisse in den kürzest möglichen Pfad, z.B. “1” – aber automatisiert, denn sonst sitze ich morgen noch da: D:\Daten\H\x\x1\1\1\1\1\1\1\1\1\1\1\1\1 … Oder… moment mal: Wenn robocopy den coolen Schalter /MIR kann (löscht am Ziel-Verzeichnis alles und “snychronisiert” das Quell-Verzeichnis vollständig in das Zielverzeichnis), dann kann es vielleicht auch die so angelegte Verzeichnistiefe wieder löschen?? Probieren wirs: Ich verwende ein Verzeichnis mit nur einer Datei drin aus D:\Temp, um ein “Dummy-Copy” ins Ziel durchzuführen: robocopy D:\Temp D:\Daten\h\x /MIR /s /r:1 /w:1 Ok, alle Fenster schließen, damit die Verzeichnisse nicht gelockt sind und den Befehl mehrmals ausführen – es klappt! Den kompletten Output erspare ich uns, aber es sieht etwa so aus: -------------------------------------------------------------------------------    ROBOCOPY     ::     Robustes Dateikopieren für Windows -------------------------------------------------------------------------------            Gestartet: Fri Dec 25 15:59:42 2009              Quelle : d:\temp\                Ziel : d:\daten\h\x\             Dateien : *.*             Optionen: *.* /S /COPY:DAT /PURGE /MIR /R:1 /W:1 ------------------------------------------------------------------------------                            1    d:\temp\         *ZUS. Verz.       -1    d:\daten\h\x\x1\         *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\         *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\         *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\         *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\         *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\daten\         *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\daten\h\         *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\daten\h\daten\         *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\daten\h\daten\h\         *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\daten\h\daten\h\ …         *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\daten\h\daten\h\ daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\ daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\ ------------------------------------------------------------------------------                 Gesamt   Kopiert  Überspr. Nicht gef.  Fehler    Extras Verzeich.:         1         0         1         0         0        48    Dateien:         1         0         1         0         0         0      Bytes:       215         0       215         0         0         0     Zeiten:   0:00:00   0:00:00                       0:00:00   0:00:00    Beendet: Fri Dec 25 15:59:43 2009 Wieder was gelernt! Erstens: Kurz Hirn einschalten, bevor man so praktische Tools wie robocopy verwendet und zweitens ist oft der Auslöser die Lösung… In meinem Fall kann robocopy auch wunderbar zum Löschen von so tiefen Verzeichnissen verwendet werden, wo das Betriebssystem “die Patschen streckt”. ;-) In diesem Sinne: Robocopy ist super. Und erholsame Feiertage!

Bing fürs iPhone

Bing gibt es nun auch fürs Apple iPhone! Die Applikation ist gratis: itunes.apple.com - Store "Bing has finally made an iPhone app, which is now up on the Apple iTunes app store." Siehe auch cnet.com: "See the Bing daily image and related trivia on the home screen. Search maps or the Web with your voice--even say an address. Use Image Search and flick through previews. Download Bing today to find stuff nearby and get there fast."

Bye bye Facebook mit Web Suicide

Wer sich aus Facebook & Co - aus den großen sozialen Netzen von Web 2.0 - verabschieden will, findet nun einen automatisierten Ausstieg: Web 2.0 Suicide Machine von moddr Wer also den "sozialen Netzwerk Selbstmord" begehen und die Zeitfresser-Maschine abschalten will... ;-) "Liberate your newbie friends with a Web2.0 suicide! This machine lets you delete all your energy sucking social-networking profiles, kill your fake virtual friends, and completely do away with your Web2.0 alterego..." Nach Eingabe der Zugangsdaten kann man mit Mausklick - ruck zuck - sein eigenes Profil leeren und dabei in Echtzeit zusehen - Alle Daten im Profil werden geleert und alle Verknüpfungen und Freunde entfernt: "Dadurch ist die Wahrscheinlichkeit höher, dass die Daten auch serverseitig dauerhaft aus der Datenbank verschwinden." Mehr dazu in der ORF FuZo: Schneller Weg ins digitale Nirvana

SharePoint Developer Tool SPVisualDev

Vor kurzem gefunden (von wem hab ich bloß diesen Tipp bekommen...?): SPVisualDev auf codeplex scheint ein sehr brauchbares Add-In in Visual Studio für die Entwicklung für SharePoint zu sein: "SPVisualDev makes it easier for Sharepoint 2007 developers to develop features and artifacts with Visual Studio 2008. It is written in C# and is implemented as a Visual Studio 2008 Add-in." Kennts wer - hat es bereits jemand in Verwendung?

Freies ebook Mastering Power Shell

Kürzlich habe ich im IT Pro Blog TechNet Ireland einen Blogeintrag mit Hinweis auf ein freies eBook mit dem Titel Mastering Powershell gefunden. Das eBook stammt von Dr. Tobias Weltner, einem PowerShell MVP aus Deutschland, und kann auf powershell.com online gelesen oder als PDF downgeloadet werden. Das PDF hat 3.8MB und ist 567 Seiten stark. Das Buch richtet sich genauso an Powershell-Neulinge wie auch an erfahrene Powershell-Anwender - es gibt immer etwas Neues zu erlernen. Powershell ist u.a. Bestandteil von Windows Server 2008. PS 2.0 ist in Windows 7 und Windows Server 2008 R2 eingebaut und dient vor allem dazu, Systemadministratoren ein leistungsfähiges, scriptbares Werkzeug bereit zu stellen um administrative Tätigkeiten zu automatisieren. PS wird auch recht exzessiv in Exchange Server 2007 verwendet, genauso ist PS in System Center Operations Manager 2007, System Center Data Protection Manager V2 und System Center Virtual Machine Manager gut verwendbar. Also: es lohnt sich mit Powershell zu befassen! Vielleicht ist das freie eBook ein guter Beginn dafür - die Weihnachtsfeiertage stehen eh bald an... ;-)

Virtuelle Maschinen offline aktualisieren

Die dunkle Seite der Macht ist immer präsent. In IT Netzwerken muss man sich permanent gegen Bedrohungen und nicht autorisierte Zugriffsversuche schützen - und zwar alle Maschinen. Dies ist Aufgabe des Systemadministrators. Genauso sind die Benutzer gefordert, mit sensiblen Informationen wie Kennwörtern, Geschäftsdaten und Co. vertraulich umzugehen. Nur, wie sieht das mit virtuellen Maschinen (VM) aus, die nur zeitweise gebraucht werden und offline sind? Wer hält die aktuell? Die VMs sind von der Inbetriebnahme aus ihrem Dauerschlaf bis zum Einspielen der letzten Patches "verwundbar". Genau hier greift das Offline Virtual Machine Servicing Tool ein, welches seit genau einem Jahr verfügbar ist. Nun liegt seit Anfang Dezember die neue Version 2.1 vor. Das Offline Virtual Machine Servicing Tool ist eine frei verfügbare, getestete und automatisierte Komponente um VMs auf den aktuellen Patch-Stand zu bringen und so sicher vor Angreifern zu machen. Hier geht´s zum Download des Offline Virtual Machine Servicing Tool 2.1 (OVMST21). So funktionierts: Die Neuerungen des Offline Virtual Machine Servicing Tool 2.1: Version 2.1 arbeitet nun mit System Center Virtual Machine Manager 2008 R2, System Center Configuration Manager 2007 SP2, Windows Server Update Services 3.0 SP2 und unterstützt das Aktualisieren der Betriebssysteme Windows 7 und Windows Server 2008 R2. Nach dem Download und Entpacken des winzigen ZIPs sind diese Files vorhanden: Das Offline Virtual Machine Servicing Tool 2.1 ist rasch eingerichtet (siehe auch TechNet - Offline Virtual Machine Servicing Tool 2.1): Install the tool in your environment. Ein Configuration Wizard führt durch den Prozess zum Verbinden des Tools zum Virtual Machine Manager und zum WSUS. Configure virtual machine groups. VMs können gruppiert werden um die Service-Jobs einmalig einzurichten. Create and schedule servicing jobs. Ein Service-Job führt alle erforderlichen Aktionen (VM Start, Update, Shutdown) durch. Der Job kann jederzeit oder auch zu Low-Traffic-Zeiten (Wartungsfenstern) und wiederkehrend durchgeführt werden. Das Tool arbeitet mit Windows Task Scheduler. Das Tool stellt somit eine Entlastung der System-Administratoren dar, die sich nicht darum kümmern müssen, offline VMs auf aktuellem Stand zu halten! Happy patching mit OVMST!

Neue Tools für Virtualisierung: Disk2VHD 1.4 und VMDK to VHD converter

Das freie Tool Disk2vhd der System-Gurus Mark Russinovich und Bryce Cogswell aus den Windows Sysinternal liegt seit 1. Dezember in Version 1.4 vor (Details siehe auch hier im Blog Wie konvertiere ich einen physischen PC in einen virtuellen PC?). Disk2vhd kann auch per Kommandozeile gestartet werden, nämlich so einfach: disk2vhd * c:\vhd\snapshot.vhd Das Tool kann auch direkt von Live.Sysinternals.com gestartet werden! Run Disk2vhd ...konvertiert den physischen PC in ein virtuelles VHD File zur Ausführung mit Virtual PC oder Hyper-V. Und noch ein Tool-Tipp: Vielleicht haben Sie die Anforderung, eine virtuelle Maschine aus VM-Ware unter Hyper-V laufen zu lassen? Es gibt mehrere Wege, dies zu bewerkstelligen. Ein Dritt-Hersteller hat jetzt ein freies Tool bereitgestellt, welches VMDK in VHD Dateien und auch umgekehrt VHD in VMDK Dateien konvertieren kann. Dabei wird eine Sektor-weise Kopieroperation gestartet, welche die Quelldateien unverändert lässt, sodass sie weiterverwendet werden können. Das Tool des Anbieters heißt StarWind (V2V) Converter, der Download der freien Produkte findet sich hier. Dazu ist nur das Formular mit einer gültigen E-Mail-Adresse auszufüllen. Ich selbst habe den StarWind Converter noch nicht ausprobiert, aber laut community scheint das recht gut zu funktionieren - für alle jene, die den Bedarf dafür haben.

SQL Server - Datenbank Diagramme kopieren

Datenbanken können recht groß und komplex werden - dafür sind leistungsfähige Datenbank-Systeme wie SQL Server ja da. Und weil ERP-Systeme und große Anwendungen gleich mal ein paar hundert bis tausend Tabellen beinhalten können, wurden die Datenbank-Diagramme erfunden, um Relationen zwischen den Tabellen grafisch abbilden zu können. Erst mit der grafischen Darstellung kann sich ein Datenbank-Administrator und Entwickler ein (Teil-) Bild des Daten-Schemas machen - zu mindestens gilt das für mich. Ein kleines Datenbank-Diagramm in SQL Server kann zum Beispiel so aussehen: Fesch. Nur, wie kann so ein Datenbank-Diagramm aus einer bestehenden Datenbank in eine andere Ziel-Datenbank übertragen werden? Gar nicht! Im Kontextmenü des SQL Servers findet sich dazu keine Möglichkeit. Die einzige mir bekannte Möglichkeit war bislang das Kopieren der Datenbank und Nacharbeiten der Daten. "Nachzeichnen" stellt keine Option dar. Jetzt habe ich aber aus aktueller Anforderung - die Diagramme sollten in eine neue Datenbank übertragen werden - einen brauchbaren Workaround zum Kopieren von Diagrammen in andere Datenbanken gefunden, und zwar auf codeplex.com Script SQL Server 2005 diagrams to a file von Craig Dunn. Eine sehr praktische Lösung. Ab SQL Server 2005 werden Diagramme in [sysdiagrams] gespeichert. Diese Eigenschaft machen sich zwei kleine Stored Procedures zu nutze und können so ein bestimmtes Diagramm auslesen und scripten. Hier die step-by-step Anleitung zum Scripten von Datenbank-Diagrammen (ab SQL Server 2005 lauffähig): Download der beiden Scripts von hier: Download source code (4.7KB). Das ZIP entpacken: Die beiden Stored Procedures aus dem ZIP müssen in der Quell-DB ausgeführt werden (SQL-Admin-Rechte erforderlich). Dazu einfach Doppelklick auf die SQL-Dateien, Quell-Datenbank auswählen und ausführen: Es müssen beide SP´s erstellt werden. Nun Aufrufen der SP Tool_ScriptDiagram2005 mit dem gewünschten Diagramm-Namen, z.B.: exec Tool_ScriptDiagram2005 'dg_EDVGeraete' Die Ausgabe erzeugt als Ausgabe (Messages) ein Script. Dieses mit STRG + A markieren und mit STRG + C kopieren:   In die Ziel-Datenbank wechseln (Neue Abfrage, use <meinedb>), das erzeugte Script mit STRG + V einfügen und mit F5 ausführen. Als Ergebnis - wenn alles klappt - erscheint das durch das Script neu erstellte Diagramm mit Datum und Uhrzeit im Namen - dieser kann natürlich wieder beliebig geändert werden. Tipp: Refresh des Diagramm-Knotens! Fertig. Das Diagramm wurde gescriptet und neu in der Ziel-Datenbank erstellt. Das coole Script hilft somit Aufwand zu minimieren und ermöglicht sehr einfach Datenbank-Diagramme in andere Datenbanken zu übernehmen. Für mich war´s wirklich praktisch, diesen Workaround zu verwenden, daher verdient das Script für mich eine "best practise"-Empfehlung.