dbHero – stop waiting for SQL Server

Well finally, those guys from the code Hero team came up with a tool, which puts an end to those nerv wracking procedures when it comes to taking a snapshot from a database and put it back in.

Imagine, you’re a tester or business analyst or project manager or developer or …. whatever ;)

Today, your task is it, to do some test on a large 3-tier web based system. Some of those tables in the database have millions of records in them. The whole application is quite complex, and well, you start testing the new functionality, the guys from the dev team just added.

Well, you do your tests, find some bugs (surprise, surprise ;) ) circle back to the developers and they fix them (even more surprise ;) ).

So, next day, you do your testing again. Well, you’ld like to BUT, since your tests, influenced the data of the system, some of your tests hit a different scenario. And maybe, your testing doesn’t trigger the buggy behavior anymore, or maybe, the bugs have been fixed. The point is, you don’t know for sure, as your starting point in the test system was a different than the day before…

So you need to take a snapshot of  some of those tables in the database before you start testing, and put it back in afterwards. That gives you exactly the same starting point for any consecutive tests.

Yes, MAYBE you can do this – but not if you’re talking about massive datasets like thousands of records, or ten housands, or hundret thousends… well, you get my point ;)

Using SQL insert scripts, will bring the Enterprise Manager to a halt (if not a crash) if you use tables with more than some ten thousands of records (and maybe you have a couple of those tables in your database and in that script).

The only way, you can use that SQL Insert script is to manually truncate it into smaller chunks, so the Enterprise Manager can work with it. That’s gonna take you ages – and may lead to some mistakes. Even if the Enterprise Manager swallows the whole script in one piece, it’s very, very slow.

The code Hero guys, where annoid about this, in their day to day work and created dbHero. That tool creates either SQL Inserts from SQL Server databases (no, we don’t want to use them), AND so called POWER scripts ;) The POWER scripts are an enhanced way of bulk copy scripts. They are damn fast – (code Hero says more than 50 times faster). Enhanced, why ? Well, also the standard bulk copy has got some issues ;) ) The code Hero guys, don’t reveal all of them (wonder why … ;) ) but point into the direction of encoding schemas, delimiters and string problems, among a few others…. At the same time, they even improved the already good speed of the bulk copy scripts.

Anyhow. Using dbHero makes taking those snapshots in POWER script modus a breath of fresh air ;) Instead of waiting hours or sometimes forever (when Enterprise Manager decides to go dark on you with too larg scripts ;) ), the job is done in seconds to minutes.

That saves time – and yes, you know what I’m gonna say – money ;)

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News

Nur noch schnell einen BULK INSERT von einem Share …

Wer kennt das nicht? Noch schnell die Daten von einem Share in einen SQL Server laden und fertig. Der SQL Server Dienst läuft aber in der Regel unter einem lokalen Account (Local System, Local Service oder  Network Service). Dieser hat naturgemäß keinen Zugriff auf Netzwerk Laufwerke. Es sei denn:

  • das Share hat die NTFS Berechtigung “Jeder” und die Freigabe Berechtigung “Jeder”.
  • Man läßt den SQL Server Dienst unter einem Account der Domaine laufen, welcher die notwendigen Permissions hat.
  • Man meldet sich mit einem Domain Account anstatt einem SQL Login am Server an.
  • Mehr dazu kann man unter “Security Considerations” und “Bulk Importing from a Remote Data File” bei http://msdn.microsoft.com/en-us/library/ms175915.aspx gelesen werden.

Frustriert hat man es Stunden später vielleicht doch hinbekommen oder sich einen anderen Weg überlegt.

Aber mal angenommen wir möchten ein DAT Datei von einem Share adhoc in den SQL Server laden:

BULK INSERT [T_TEST]
FROM '\\server\share\test\T_TEST.dat'
WITH (
DATAFILETYPE = 'char',
TABLOCK,
CODEPAGE = '1252',
KEEPNULLS,
KEEPIDENTITY
);

Gegebenfalls hat das sogar von dem lokalen SQL Server funktioniert, aber auf dem eigentlichen Server will er das nicht laden.


