blog.atwork.at

news and infos about microsoft, technology, cloud and more

CSAD - CSS SQL Azure Diagnostics Tool

Frisch für alle SQL Azure Anwender: Im Blog mit dem unglaublich kurzen Namen “Official team Web Log for Microsoft Customer Service and Support (CSS) SQL Support”  (ok, die Kurzform ist CSS SQL Server Engineers) wurde ein neues Tool veröffentlicht, das CSS SQL Azure Diagnostics tool. Auch dafür gibt es – Microsoft-konform – eine Abkürzung: CSAD Evan Basalik hat die Applikation CSAD entwickelt - da die Tools PSSDiag und SQLDiag gegen SQL Azure nicht funktionieren - um rasch eine Zusammenfassung der wesentlichen Daten einer SQL-Datenbank als Report zu erhalten – vor allem zum Troubleshooting von SQL Azure Performance-Problemen. CSAD liest ALLE Information aus den public Dynamic Management Views (DMVs) (diese funktionieren grundsätzlich genauso gegen einen lokalen SQL Server). Der direkte Download von CSAD (CSS SQL Azure Diagnostics) ist hier zu finden http://csssqlazure.blob.core.windows.net/csssqlazuredeploy/publish.htm. CSAD prüft automatisch beim Starten gegen den BLOB-Storage, ob eine neue Version vorliegt. Ich musste dieses Tool natürlich gleich testen – funktioniert auf Anhieb, hier mein Beispiel: Mein Report umfasst 4 Seiten. Das Tool zeigt : Top 10 CPU consumers (queries that are consuming the most CPU) Top 10 Durations (longest running queries) Top 10 Logical I/O (logical I/O consuming queries) Top 10 Physical I/O (physical I/O consuming queries) Sehr fein ist auch der integrierte Export nach Excel, PDF und Word. SQL Azure Benutzer: Anschauen & Ausprobieren!

System Center Virtual Machine Manager 2012 Beta

Ganz frisch ist die Evaluation Version System Center Virtual Machine Manager 2012 Beta im Microsoft Download Center zu laden. SCVMM 2012 dient zur Verwaltung von Hyper-V Maschinen und hat in der Version 2012 (Beta) einige neue Funktionen von Hyper-V Cluster bis zu Resource Optimization, LoadBalancer, Private Cloud Management und Service Lifecycle Management hinzu bekommen. Besonders die “Private Cloud” Verwaltung finde ich bemerkenswert und top-aktuell! In Marketing Schreibweise heißt das so: “System Center Virtual Machine Manager 2012 delivers industry leading fabric managment, virtual machine management and services deployment in private cloud environments.” Download System Center Virtual Machine Manager 2012 Beta Der Download ist etwa 800MB klein. Zum Download ist nur einmalige Registrierung mit Windows Live-ID erforderlich. Viel Spaß beim Testen von System Center Virtual Machine Manager 2012 Beta – Evaluation!

Microsoft Atlanta wird zu System Center Advisor

Nach dem angekündigten Update von Microsoft Atlanta (siehe SQL going to the cloud, äh to Atlanta) präsentiert sich das Online-Tool im Status “Beta” nun als neue Marke “System Center Advisor” und ist liegt jetzt schon in der Version “Release Candidate” vor. Die neue URL lautet www.systemcenteradvisor.com. Was ist neu? Nun, eine ganze Menge! System Center Advisor kann jetzt neben SQL Server Instanzen auch Windows Server 2008 Maschinen, Hyper-V Hosts und Active Directory analysieren und überwachen! Morgen wird übrigens Windows InTune veröffentlicht, welches die Überwachung von Client-Maschinen in der Cloud ermöglicht – übrigens auch ein Tipp für alle Big>Days 2011 Teilnehmer: InTune ansehen! System Center Advisor kann also als (eine von vielen) Ergänzung für die Windows Server Maschinen gesehen werden. Neu ist auch der Multi-User Support: Verschiedene Windows Live Konten können zu einem Firmen-Konto zugeordnet werden und es gibt nun E-Mail Notifikationen (das haben wir ja schon beim letzten Mal hier bemerkt), um wöchentliche E-Mails mit Zusammenfassungen des Health Status und Warnungen mitzubekommen. Das Bearbeiten von Warnung wurde verbessert: “Advisor now detects when you have addressed the issue that generated an alert and automatically resolves the associated alert.” Letztlich unterstützt System Center Advisor jetzt auch SQL Server Clustering und informiert über Aktiv-Passiv Rollenwechsel. Eine Liste aller Neuerungen finden Sie hier: What's New in This Release of System Center Advisor? Für alle Beta-Tester: Bestehende Atlanta Konten bleiben bestehen und sind funktionell. Die Agents auf den überwachten Servern müssen allerdings – ob der neuen Datensammlungsfunktionen - neu installiert werden. Upgrade from a Pre-Release Version of System Center Advisor informiert über den Prozess eines Upgrades. Ich freue mich über das neue Online Tool in der Cloud, das mir helfen wird, meine Windows Server 2008 und meine Hyper-V Instanzen und Workloads zu überwachen! Wir werden jetzt einmal unsere bestehende Maschinen mit den Beta-Agents aktualisieren um Ihnen bald einen Praxisbericht hier zu veröffentlichen!

