Overblog
Folge diesem Blog Administration + Create my blog
Blog von Olaf Helper

OleDB für MS SQL Server ist tot, es lebe ODBC

31. August 2011 , Geschrieben von Olaf Helper Veröffentlicht in #MSSQL

Was ich von dieser Mitteilung im Microsoft SQLNCli Team Blog halten soll, weiß ich noch nicht so ganz: Microsoft is Aligning with ODBC for Native Relational Data Access.

Demnach wird der SQL Server „Denali“ die letzte Version sein, die den Zugriff auf die relationale Datenbank über den OleDB Provider für SQL Server unterstützt; nach Ende des Lifecycles von Denali gilt OleDB für SQL Server dann als abgekündigt. Zukünftig würde dann nur noch ODBC weiterentwickelt, mit dem Hinweis darauf, das diese API für allen Plattformen verfügbar sein und man somit nur noch eine einheitliche API hätte.

Wohlgemerkt, das gilt nur für OleDB für den SQL Server Provider, für Analysis Services OleDB oder gar OleDB Provider von anderen Herstellern gilt das nicht. Auch der Ado.Net SQLClient wird weiterentwickelt und ist ebenfalls nicht betroffen.

 

Im SQL Server Data Access Forum gibt einen gleichnamigen Thread „Microsoft is Aligning with ODBC for Native Relational Data Access“ aus MSFT Reihen, der ein klein wenig detaillierter ist und eine kleine FAQ darstellen soll. Wie es aber konkret weitergehen und welche nächsten Schritte es geben wird, ist dem auch nicht zu entnehmen. Nur mal als Beispiel SSIS Pakete, hier stehen neben Ado.Net bisher nur OleDB Provider zur Verfügung, ODBC kann man bisher nicht verwenden. Das würde bedeuten, man darf (mal wieder) alle SSIS Pakete, die auf eine SQL Server zugreifen, auf ODBC umbauen.

 

In der Data Access Technologies Road Map (aus Januar 2002, aber mit Update im Juni 2011) kann man hingegen unter „Deprecated MDAC/WDAC Components“ nur erfahren, das der alte „Microsoft OLE DB Provider for SQL Server (SQLOLEDB)“ Treiber aus dem MDAC abgekündigt ist und nicht mehr verwendet werden sollte; für Neuentwicklung wird hier noch der „SQL Server Native Client OLEDB Provider“ empfohlen.

 

Nun ja, zum Glück wird nichts so heiß gegessen, wie es gekocht wird und es dauert auch noch etwas, bis Denali erscheint und dann seine 7 Jahre auf dem Buckel hat, bis diese Version aus dem Lifecycle läuft. Bis dahin wird sich mit Sicherheit noch das eine oder andere Ändern; trotzdem sollte man weiter das Thema im Auge behalten.

Weiterlesen

SSIS OleDB Befehl mit Oracle Datenbank als Ziel

26. August 2011 , Geschrieben von Olaf Helper Veröffentlicht in #MSSQL

Wenn man in einem SQL Server Integration Services Package mit einem parametrisiertem SQL Statement in einem OleDB Befehl gegen eine Oracle Datenbank arbeiten will, erhält man diese Fehlermeldung:

 

Fehler bei Datenflusstask [OLE DB-Befehl 1 [195]]: SSIS-Fehlercode 'DTS_E_OLEDBERROR'. OLE DB-Fehler. Fehlercode: 0x80040E51.

Ein OLE DB-Datensatz ist verfügbar. Quelle: 'OraOLEDB' HRESULT: 0x80040E51 Beschreibung: 'Der Provider kann keine Parameterinformationen ermitteln und SetParameterInfo ist nicht aufgerufen worden.'.

Fehler bei Datenflusstask [OLE DB-Befehl 1 [195]]: Zielspaltenbeschreibungen können nicht aus den Parametern des SQL-Befehls abgerufen werden.

 

Den Grund nennt die Fehlermeldung, der Oracle Treiber ist (trotz aktuellem Stand 11g) nicht in der Lage Metadaten für die verwendeten Parameter zurück zu liefern, also Informationen wie Datentyp etc.

Andere Provider können das hingegen problemlos.

Das ist nicht gerade schön, aber auch kein Beinbruch, man muss dann halt die Parameter selbst definieren und die Zuordnung manuell vornehmen.