Msg4861, Level 16, State 1, Line 2
Cannot bulk load because the file "\\server\share\test\T_TEST.dat" could not be opened. Operating system error code 5(Zugriff verweigert).

 

Um die Daten jetzt irgendwie doch (noch schnell) reinzuladen, können wir mal nachschauen, ob wir überhaupt in dem Verzeichnis lesen dürfen. Dafür brauchen wir kurzfristig die xp_cmdshell.

-- ‘Erweiterte Optionen anzeigen’ einschalten.
EXEC sp_configure 'show advanced options', 1;
-- Das System aktualisieren.
RECONFIGURE;
-- xp_cmdshell anschalten.
EXEC sp_configure 'xp_cmdshell', 1;
-- Das System aktualisieren.
RECONFIGURE;

 

Nun können wir den DIR Befehl auf den Zielpfad ausführen:

exec xp_cmdshell 'dir \\server\share\temp\'


Zugriff verweigert

Wir geben uns die notwendigen Rechte mit

exec xp_cmdshell 'net use \\server\share /user:<user>@<domain> <passwort>'


Der Befehl wurde erfolgreich ausgeführt.

Dann wiederum sollte der oben erwähnte DIR Befehl auch die Dateien in dem Verzeichnis anzeigen.

Volume in Laufwerk \\server\share\temp\: hat keine Bezeichnung.
Volumeseriennummer: 10XX-X58X
NULL
Verzeichnis von \\server\share\temp\
NULL
23.01.2008 10:16 8.423.195 T_TEST.dat
Nun den BULK INSERT ausführen und dieser sollte seine Arbeit mit der gewünschten Meldung quittieren:

(334.714 row(s) affected)

Jetzt noch aufräumen mit

-- Share trennen
exec xp_cmdshell 'net use \\server\share /delete';
-- xp_cmdshell abschalten.
EXEC sp_configure 'xp_cmdshell', 0;
-- Das System aktualisieren.
RECONFIGURE;

Abschließen bleibt noch zu sagen, das diese Variante nur dazu gedacht ist, mal Daten auf die Schnelle zu laden. xp_cmdshell ist „evil“ und sollte nur mit Bedacht genutzt werden. So wie man einen DIR absetzen kann, so kann man auch alle anderen Befehle absetzen !

Zu Risiken und Nebenwirkungen fragen Sie Ihren Administrator ;)

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News

Germanys next Topmodel – ein C# Entwickler ?

Alles wird gemessen, heutzutage. Performance von Aktien, der Ölpreis……. und mein Blutdruck ;)

Bleibt die Frage, wie messe ich einen Programmierer ? Nun, wie immer bei solchen Fragen, ist die Antwort nicht einfach. Viele Eigenschaften sind die Zutaten für einen guten Programmierer:

  • Fachwissen, welches sich stetig erweitern sollte.
  • Erfahrung – mit den Jahren hat man so die ein oder andere Klippe im Programmieren umschifft, das hilft in der Praxis. Fachwissen – zugegeben, nicht unbedingt notwendig, aber wenn es vorhanden ist, dann ist es ziemlich hilfreich.
  • Kreativität: wohl dem, der nicht von Morgens bis Abends Interfaces zwischen einem Legacy Programm und einen Upstream System programmieren muß.
  • Architekturverständnis. Yep, auch das ist sehr hilfreich. Klar gibt es Software Architekten, die auch wirklich sehr hilfreich sind, aber in kleinen Projekten fehlen die vielleicht, und das ‘Schludern’ im Code von heute, wird der Wochenend-Killer in einem oder zwei Jahren ;)
  • ‘PS-auf-die-Straße-bringen’ Eigenschaft, oder das GTD Gen :) , welches letztendlich ein Mix aus den oben genannten Eigenschaften darstellt (siehe gesonderten Blog Beitrag).

Und das GTD Gen kann man messen. Na ja, ‘Kind of’.

Top Coder

Competition ArenaUnter http://www.topcoder.com erreicht man eine Plattform die sozusagen Programmier-Wettbewerbe austrägt. Zugegeben, der Registrierungsprozeß ist etwas uncool, aber es lohnt sich. In der etwas unübersichtlichen Seite von TopCoder verbergen sich diverse Betätigungsfelder. Für Programmierer und auch für Firmen, die Programmierer suchen. TopCoder bietet Wettbewerbe an, in denen Programmierer in einer Art ‘SandBox’ Aufgaben gestellt bekommen, deren Lösung mit Punkten bewertet werden.