IE9 RTM kommt am 15. März

Es ist soweit! Wie das Windows Team Blog verkündet, wird der nigel-nagel-neue Internet Explorer 9 am 14. März (USA Pacific Time um 21h) veröffentlicht! A More Beautiful Web Launches on March 14th Zwölf Monate nach der ersten Platform Preview Version (bei mix10, was ich live miterleben durfte) erblickt IE9 also das Tageslicht - bei uns am 15. März um 6h Früh, da ist es mittlerweile gerade hell, in den USA ist es noch Abend – und die Launch-Party wird nach der Pressemitteilung starten. Viele der neuen Funktionen konnten bereits in der Vorgänger-Versionen getestet werden (siehe IE9 News). Meine persönlichen IE9-Highlights sind vor allem die Schnelligkeit, HTML5 sowie die vielen kleinen Verbesserungen wie Neue Tabs, Pinned Sites, neuer Developer-Modus, Tracking Protection Lists, und da gibt es noch ein paar weitere… Für alle, die zum Thema IE9 topaktuell informiert werden wollen: Siehe www.beautyoftheweb.com und folgen Sie dem IE-Team auf Twitter: www.twitter.com/ie! Ich freu mich schon auf den neuen IE9. Viel Spaß und sicheres Surfen mit IE9!

Wenn in SQL Server sogar bei varchar(max) bei 8000 Zeichen Schluss ist…

Microsofts SQL Server ist fast in jedem Microsoft (Server) Produkt drin. Und auch mein Lieblings-Produkt. So habe ich im Laufe meines Berufslebens bereits von SQL Server 6.5 bis hin zum aktuellen SQL Server 2008 R2 viel Datenbank-Wartung durchgeführt und viele Lösungen entwickelt. Hierbei lernt man viel – und auch viele Stolpersteine! So hatte ich vor kurzem die Anforderung, eine Reihe von SQL Server Reports neu zu generieren. Dazu habe ich mal vor einigen Jahren ein kleines Tool geschrieben, das eine XML Datei durchläuft und alle dort enthaltenen Reports mit bestimmten Parametern als PDF File persistiert – das soll weiterverwendet werden. Nun haben sich die Reports und deren Parameter geändert und eigentlich muss ich zum Neuaufruf nur das reports.xml File neu erstellen und das Tool (sozusagen per Knopfdruck) starten und alles sollte erledigt sein. Soweit so gut, das war die Vorgeschichte. Zum Generieren des neuen XML-Files verwende ich eine einfaches, zusammengebautes Script (das ich mir zum Glück aus dem Vorjahr gemerkt habe) direkt im SQL Server 2008 R2 SQL Management Studio. Dieses durchläuft eine gejointe Tabelle und schreibt den Output in eine Textvariable @x. Das ganze Script sieht vereinfacht etwa so aus: declare @x varchar(max) set @x = '<?xml version="1.0" encoding="ISO-8859-1"?>' + char(13) + char(10) + '<reports>' + char(13) + char(10) SELECT @x = @x + '<report>' + char(13)+char(10)+ '<name>/app/betrieb</name>' + char(13)+char(10)+ '<param>format=PDF|id=' + convert(varchar,BET_ID) + '</param>' + char(13) + char(10)+ '<path>C:\temp\betrieb_'+ right('00' + convert(varchar,(ROW_NUMBER() OVER (ORDER BY Name1))),2) + '.pdf</path>' + char(13) + char(10)+ '</report>' + char(13) + char(10) FROM Betriebe LEFT OUTER JOIN Bundeslaender ON BET_BDL_ID = Bundeslaender.BDL_ID WHERE (BetriebActive = 1) ORDER BY Bundesland, Name1 set @x = @x + '</reports>' + char(13)+char(10) print @x Der so erzeugte Text in @x wird dann einfach aus dem SQL Management Studio ausgeführt (F5) und ausgegeben, für jede Tabellenzeile (bei mir etwa 30 Reports) wird ein Abschnitt “<report>” erstellt, etwa so: Der Text in Messages wird dann per Zwischenablage in ein Textfile kopiert – bzw. wird die Ausgabe direkt in ein File geschrieben “Results to File”: Funktioniert … fast!  Der Output wird irgendwo abgeschnitten! Moment mal, unsere Variable @x ist doch vom Typ varchar(max)! Damit sind doch theoretisch bis zu 2GB Zeicheninhalt möglich. Also mal nachsehen, wie lange @x tatsächlich ist: print len(@x) ergibt sportliche 10655 Zeichen. Die Variable beinhaltet also den tatsächlichen Inhalt – nur wird der abgeschnitten… eine leise Vorahnung (eigentlich ein Rückblick) kommt auf... Seit SQL Server 2005 gibt es die Aufhebung der 8000-Zeichen Grenze bei Texten vom Datentyp Zeichen: Konkret war bis SQL Server 2000 aufgrund der internen Data Page-Größen bei 4000 Zeichen für nvarchar und bei 8000 Zeichen bei varchar Schluss. Nun kann stattdessen varchar(MAX) bis 2^31-1 Bytes (also fast 2GB) verwendet werden. Damit können ab SQL 2005 auch Zeichenkettenoperationen mit längeren Texten durchgeführt werden - ohne mühsame Workarounds mit Konvertierungsfunktionen und Datentyp TEXT. Die Ursache für das Abschneiden ist also das PRINT Statement. PRINT schneidet bei 8000 Zeichen ab! Print ist ja sehr praktisch. Nur hat Microsoft anscheinend vergessen, die neuen Grenzen ab SQL Server 2005 nachzuziehen? Natürlich dachte ich zuerst an die Optionen im SQL Management Studio, wo die Limits der Ausgabe eingestellt werden kann. Aber nein, das ist es nicht. Und ich könnte natürlich Zwischenschritte einlegen oder das Problem anders lösen … aber nur weil Print die Ausgabe abschneidet alles umstellen?? Aber es gibt eine einfache Abhilfe: In diesem Blog-Artikel von Falafel Software von Adam Anderson wird eine kleine Stored Procedure “LongPrint” in nur insgesamt 26 Zeilen erstellt, welche einen langen String auf mehrere Teile á 4000 Zeichen vom Typ nvarchar aufteilt und schrittweise ausgibt: T-SQL: Exceeding the 8000 Byte Limit of the PRINT Statement Zur Anzeige des ganzen Scripts folgen Sie einfach dem Link oder klicken Sie auf dieses Bild: Eine einfache Lösung: 1. Einmaliges Ausführen des LongPrint() Scripts in der eigenen Datenbank und danach 2. statt im eigenen Script PRINT @x zu verwenden, einfach exec LongPrint @x angeben. So klappts mit langen Strings mit mehr als 8000 (bzw. 4000) Zeichen – ohne dass die bestehende Funktionalität umgebaut werden muss! Ein netter, kleiner Workaround bis sich Microsoft hoffentlich diesem Problem annimmt und das Limit von PRINT - vielleicht mit der nächsten SQL Server Version “Denali” (2012?) - behebt.

