Navicat kann und wird auch in Zukunft leider keine ER-Diagramme erstellen können, zumind. gibt es bisher keine Timeline dafür.

Was ich aber extrem genial finde, ist die Tatsache das es endlich den MS SQL Server unterstützen wird – wenn auch erst im 3-4 Quartal 2010.

Hier mal eine einfache Version mit purem T-SQL zum setzen von DEFAUL-Values eines Feldes.

DECLARE
  @sql AS nvarchar(1000)

--- isActive = 1
IF NOT EXISTS (SELECT * FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = 'sys_User') AND name = 'isActive')
BEGIN
  print 'create field with defaults';
  SET @sql = 'ALTER TABLE sys_User ADD isActive BIT DEFAULT (1) NULL';
  EXEC sp_executesql @sql;
END ELSE
  BEGIN
    IF (SELECT cdefault FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = 'sys_User') AND name = 'isActive') > 0
      BEGIN
        print 'drop contraint';
        SET @sql = 'ALTER TABLE sys_User DROP CONSTRAINT ' +(SELECT name FROM sysobjects WHERE id = (SELECT cdefault FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = 'sys_User') AND name = 'isActive'));
        EXEC sp_executesql @sql;
      END
    print 'add contraint'
    SET @sql = 'ALTER TABLE sys_User ADD CONSTRAINT DF_'+(SELECT REPLACE(NEWID(),'-','_')) +' DEFAULT (1) FOR isActive';
    EXEC sp_executesql @sql;
  END

Das Programmierer sehr wohl fantasievoll sind, zeigt deren Schreibeweise. Ich selbst achte darauf das ich zb. Firmennamen immer so schreibe wie sie sich selbst schreiben.

Beim programmieren ist das leider nicht immer so einfach. Da kommt man dann schnell auf Begriffe wie SCREAMING CASES, was so viel wie GROSSBUCHSTABEN bedeutet. Den meisten Programmierer ist es aber gar nicht bewusst wie sehr eine GrossKleinschreibung den Lesefluss beeinflusst. Mann muss nicht mal die weRksTabeN VeRbuCHseLn um unleserlich zu wirken.

Unter Winddows ist man PascalCase gewohnt, also das schreiben des ersten Buchstabens als Grossbuchstabe und in der javaWelt eher das camelCase, also das Schreiben des ersten Buchstabens in kleinbuchstaben. Schwieriger finde ich dann das Schreiben dann in WIKICASE, was bedeutet das man mind 1 Wortkombination haben muss.

Persönlich finde ich es allerdings wichtiger das man als Programmierer sprechende Variablen schreibt und eben kein i oder so zum loopen nimmt, sondern myCategory oder so und myCategories wenn mehrere Elemente enthalten sind. Allerdings sollte man auch nicht übertreiben und alle Datenbanktabellen mit einem tbl-Prefix versehen oder alle Variabelen mit str als String zu deklarieren etc.

Manchmal praktisch finde ich die zusätzliche Trennung_derWorte_mit_Unterstrich, so kann ich mit ListFunktionen einfach auf bestimmte Teile der Variable zugreifen. Nur kann man solche Variablen in einer URL oft nicht so gut erkennen.

Eigentlich ziemlich hässlich finde ich die benennungvonvariableninreinen Kleinbuchstaben, hat allerdings den Vorteil das sie auch unter Linux immer funktionieren und auch in vielen Frameworks benutzt werden.

Auch im MS-SQL Server kann man alle Meta-Daten einer Tabelle abfragen – bis auf die DefaultValues.