Top Coder für Programmierer

Für Programmierer bietet TopCoder eine Plattform um ihr Wissen neutral mit anderen zu messen. Aufgaben aus diversen Bereichen wie Algorithmen, Software Architektur, Design, Development, Assembly Programming aber auch Software Testing stehen zur Auswahl.
Hatte ich erwähnt, das man des Englischen mächtig sein sollte, um bei TopCoder mitzumachen ? Alle Aufgaben, sowie die ganze Plattform sind in der englischen Sprache verfaßt. Aber Hand aufs Herz. In diesem Geschäft, sollte man sowieso gut Englisch sprechen, oder ?Aufgabe und Lösung

Hat man sich einmal angemeldet und sich einen Bereich ausgesucht (z.B. Assembly Development), dann kann man sich Aufgaben aus vergangenen Wettbewerben anschauen. Folgende Programmiersprachen stehen dabei zur Verfügung: Java, C++, C#, VB.net (Python in Vorbereitung).
Es ist nicht notwendig, jedoch sehr empfehlenswert, die Programmiersprache auf dem heimischen Rechner installiert zu haben, um so in der eigenen Entwicklungsumgebung zu coden, und dann das Ergebnis in TopCoder zu kopieren. Man kann auch sofort im TopCoder Fenster coden.

Grundsätzlich gibt es hier 2 Kategorien: Wettbewerbe (Contests) und Trainings (Practise Rooms).

In den Practise Rooms kann man sozusagen abgelaufene Wettbewerbe nachprogrammieren. Dabei werden verschiedene Schwierigkeitsstufen zur Auswahl gestellt. Je nach Schwierigkeitsstufe, kann man unterschiedliche Punktzahlen erreichen. Tipp: erst mal mit einer kleinen Stufe anfangen ;) )

Wettbewerbe starten weltweit zur gleichen Uhrzeit. Dem Teilnehmer wird dann die Problemstellung geschildert und los gehts. In der eigenen Programmierumgebung starten und kompilieren und wenns ohne Fehler läuft, den Source Code per copy & paste ins Top Coder Fenster pasten :) Achtung, jeder fehlerhafte Lauf im Top Coder Fenster kostet am Ende wertvolle Punkte … Am Ende des Wettbewerbs kann man sich so mit anderen Teilnehmern aus der ganzen Welt vergleichen. Da es bekanntlich viele Wege nach Rom gibt, gibt es auch verschiedene Lösungsansätze und selbst Super-Programmierer habe ich ob der Einfachheit und Kürze der anderen Lösungen schon erstaunt und ehrfürchtig gesehen ;)

Top Coder für Firmen

System TestFür Firmen bietet diese Plattform ungeahnte Möglichkeiten. So ist es durchaus denkbar im Rahmen eines Vorstellungsgesprächs einen Bewerber bzw. eine Bewerberin ein Problemfall live in TopCoder programmieren zu lassen. Es ist somit ein neutrales Medium mit neutralen Fällen in einer neutralen Umgebung. So eine Übung dauert vielleicht 20-30 Minuten, aber es zeigt oft, ob neben den sehr guten Zeugnissen auch die Praxis vorhanden ist.

Natürlich sollte solch ein Test nur ein Mosaikstein im Bewerberprofil sein. Aber man kann doch einiges feststellen, da es sich im Allgemeinen in solch einem Gespräch dann um eine Streßsituation handelt. Also, liebe Arbeitgeber, bitte auch berücksichtigen dass in solch einem Umfeld auch Top Programmierer manchmal einen Black-Out haben können ;)

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News

Commodore Kinder