Lync Server 2010 Best Practices Analyzer

Für alle, die sich für den neuen Microsoft Lync Server interessieren, ist der nagelneue Lync Server 2010 Best Practices Analyzer eine Empfehlung wert. Wozu dient das Tool? Die Antwort in einem Satz zusammengefasst lautet: Lync Server 2010 Best Practices Analyzer hilft Administratoren den Gesamtstatus ihrer Lync-Umgebung zu sehen. “The Microsoft Lync Server 2010, Best Practices Analyzer is designed for administrators who want to determine the overall health of their Lync Server environment.” Lync Server 2010 Best Practices Analyzer ist im Microsoft Download Center herunterladbar. Das Tool sammelt Informationen der Konfiguration von Lync Server 2010 Komponenten wie Active Directory Domain Services, Exchange Server Unified Messaging und Lync Server 2010 selbst. Somit können Probleme erkannt werden und Performance Checks durchgeführt sowie die Konfiguration mit einer Best Practise verglichen werden. Ebenso werden erforderliche Updates und empfohlene Lösungen angezeigt. Für alle Lync-Admins ist Lync Server 2010 Best Practices Analyzer also ein Must Have. Für alle anderen: Microsoft Office 365 nutzen.

Microsoft Codename Atlanta – SQL Monitoring Teil Drei