Hier mein Script, was prüft, ob es die benötigten Felder einer Tabelle gibt und diese auch den gewünschten DefaultValue haben.


  
  
  

  
  SELECT * FROM #local.db.table#



  

      
        
        SELECT name FROM SYSOBJECTS
          WHERE id = (SELECT cdefault FROM SYSCOLUMNS
            WHERE id = (SELECT id FROM SYSOBJECTS WHERE name = '#local.db.table#')
        AND name = '#listFirst(local.myField,'=')#')
      
        
        ALTER TABLE #local.db.table# DROP CONSTRAINT #local.getDefaultName.name#
      
    
      
      ALTER TABLE #local.db.table#
        ADD CONSTRAINT DF_#replace(createUUID(),'-','_','all')#
          DEFAULT (#listLast(local.myField,'=')#) FOR #listFirst(local.myField,'=')#
    

  
  
    ALTER TABLE #local.db.table#
      ADD #listFirst(local.myField,'=')# BIT NULL
        CONSTRAINT DF_#replace(createUUID(),'-','_','all')#
          DEFAULT (#listLast(local.myField,'=')#)
  


Sicherheitshalber noch als Download-Link, weil die Anzeige des Quelltexten leider Müll formatiert.

Alles geht in die Wolke und diesmal – sonst eher verschlafen was neue Technologien betrifft – ist sogar Microsoft gleich zu Begin mit im Boot.

Nachdem, glaub Amazon mit dem S3 das Ganze angezettelt hat, gibt es immer mehr Cloud-Firmen wie RackSpace. Und nun eben auch die Produkte von Microsoft, angefangen mit Windows und dem SQL Server. Schauen wir mal wie sich das so weiter entwickelt. Tönt auf jeden Fall sehr spannend.

Die Jungs von PIXELTEX haben sich bereits darauf spezialisiert und wie in einem früheren Blogeintrag erwähnt, auch schon das API für ColdFusion zugänglich gemacht.

Ich finde 3 mySQL-Clients für Mac super. Je nach Anforderung:

1. Sequel Pro
Um einfach und schnell mit Tabellen umgehen zu können. Ausserdem kostenlos.

2. Querious
Wie Sequel Pro, aber mit Import- und Export-Funktionen. So knapp 50CHF.

3. NaviCat
Der Profi unter den mySQL-Clients. Wie Querious plus Backup-Funktionen und erweiterten Import- und Export-Funktionen, sowie einem QueryBuilder. Gibt es auch als kostenlose LITE-Version. Leider wird im NaviCat immer ein neues Fenster/TAB geöffnet, statt in einem Fenster zu bleiben, was das einzige ist das mich stört.

Da ich mich ja immer mehr zu Apple hingezogen fühle, möchte ich mich auch vom MS SQL Server verabschieden. Nach allen Vor- und Nachteilen, bleibt da eigentlich nur noch mySQL übrig.

Diesen Black Friday habe ich zum einkaufen einer SQLyog-Lizenz genutzt – 50% Rabatt. Das Tool nutze ich schon eine Weile in der kostenlosen Community-Edition und hätte sie mir eh gekauft, daher war das eine gute Gelegenheit. Deren Aktion läuft übrigens noch bis 1. Dezember.

Eine super Übersicht der besten Datenbank-Tools hat mir Google gefindet.

OK, die meisten ColdFusion-Entwickler (mind. 90%!) wissen nicht was das ist und benennen ihre Datenbanken, Tabellen und Felder ohne zuvor je in ein DB-Handbuch geschaut zu haben. Hier daher ein Buchtipp für SQL-Dummies und solche die es nicht mehr sein möchten.

Nicht das ich der SQL-Profi wäre, aber ein kleines bisschen SQL-Kenntnisse darf man doch auch als ColdFusion-Entwickler erwarten. Sonst heisst es noch: „SQL ist doof, weil es zu langsam und kompliziert ist“. Wie das ja auch dummies Weise Java-Entwickler von ColdFusion behaupten.

Hier meine BestOFs der Datenbank-Dummies:
– tbl_Tablename (wozu braucht es ein „tbl_“ vor dem Namen?)
– vw_Viewname (und das?)
– Benutzerübersicht (im Tabellennamen Leer- oder Sonderzeichen einsetzen?)
– UserID, UserName, UserPassword etc. (Wenn die Tabelle eh schon User heisst oder fehlt es nur an Ideen)

PS: Ohne Führerschein kann man planlos quer-feld-ein fahren und sich wundern oder gar ärgern das es einen dabei (durch)schüttelt. Mit Führerschein bleibt man bequem auf der Strasse. Setzt natürlich voraus das man sich mit den Strassenverkehrsregeln (DB-Handbuch) auseinandersetzt ;-(

Und ja, dann kann man natürlich nicht mehr „einfach“ diagonal abkürzen. Das ist aber auch nicht schade, sondern für eine geschmeidige (verständliche) Datenbank absolut notwendig! Gerade wenn mehrere Personen daran rumschrauben müssen, aber Disziplin war leider noch nie eine Eigenschaft von ColdFusion-Entwickler.

Um nicht jedes Mal die Autorisierungsfragen von Microsoft durchlaufen zu müssen habe ich in meinem Download-Verzeichnis den akt. JDBC-Treiber für den SQL Server 2008 abgelegt.

Noch arbeite ich weiterhin auf meiner Windows Vista Ultimate 64bit, daher möchte ich den SQL Server installieren. Mal schauen wie ich das dann auf dem Mac machen werde.

Um den SQL Server 2008 also installieren zu können sind fast immer (soweit nicht schon vorhanden) 2 Dateien/Installationen zuerst notwendig:

1. Windows Installer 4.5

2. Microsofts .NET Framework 3.5

3. http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx“>Windows Power Shell

4. SQL Server 2008 Express Adv

Bei einer Installation auf einem nackten Rechner, braucht man also erst gar nicht versuchen einfach den SQL Server zu installieren, sondern kann gleich Punkt 1, 2 und 3 zuerst installieren.

Evtl. dachte sich Microsoft ja, dass ein Datenbankadministrator keine Änderungen an seinen Tabellen machen möchte. Oder ist das wieder einer dieser angeblichen „Sicherheitsfeatures“ die kein Mensch braucht und nur bei der Arbeit hinderlich sind?!

Um ein Feld in einer Tabelle hinzufügen zu können, muss man erst im Managementstudio den Punkt Speichern von Änderungen verhindern, die die Neuerstellung der Tabelle erfordern deaktivieren. Macht ja auch Sinn, oder? :-(

SQL-Management-Studio -> Extras -> Optionen -> Designer -> Tabellen- und Datenbank-Designer -> Tabellenoptionen

Den SQL Server gibt es nun auch in einer compact-Version.

Früher hiess das Teil glaub irgendwie anders.
Anyway…so kann ich in Zukunft meine Blogeinträge auf dem PDA schreiben und dann einfach nur abgleichen. Tönt noch lässig.

Endlich geht der SQL Server 2008 in Produktion, denn meine CT-Version läuft bald ab.

Das (einzig) beste beim SQL Server 2008 finde ich den Tag-Insight, beim schreiben der SQL-Statements.

Jaah!!!

Trotz wiedriger Umstände, in dem Microsoft wieder mal Inkompatibilität zeigte, ist es mir (mit Unterstützung vom Expert-Exchange) gelungen, meine Daten der Landstrasse aufzusammeln.

Vom der Version 2000 über 2005 bis hin zur Version 2008 ist der SQL-Server von Microsoft fast gar nicht kompatibel, aber zum Glück gibt es das Internet.
Meine Daten sind also gerettet und müssen nun „nur“ noch in die neue BlogEngine Mango Blog übertragen werden.

Schon mal versucht ntext-Felder aus dem SQL-Server zu lesen?

Das erste cfQuery-Select liefert den Inhalt des Feldes body NICHT, das zweite liefert alle Ergebnisse inkl. dem Feld body (ntext), aber warum?


  SELECT TOP 10 Title,Alias,posted,views,body,id FROM tblBlogEntries


  SELECT TOP 10 Title,Alias,posted,views,id,body FROM tblBlogEntries

Die Lösung: Das oder die Felder die vom SQL-Type nText sind müssen am Ende einer Select-Anweisung stehen. Warum? Weil das Microsoft zwar weiss, aber denen egal ist und Adobe schon sowieso.

Tja, nu isse leer … die Datenbank!

Bei der Migration von SQL Server 2000 auf SQL Server 2008 erfolgreich platt gemacht.

Also tun wir mal so als wenn nichts gewesen wäre und machen einfach weiter.
Die Datenrettung werde ich dann die Tage/Wochen mal in Angriff nehmen, zumal ich ja gezügelt bin (wie der eine oder andere Bügelbrettteilnehmer ja weiss) hält sich daher meine freie Zeit in Grenzen.

It’s not a Bug it’s a Feature: Bei der Gelegenheit steige ich von BlogCFC auf Mango Blog um, da es ein besseres Skin-Handling hat.