Tage der Kindheit, Limonade und Romantik: und auf dem Fernseher flimmert der vielen so vertraute blaue Startbildschirm des Commodore C=64. Ja, man kann sagen: ich bin ein Commodore Kind. Unbetrübt schaute man sich den Bluescreen an und konnte direkt nach dem Einschalten mit den ersten Programmierversuchen starten. Dass man auch richtiges “Computer Kung Fu” auf dem Commodore konnte, zeigten eindrucksvolle jene Entwickler, die sich in der sog. Demoszene Ruhm und Ehre mit Spezialeffekten verschafften, die für einen kleinen 8-Bit Computer eigentlich technisch undenkbar waren.

Nicht nur, dass er der meistverkaufte Home-Computer aller Zeiten ist, wahrscheinlich ist er auch der am häufigsten emulierte Kleinrechner. Mittlerweile gibt es auch schon eine erste Beta-Version eines C=64 Emulators für Microsoft Silverlight. So bleibt zumindestens auch in der Zukunft nicht vergessen, dass ein blauer Bildschirm einmal eine ganz nette Bedeutung hatte :-)

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News

Internet voll Dinge

Das “Internet der Dinge” war eines der kurzlebigen Meme auf der diesjährigen CeBit.

Und nachdem ich ein wenig darüber sinniert habe muss ich doch auch ein wenig schmunzeln, wenn ich mir vorstelle, dass mein Kühlschrank seinen Inhalt via RSS Feed an den Discounter meines Vertrauens bloggt, damit, falls die Schinkenwurst zu Neige zu gehen droht, auch wirklich welche da ist, wenn ich am Samstag wieder mit meiner ec-Karte bezahle. Oder wie mein Wecker morgens die Kaffeemaschine zum Vorheizen informiert, fahrende Autos auf der Autobahn automatisch einen Stau identifizieren oder mir meine Toilette eine umfassende Ernährungsberatung per E-Mail sendet.

Irgendwann kommt dann bestimmt auch der Tag, wo ich nach Hause komme, alle Herdplatten aktiviert sind, die Heizung auf 45° reguliert ist und die Toilettenspülung dauer aktiviert ist, weil ein Hacker es geschafft hat, das Internet der Dinge nach seinem Gusto umzulenken. Da bekommt der Begriff Firewall eine ganz neue Bedeutung!

Alles in allem gibt es sicherlich sinnvollere Anwendungen für miteinander vernetzte, kleine autarke Module: Logistik im größeren Stil als das private Einkaufen, atmende industrielle Produktionen und andere supply-chain Mechanismen. Ob das Internet der Dinge auf Basis der umstrittenen RFID Chips wirklich auch gesellschaftlich durchdrungen sein wird, steht auf einem anderen Blatt.

Über Sinn und Unsinn hat man sich jedoch auch schon bei den stinkenden pferdelosen Kutschen gestritten. Es bleibt abzuwarten, wie sich Menschen mit der scheinbar kopflos werdenden Technik zurecht finden werden.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News

social networking for free

buddypress, an open source extension to the well known wordpress-µ blogging system, is a rather new social networking software enabling you to run your own little social network. Just for the sake that the world needs a lot of more social networking platforms!

Installing the software was opening the box, customization is just as easy as working with wordpress stylesheets / themes, and the biggest limitations are due to a very uncomforatble right management system which already came with wordpress-µ

Nevertheless, not to forget that buddypress is still in a 1.0 RC version, the most basic elements of “classical” social networking platforms are available in this plugin suite, work fine – and, as from its big brother wordpress, multi user blogging is a real strength in this system.

Now, all what’s still missing is the killer idea for the next social networking platform: is there already one for enthusiasts of twelve-tone music?

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News

Bekommen wir ein Über-Google ?

Irren ist menschlich ;)

Ich muss zugeben, dass ich schon das ein oder andere Mal schief gelegen habe, was neue Technologien anbelangt. Aber ich befinde mich in illustrer Gesellschaft ;) Den absolut durchschlagenden Erfolg des Internets, wurde von Bill Gates am Anfang vollkommen verkannt. Aber wir lernen ja bekannterweise aus Fehlern, oder ?