Nach “Microsoft Codename Atlanta – SQL Monitoring Teil Zwei” folgt Teil Drei. Zuvor wurde Atlanta eingerichtet (Teil 1) und eine SQL Server 2008 Maschine mit Atlanta verbunden – sprich auf jeder zu überwachenden SQL Maschine ein Agent (und ein Gateway – für alle Agents) für das Cloud Service installiert. Jetzt geht es um Bedienung und Betrieb. Die Oberfläche Microsoft Atlanta ist mit der konfigurierten Live-ID via https://beta.microsoftatlanta.com/ aufrufbar und präsentiert sich nach der Anmeldung so: Die Navigationsleiste links zeigt die Übersicht, hier die Darstellung und Kurzbeschreibung der einzelnen Menüs: Alerts: Anzeige von gemeldeten Alarmen. Configuration - Current Snapshot: Anzeige der überwachten SQL Server mit ihren Eigenschaften. Configuration - Change History: Anzeige von historischen gesammelten Daten der überwachten Computer. Servers: Anzeige und Verwaltung der verbundenen Gateways und Agents. Account – Anzeige und Verwaltung des angemeldeten, verbundenen Live-Kontos. Hinweis:  Wenn der Button “Copy to Clipboard” sichtbar ist: Dieser dient dazu (da ja eine Silverlight Applikation) die aktuell markierte Zeile (mit Tabulatoren getrennt) in die Zwischenablage zu kopieren, z.B.: Change Date    Server    Path    Class    Property    Update Value    Previous Value    28.12.2010 19:35:48    Minni3.atwork.local    /    Windows Computer    IPAddress        <no value>    Soviel zur Übersicht – noch recht überschaubar. Der Betrieb Atlanta sammelt Daten von den verbunden SQL Server 2008 Maschinen. Das kann nach der Installation einige Zeit (Stunden) dauern. Keine Sorge, wenn Sie nach der Installation die installierten Agents und Gateways sehen, dann klappt die Kommunikation und man muss nur ein bisschen warten… Die Configuration ist interessant – zeigt sie doch die Einstellungen der Windows Maschine und der einzelnen Datenbanken an, so zum Beispiel das Recovery Model, den Compatibility Level und weitere Datenbank-Eigenschaften, wie hier von der Master-Datenbank: Die Configuration History lässt nachverfolgen, wann was auf der Datenbank-Maschine passiert ist, hier wurde zum Beispiel die Datenbank AtlantaTest angelegt – und alles mitprotokolliert. Es gibt keine weiteren Details (Anklicken markiert nur die Zeile, Rechtsklick bringt das bekannte Silverlight-Menü), alle Informationen sind in einzelnen Datenzeilen verfügbar. Hier erweist sich die Suche (rechts oben) als praktische Funktion um ganz bestimmte Informationen zu finden. Der Wert von Atlanta Neben der Konfiguration zeigt Microsoft Atlanta den Mehrwert in den Alerts. Hier werden Warnungen und Empfehlungen mit Details angezeigt: Zum Beispiel KB-Updates oder anstehende Datenbank-Wartungen wie fehlende Backups, Konsistenzchecks und Ähnliches. Atlanta geht nicht soweit wie beispielsweise der SQL Database Tuning Advisor oder SQL Server 2008 R2 Best Practice Analyzer, sondern bezieht sich mehr auf die Datenbanken selbst und deren reibungsglosen Betrieb. Hier einige Alerts: Eine (neue) Datebank wurde noch nie gebackupt. Für den reibungslosen Betrieb der TempDB Datenbank sollte KB960770 eingespielt werden. In der Datenbank sollte CHECKDB ausgeführt werden… Was sehr praktisch ist: Der Tab “Solution” weist auch gleich auf die Lösung hin, in diesem letzten Beispiel ein Link zu http://support.microsoft.com/kb/2033590. Es werden keine Alerts versendet – das wäre bei der durchschnittlichen, zu erwartenden Menge an Meldungen wohl auch etwas viel. Der Admin muss also Atlanta aufrufen und die Warnungen durchsehen und entscheiden, welche davon bearbeitet werden und welche nicht. Gelöste Alerts werden in Zukunft einfach nicht mehr angezeigt, also sehr simpel. Fazit Atlanta ist ein übersichtliches, einfaches Tool um mehrere SQL Server 2008 zu überwachen. Vorsorge und optimales Tuning sind immer besser als nachträgliches Suchen und Beheben von Problemen, genau das ist der Zweck von Atlanta. IT-und Datenbank-Administratoren erhalten damit ein Hilfsmittel “in the cloud” zur Wartung von Microsoft SQL Datenbank-Servern. Derzeit ist Atlanta eine Beta-Version. Es werden wohl noch einige weitere Funktionen und Verbesserungen hinzukommen. Wenn es soweit ist, werden wir wieder darüber berichten. Bis dahin: Viel Spaß beim Ausprobieren des neuen SQL Monitorings mit Atlanta Cloud Services!

Microsoft Codename Atlanta – SQL Monitoring Teil Zwei