Nehmen wir mal an, man will Daten in einer Oracle Tabelle aktualisieren, sei es über einen einfachen selbst definiert OleDB Befehl oder mit Einem, der aus dem Wizard der Transformation „Langsam veränderliche Dimension“ (SCD = Slowly Changing Dimension“) erzeugt wurde. Das parametrisierte Statement sieht dann im Prinzip so aus:

 

 UPDATE "Schema"."Tabelle"
SET "Feld1" = ?
,"Feld2" = ?
,"Feld3" = ?
,"Feld4" = ?
WHERE "PK" = ?

 

Wie allgemein bei OleDB Befehlen sind die Parameter nicht benannt, sondern es sind welche mit dem Fragezeichen Platzhalter und dadurch ist bei der späteren Zuordnung die Reihenfolge der Parameter wichtig.

Als erstes definiert man in den Eigenschaften des „OleDB-Befehl“ unter dem Kartenreiter „Eingabe- und Ausgabeeigenschaften“ die einzelnen Parameter mit dem jeweiligen Datentyp und dabei ist, wie zuvor erwähnt, die Reihenfolge wichtig. Das heißt für das Beispiel-Statement von oben, das erst die Felder „Feld1“ bis „Feld4“ definiert und zum Schluss der PK Parameter, da der „? Parameter“ im SQL Statement auch zuletzt kommt.

Ebenso wichtig ist natürlich, das man die Datentypen richtig definiert, sonst gibt es später bei der Überprüfung bzw. beim Ausführen mindestens Warnungen, wenn nicht gar Fehler.

 

SsisOra_InputOutputColumns.JPG

 

Dann ordnet man noch schnell unter dem Kartenordner „Spaltenzuordnung“ die Eingabespalten den Parametern zu und das war es schon; anschließend gibt es keine Fehlermeldung oder Warnungen beim Erstellen des Packages und der OleDB Befehl arbeitet wie gewünscht.

 

SsisOra_ColumnRelation.JPG  

 

Einen Hinweis aber noch:
Wurde der OleDB Befehl vom Wizard der Transformation „Langsam veränderliche Dimension“ erstellt, dann diesen später nicht noch einmal aufrufen, denn der verwirft dann alle manuellen Änderungen und man darf wieder alles von vorne durchgehen.

Weiterlesen

Microsoft SQL Server 2008 Service Pack 3 CTP verfügbar

23. August 2011 , Geschrieben von Olaf Helper Veröffentlicht in #Download MSSQL

Wer gerne Neuerungen testet und auch die Zeit dafür hat, für den steht seit heute das MS SQL Server 2008 Service Pack als CTP Version zur Verfügung.

Enthalten sind die Cumulative Update (CU) 1 – 4 fürs Service Pack 2. Was alles an Problemen behoben wurde, kann man der „List of the bugs that are fixed in SQL Server 2008 Service Pack 3 CTP“ entnehmen.

 

Interessant finde ich diese Neuerung „You may receive the following warning message when you create the maintenance plan if the Shrink Database option is enabled in SQL Server 2008: "Shrinking of data files moves data and can cause fragmentation of the indexes within those files."“

Natürlich ein sinnvoller Hinweis, nur dass das mit einem Service Pack für eine nicht unbedingt aktuelle Version eines SQL Servers veröffentlich wird, hat mich etwas gewundert.

 

Auf der Download-Seite des SP3 CTP findet man auch alle Komponenten aus dem Feature Pack, die Express Edition 2008 mit SP 3 gibt es ebenfalls, wobei hier der Hinweis fehlt, das es eigentlich eine CTP ist.

Weiterlesen

Microsoft® SQL Server® code name 'Denali', Community Technology Preview 3 (CTP 3) Product Guide

11. August 2011 , Geschrieben von Olaf Helper Veröffentlicht in #MSSQL

Microsoft hat mit der Microsoft® SQL Server® code name 'Denali', Community Technology Preview 3 (CTP 3) Product Guide eine sehr umfangreiche Sammlung an Whitepaper, Präsentationen, Videos, Linksammlungen und mehr zum SQL Server „Denali“ veröffentlich; eine Zusammenfassung kann man im SQL Server Blog nachlesen.

 

Der Download ist 456 MB groß, entpackt sind es 503 MB. Etwas durchgeblättert habe ich schon, der Aufbau ist sehr ansehnlich gestaltet und bei der Fülle an Informationen kann man sich damit durchaus ein paar Tage beschäftigen; genau das richtige fürs anstehende voraussichtlich verregnete Wochenende.

Weiterlesen