Also meine Fehleinschätzung hieß Google. Zu Zeiten als die Suchmaschinen noch Yahoo und Altavista hießen, war es mir vollkommen unklar, warum eine weitere Suchmaschine eine Daseinsberechtigung haben sollte. Ich konnte doch schon auf 4-5 Suchmaschinen suchen, warum nun einen Neue ? Nun ja, Google hat sich angesehen, was die Konkurrenz macht und hat es einfach besser gemacht. Schnellere Suchergebnisse, schnellerer Seitenaufbau, weniger Werbung (am Anfang überhaupt keine Werbung).

Kommt der Google Killer?

Und nun ist es wohl wieder soweit. Das Über-Google kommt. Der Google Killer. Zumindest wenn es nach dem Erfinder und Superhirn (promovierte im Alter von 20 Jahren an der Caltech) Stephen Wolfram geht. Wolfram ist kein kleiner in der Software Welt. Als Erfinder von Mathematica hat er schon einmal bewiesen, dass man revolutionäre Software schreiben und vermarkten kann.

Sein neuestes Baby wird Wolfram-Alpha. Eine Suchmaschine, die nicht einfach auf einen Suchbegriff gefundene Webseiten anzeigt, sondern angeblich auf komplexe Suchanfragen in Klarschrift weitreichende Antworten in Form von Content geben kann. So sollen Suchanfragen nicht nur einfach Links zurückgeben, sondern vielmehr die Fragen korrekt beantworten.

Die Idee ist, dass man sich nach absenden der Suchanfrage nicht erst durch X Links lesen muss, um sich die Antwort auf die Frage sozusagen selber zu suchen, nein, Wolfram-Alpha antwortet laut Stephen Wolfram direkt auf die Frage.

So unvorstellbar wie es sich anhört scheint es nicht zu sein. Mit riesigen Datenbanken im Hintergrund und Mathematica als Basis für die Suche, übersetzt Wolfram-Alpha die Suchanfrage in eine mathematische Formel – streng geheim, versteht sich ;) Diese wird abgearbeitet und soll die richtigen Antworten liefern.

Wann geht’s los?

Schon bald. Genau genommen im Mai diesen Jahres. Die Webseite ist schon online, allerdings noch ohne Funktion. Warten wir also ab, ob sich eine neue Aera im Suchmaschinen Geschäft auftut. Ich für meinen Teil werde mir das genau ansehen ;)

Physiker Wolfram: Software-Genie verspricht den Google-Killer – SPIEGEL ONLINE – Nachrichten – Netzwelt.

Blog von Stephen Wolfram

UPDATE:

Mit 1.850 ‘code commits’ und 591 ‘code file changes’ hat Wolfram Alpha seine Plattform stark verbessert. Auf dem Blog von Wolfram Alpha sind folgende Veränderungen betreffend der Code Basis für Wolfram Alpha zu finden:

Today’s update includes the following:

  • Additional linguistic forms for many types of data and questions
  • More comparisons of composite properties (e.g. “US military vs. UK”)
  • Combined time series plots of different quantities (e.g. “germany gdp vs population”)
  • More complete handling of government positions (e.g. “chancellor”, etc.)
  • Updates to country borders for India, China, Slovenia, Croatia, and others
  • Updates to naming for certain politically sensitive countries and regions
  • Additional subcountry regions (e.g. “Wales”); many more to come
  • Additional support for current and past fractional timezones (e.g. “Iran time”)
  • City-by-city handling of U.S. states with multiple timezones
  • Updates to certain European currencies (e.g. for “Cyprus” and “Slovakia”)
  • Some additional historical events; many more to come
  • Additional probability computations for cards and coins (e.g. “2 or 3 aces”)
  • Additional output for partitions of integers (e.g. “partitions of 47″)
  • Implicit handling of geometric figure properties (e.g. “ellipse with area 6 and major axis 2″)
  • Additional support for Mathematica 3D graphics syntax
  • Additional support for stock prices with explicit dates
  • Support for planet-to-planet distances and “nearest planet”, etc.
  • Extra information when comparing incompatible units (e.g. “ergs vs. newtons”)
  • Improved linguistic handling for many foods (e.g. “love apple”)
  • More mountains added, especially in Australia
  • Support for many less-common given names (e.g. “zebulon”)
  • More “self-aware” questions answered (e.g. “how old are you”)
  • More consistent handling of sidebar links to Wikipedia, etc.
Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News