Wie Martina bereits in ”SQL going to the cloud, äh to Atlanta“ gebloggt hat folgt hier nun Praxis Teil Zwei. Zur Erinnerung an den hübschen Codenamen: Was kann “Atlanta”? Das beschreibt am besten dieser Satz: "Microsoft Atlanta is a secure configuration monitoring cloud service that helps customers reduce downtime and improve the performance of Microsoft SQL Server deployments." Sprich: Überwachung von SQL Diensten in der Cloud. Der aktuelle Status ist Beta, bin auch schon gespannt wie der Release-Name sein wird, ob der Dienst in Office 365 oder Windows Intune einfließen wird… Hier finden Sie übrigens die Atlanta System Requirements – nichts “Besonderes” (Windows 2008, SQL Server 2008, aktueller Browser, Silverlight…), aber vor der Installation prüfen! Nachdem https://www.microsoftatlanta.com/ aufgerufen wurde und mit dem eigenen Live-Konto verknüpft wurde (Teil 1), folgt die Installation von Atlanta (CTP) auf einem zu überwachenden SQL Server 2008. Nebenbei: Es sieht so aus, dass nur EIN Live Konto hinterlegt werden kann – frei nach dem Motto: Es kann nur EINEN (Administrator) geben. Tatsächlich kann es aber MEHRERE Admins geben. Die Anleitung dazu findet sich hier: Multiple user access Zur Fortsetzung: Nach Anmeldung ist unsere hübsche Silverlight-Console offen. Jetzt müssen die Clients mit Atlanta-Diensten versehen werden: Das Klicken auf “hier” (wie auch das Hinzufügen von neuen Servern “Add Server…” in der Oberfläche) bringt diesen (bereits bekannten) Dialog. So funktioniert es also: Man benötigt mindestens EIN Gateway mit Verbindung zum Internet (zum Senden der Daten an das Cloud-Service). Es können mehrere Agents über ein Gateway senden. Clever. Nun werden die erforderlichen beiden Files heruntergeladen (und auf einen Netzwerk-Share kopiert). Danach wird auf der SQL-Server 2008 Maschine “AtlantaSetup.exe” gestartet: Es folgt ein Consolen-Setup mit Auswahl, ob Agent, Gateway oder Beide Komponenten auf der Maschine installiert werden sollen (das wird dann später in der Release wohl ein grafisches Setup sein): Also installieren wir mal “3. Both”: Tja, “3. Both” funktioniert bei mir leider nicht: “Error code is 1.” Die Ursache dafür: Auf meiner SQL Maschine klappt die Installation des Atlanta-Agents nicht … weil dieser Produktiv-SQL Server mit dem DPM Agent gesichert wird – der DPM Agent verträgt sich NICHT mit Atlanta Beta Agent! Siehe hier: Microsoft Codename Atlanta Release Notes …Because of this, Atlanta is not compatible with the Operations Manager 2007 SP1 agent, which is down-level. When you install an Atlanta agent on the same computer as an Operations Manager 2007 SP1 agent, Atlanta attempts to upgrade the existing agent to the new version. However, this attempt will fail and the Atlanta agent will not work. Ok, die Recherche war es wert, eine wichtige Information! Also testen wir das mal mit einer ANDEREN SQL Server 2008 R2 Maschine (ohne DPM Agent) nochmals und versuchen hier “3. Both”…. Schaut besser aus, das grafische Setup wird gestartet: Nach Akzeptieren der Lizenzvereinbarung wird das heruntergeladene Zertifikat angegeben und Next: …bis das Setup fertig ist (Finish), Das Fenster schließt sich, das Command Prompt zeigt den Erfolg an: Fein, refreshen wir mal die Web-Anwendung. Links in der Silverlight-Anwendung auf das Icon “Servers” zeigt das Ergebnis: Die neue SQL Maschine; insgesamt: “1 agents, 1 gateway”: Achja: Der Agent funktioniert auch mit SQL Server 2008 Express – das ist meine Testmaschine für obiges Szenario! So, was zeigt Atlanta? Schauen wir mal in die Configuration: Diese zeigt Informationen über den gewählten SQL Server: Fein, das Reporting der Installation hat mal geklappt. Jetzt müssen nur noch Daten gesammelt werden… Hier einige wichtige Links zu Atlanta: https://www.microsoftatlanta.com/ – Die Atlanta Web-Oberfläche. Microsoft Codename Atlanta – Die Website zum Produkt. SQL going to the cloud, äh to Atlanta  - Teil 1: Die Anmeldung Mehr zur Installation von Agents and Gateways. Varun Dhawan's Blog: Microsoft Codename Atlanta: How to get in there… Multiple user access – How To von Sachin Agrawal (Microsoft) Microsoft Project Atlanta Discussions – das Forum. Mehr zum Betrieb dann in Teil Drei!

Hidden features in IE9 #tee10

IE9 ist cool. Nicht nur wegen Geschwindigkeit und HTML5-Unterstützung sondern auch wegen einer Reihe von neuen, coolen Funktionen – für Anwender und vor allem für Web-Developer. Einige davon hat Giorgio Sardo, Sr. Technical Evangelist bei Microsoft, auf der TechEd 2010 verraten. Also: Nicht weitersagen! Einige Funktionen sind ganz neu - Holen Sie sich die letzte IE9 Platform Preview von www.ietestdrive.com! Neu in IE9 sind die “New Tabs” (STRG+T). Wie kann man einstellen, wie viele zuvor besuchten Websites IE9 präsentiert, wenn man eine neue Website mit “New Tab” öffnet? Standardmäßig werden zwei Zeilen mit den am stärksten besuchten Seiten angezeigt. Ich finde diese Funktion sehr praktisch, denn beim Öffnen einer neuen Registerkarte will man im Regelfall ja … eine neue oder bestehende Seite öffnen. Das Anpassen funktioniert recht einfach: Starten Sie den RegistrierungsEditor regedit.exe und erstellen Sie in HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TabbedBrowsing\NewTabPage einen neuen Key vom Type DWORD mit Namen “NumRows” und dem Wert “4” (Hex oder Dez.) - wie hier: Danach IE9 schließen, neu starten und ausprobieren: Voila, 4 Zeilen mit den meist besuchten Websites. Fesch, oder? (Fast) ganz neu: Die Developer Tools (F12). Im Menü “Extras/Zeichenfolge des Benutzer-Agents ändern” (Change user agent string) kann das Rendering auf andere Browser umgeschalten werden, z.B. auf einen “Benutzerdefinierten” Typ mit Einstellungen fürsMobile Phones od. ähnliche Browserkennungen – Cool für Web Developer! Testen wir mal mit bing.com: Heute wieder mal mit besonders hübschem (Urlaubs) Foto. (Woher weiß bing, dass ich auf Urlaub fahren möchte…?) Stellen wir mal den User Agent auf Benutzerdefiniert: Und tragen diese Zeichenfolge ein: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3 Und sehen uns bing.com erneut an (Refresh mit F5): Hat funktioniert: So sieht bing.com also am iPhone aus. ;-) Sehr hilfreich finde ich auch die Bild-Informationen. In Developer Tools, Menü “Bilder/Bildabmessungen … anzeigen” aktivieren – zeigt die Größe aller Bilder in der Webseite, auch die Alt-Tag-Info, Bildpfad und Bildgröße: So wird dann die  Bild-Information in jedem Bild eingeblendet: Gerade für unvollständige Bildinformationen ist das für Developer sehr hilfreich, ebenso auch der Bildbericht (der hat bei mir aber nicht funktioniert, ich nehme an, daran wird noch gearbeitet…). Im Developer Menu File kann auch ein alternativer Texteditor, wie z.B. Visual Studio, eingestellt werden um den Seitenquelltext darzustellen: Jetzt zu einem sehr coolen Feature: Javascript. Die nun beschriebene Funktion ist jedoch erst im letzten IE9 Preview 7 enthalten (die vorigen Funktionen sind bereits in IE9 Beta integriert): Man nehme eine Website wie z.B. Facebook . Ich will mir den Seitenquellcode ansehen – also F12. Hier nun auf Skript: Alle in der aktuellen Seite eingebetteten Javascripts werden in einer eigenen Dropdown angezeigt. Hm. Der Javascript-Code ist für optimale Ladezeiten optimiert. Gut fürs Web – aber für einen Entwickler kaum lesbar. Dafür gibt es in den Tools die Funktion “Format Javascript”: Besser: ;-) Aus optimiertem JS-Code wird gut lesbarer Code. Oder - wie man heutzutage Zustimmung zeigt: “Gefällt mir”. Fazit: In IE9 gibt es - gerade für Web Developer – viel zu entdecken. Starten Sie Ihre eigene Entdeckungstour! Viel Spaß!

XING Social Connector für Outlook erschienen

Verwenden Sie XING? Wenn ja, dann sehen Sie sich den nagelneuen XING Social Connector für Outlook an und nutzen Sie alle Vorteile des XING Business-Netzwerks direkt in Microsoft Outlook. So berichtet auch das “Das Microsoft Deutschland Blog zu Office 2010” über das PlugIn: XING Social Connector für Outlook erschienen Das PlugIn funktioniert mit Outlook 2003, 2007 und 2010 (x86). Der XING Connector ist hier downloadbar: outlook.xing.com Zuerst muss bei Verwendung von Outlook 2003 und 2007 der Outlook Social Connector (OCS; Link ebenfalls auf der XING Download-Seite oder hier) installiert werden, danach der XING Connector. Outlook 2010 installiert OCS automatisch. Viel Spaß beim Netzwerken!

Tabellen in SQL Server vergleichen – Tablediff.exe

Arbeiten Sie viel mit SQL-Datenbanken? Dann kennen Sie (oder hatten Sie) sicher die Anforderung, Daten aus einer Datenbank (gescriptet) in eine andere Datenbank zu transferieren und dabei nur die Änderungen zu übertragen. Das lässt sich mit mehreren Methoden bewerkstelligen, je nach Anforderung, Know How und technischer Umgebung – vom SSIS Import-Tool über selbst scripten bis hin zu kostenpflichtigen Tools und Backup und Restore oder DB-Mirroring (dazu später mal mehr in einem eigenen Artikel). Ich hatte vor kurzem einen solchen Fall. Die Quell-Datenbank ist viele GB groß und es sollten nur Inhalte aus einer Tabelle in eine andere Test-Datenbank übertragen werden. In der Quell-Tabelle wurden Datensätze aktualisiert, gelöscht und hinzugefügt. In der Ziel-Tabelle in einer zweiten Datenbank sind manche Datensätze bereits vorhanden und sollen durch die Quell-Tabelle aktualisiert werden. Und das Ganze Aktualisieren (weils ja eine Testdatenbank ist, die sich immer wieder ändert) soll oftmals durchgeführt werden können. Also am besten irgendwie scripten… Fesch. Wie sag ichs meinem Computer – sprich SQL Server? Genau dafür gibt es seit SQL Server 2005 ein kleines Kommandozeilen-Tool – das allerdings wenig bekannt (wie das mit vielen Command Line-Tools so der Fall ist) und sehr praktisch ist: TableDiff “The tablediff utility is used to compare the data in two tables for non-convergence, and is particularly useful for troubleshooting non-convergence in a replication topology.” Das klingt mal interessant. Und TableDiff macht auch genau das: Es vergleicht Tabellen und kann auch ein Script mit den Unterschieden der Tabelleninhalte erstellen um die Änderungen auf einem Zielsystem sofort ausführen zu können. Es “synchronisiert” allerdings nicht die Unterschiede aus beiden Tabellen, sondern nur in eine Richtung – wie in der Grafik oben. In meiner Anforderung ist TableDiff super-fein, denn das kleine Script (im Vergleich zur mehreren GB großen Datenbank) kann auch sehr rasch erzeugt und auf das Zielsystem transportiert und ausgeführt werden, ohne irgendwelche erforderlichen Verbindungen oder Konfigurationen – also “straight forward”. Also, wo findet man TableDiff.exe? Bei SQL Server 2008 hier: C:\Program Files\Microsoft SQL Server\100\COM Der Pfad zu TableDiff.exe in SQL Server 2005 lautet übrigens “Program Files\Microsoft SQL Server\90\COM”. Wie funktioniert es und wie sieht der Aufruf aus? tablediff.exe -sourceserver server1 -sourcedatabase db1 -sourcetable table1 -destinationserver server1 -destinationdatabase db2 -destinationtable table2 Hinweis: Um explizite Credentials zum SQL Server anzugeben sind diese Parameter erforderlich: -sourceuser <SourceLogin> -sourcepassword <SourcePassword> bzw. -destinationuser <DestinationLogin> -destinationpassword <DestinationPassword> Hinweis: “To compare tables, you need SELECT ALL permissions on the table objects being compared.” und “..To use the -et option, you must be a member of the db_owner fixed database role…” D.h. am besten einen dbowner o.ä. für das Tool verwenden, dann gibts keinerlei Einschränkungen. Wenn die beiden Tabellen-Schemata nicht übereinstimmen, folgt ein Hinweis: Table [db1].[dbo].[table1] on SERVER1 and Table [db2].[dbo].[table2] on SERVER1 have different schemas and cannot be compared. Eine weitere Voraussetzung: Die Tabellen müssen eine eindeutige ID-Spalte besitzen: The replication table difference tool requires the comparison tables/views to have either a primary key, identity, rowguid or unique key column. So, nun zu meinem Fall-Beispiel: Ich habe auf der SQL-Maschine “DAISY” zwei Datenbanken “db1” und “db2” und hier jeweils eine Tabelle “WEB_Node”. Die Änderungen (Inhalte) von “WEB_Node” sollen aus “db1” in “db2” transportiert werden – hier sind Webinhalte gespeichert, die in die Testdatenbank transferiert werden sollen. So sieht mein kleines Script C:\Temp\SQL\doit.cmd aus: cd "C:\Program Files\Microsoft SQL Server\100\COM" tablediff -sourceserver "DAISY" -sourcedatabase "db1" -sourcetable "WEB_Node" -destinationserver "DAISY" -destinationdatabase "db2" -destinationtable "WEB_Node" -et Diff -f C:\Temp\SQL\diff.sql pause Damit wir auch sehen, WAS die Unterschiede sind, fügen wir zum Statement “-et Diff” hinzu – damit werden die Unterschiede in eine temporäre Tabelle “Diff” geschrieben und können daraus ausgegeben werden. Und noch besser: -f <pfad><sqlfile> erzeugt ein T-SQL-File, das die Änderungen scriptet! Damit können die Änderungen ganz leicht am Zielsystem “ausgeführt” werden – voila! Auch ganz praktisch: Um mal rasch einen Überblick zu erhalten, sind die Parameter -c -q gut, z.B.: Table [db1].[dbo].[WEB_Node] on DAISY and Table [db2].[dbo].[WEB_Node] on DAISY have different row counts. Table [db1].[dbo].[WEB_Node] on DAISY has 123 rows. Table [db2].[dbo].[WEB_Node] on DAISY has 101 rows. The requested operation took 0,0950095 seconds. So, lassen wir es mal (ohne –c –q) laufen: Naja, da sind schon einige Unterschiede vorhanden. Das erzeugte File diff.sql sieht dann in meinem Fall so aus: Das File ist laang, am Ende folgen dann die neuen Datensätze (INSERTS). Achja, eines sollte ich noch im Script anpassen: Dass die Änderungen in die “richtige” Datenbank geschrieben werden – bei mir in “db2” – der Hinweis steht zwar im Script, aber nur als Kommentar. Also am Beginn ergänzen: use db2 go So, F5 (Run) drücken – here we go. Voller Spannung erwarte ich, dass SQL Server nun die ganze Arbeit erledigt … FAIL! Es gibt einen “Converting error” beim Umwandeln von Datentypen. Erste Analyse: Das erste INSERT Command will in ein Feld vom Typ smalldatetime einen Datumswert als String N'Null' (also kein Datum vorhanden) einfügen… Dass das nicht klappen kann erscheint logisch. Also im Script mit Suchen und Ersetzen workaround-en: Ersetze alle Vorkommen von N‘NULL’ durch NULL: Alles ersetzen. Achja und noch ein zweiter Stolperstein: Das verwendete Datumsformat N'2010-08-12 10:38:00' war auf meinem SQL Ziel-System auch noch ein Problem. Also auch zu Beginn das Datumsformat setzen: set dateformat ymd; RUN! Jipee, es funktioniert jetzt brav, frei nach dem Motto “Kaum macht mans richtig, gehts…”. Noch ein Tipp: Der zusätzlichen Parameter –strict kann auch bei der Fehleranalyse helfen (Source and destination schema are strictly compared). Das Scripten eines NULL-Datum ist mein einziger Wehrmutstropfen am coolen tablediff-Tool: Einen Parameter zum Ändern des N’NULL’ Verhaltens habe ich bislang nicht gefunden. Vielleicht hat ja ein Leser einen Tipp? Nun gut, aber der Workaround mit Search & Replace tuts auch – wenn man es weiß. ;-) Noch ein Tipp zum Vergleichen von GROSSEN Tabellen: Der Parameter -bf <number_of_statements> schränkt die Anzahl der Befehle auf die angegebene Anzahl ein und erzeugt danach ein neues, weiteres File. Damit sind große Update-Scripts durchführbar und bearbeitbar. Weitere Links zu tablediff: http://msdn.microsoft.com/en-us/library/ms162843.aspx - tablediff Utility http://msdn.microsoft.com/en-us/library/ms147919.aspx - How to: Compare Replicated Tables for Differences (Replication Programming) http://technet.microsoft.com/en-us/library/cc917696.aspx - Top 10 Hidden Gems in SQL Server 2005 http://www.databasejournal.com/features/mssql/article.php/3594926/SQL-Server-2005-TableDiff-Utility.htm - SQL Server 2005 TableDiff Utility http://sqlserverpedia.com/blog/sql-server-2005/where-do-i-find-the-tablediffexe-tool-and-what-is-it/ - Where do I find the table.diff.exe tool and what is it? http://www.mssqltips.com/tip.asp?tip=1073 - SQL Server 2005 tablediff command line utility Meine Empfehlung: TableDiff ist ein äußerst hilfreiches Tool zum automatisierten (bzw. mit dem Search & Replace Workaround halbautomatisierten) Abgleich von Tabellen und kann DB-Admins viel Zeit und Arbeit abnehmen!

Batch Script to Auto Update Sysinternals Tools

Da hat sich doch SysAdminGeek ein kleines Script geschrieben, um die Sysinternals Website nach neuen Updates der Sysinternal Tools abzufragen… Das kleine Script liest live.sysinternals.com/tools aus und vergleicht die online Files mit jenen im lokalen Filesystem im aktuellen Verzeichnis. Ich selbst hätte es zwar eher als kleine .net Console-Applikation gebastelt, aber der Zweck heiligt ja bekanntlich die Mittel; bzw. ein begabter SysAdmin bekommt das wahrscheinlich auch in PowerShell hin – aber so als Commandline-Batch ist es definitiv rasch und einfach! SysAdminGeek: Batch Script to Auto Update Sysinternals Tools “…All you have to do is put the batch script file into the folder where your Sysinternals tools are located and the script does the rest, no configuration is needed.” Genau das Richtige für SysAdmins. ;-)