Excel Dateien mit SQL auswerten

Posted in Allgemein, SQL Server on November 11th, 2009 by Andreas Schwarz

Excel Query

Excel 97 – 2003

SELECT

     [ID], -- Excel Spalte 1
     [Text] -- Excel Spalte 2

FROM

     OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
     'Data Source=C:\test.xls;Extended Properties=Excel 8.0')
     ...[Tabelle1$] -- Tabellenblatt

ORDER BY

[ID] DESC

Excel 2007:

Um die Funktionalität auch bei .xslx-Dateien nutzen zu können, muß folgende Komponente auf dem System installiert sein:
2007 Office System Driver: Data Connectivity Components
 

SELECT
	*
FROM
	OPENDATASOURCE(
		'Microsoft.ACE.OLEDB.12.0',
		'Data Source=C:\test.xlsx;Extended Properties=Excel 12.0')
		...[Tabelle1$]

Leider funktioniert das Ganze aktuell nur auf 32-Bit Systemen, da die entsprechenden Provider auf 64-Bit Systemen derzeit nicht zur Verfügung gestellt werden.

Tags: , ,

X-Server SQL Query Template mit OPENROWSET

Posted in SQL Server on November 4th, 2009 by Andreas Schwarz
SELECT * FROM OPENROWSET
      ('MSDASQL', 'DRIVER={SQL Server};SERVER=zensiert;UID=zensiert;PWD=zensiert,
      Testdatenbank.Schema.TestTabelle) 

      WHERE ...

Um dieses Feature nutzen zu können muss folgendes Setting aktiviert sein

EXEC sp_configure 'Ad Hoc Distributed Queries', '1' RECONFIGURE

http://technet.microsoft.com/de-de/library/ms187569.aspx

Tags: ,

SQL Cursor Template

Posted in SQL Server on November 4th, 2009 by Andreas Schwarz
DECLARE @lastname varchar(100)
DECLARE @firstname varchar(100)

DECLARE query_cursor CURSOR FOR

	SELECT
		LastName,
		FirstName
	FROM
		T_AddressData
	ORDER BY
		PK_AddressData

OPEN query_cursor

FETCH NEXT FROM query_cursor
INTO @lastname, @firstname

PRINT '---------- Results ----------'

WHILE @@FETCH_STATUS = 0
BEGIN
	PRINT (@lastname + ' ' + @firstname)

	FETCH NEXT FROM query_cursor
	INTO @lastname, @firstname
END

CLOSE query_cursor
DEALLOCATE query_cursor
Tags: ,

Rekursive SQL Queries – Common Table Expression

Posted in SQL Server on November 2nd, 2009 by Andreas Schwarz

CTE Rekursion – Sample
 
rec_result

WITH TEMP (Pk, Parent_Pk, Title, Name, Iteration) AS
(
  SELECT Pk_JobStruct, Fk_Parent, Title, Name, 0
  FROM T_JobStruct
  WHERE PK_JobStruct = 1 -- el cheffe

 UNION ALL

  SELECT sub.Pk_Jobstruct, sub.Fk_Parent, sub.Title, sub.Name, (t.Iteration + 1)
  FROM T_JobStruct AS sub, temp AS t
  WHERE t.Pk = sub.Fk_Parent

)

SELECT * FROM Temp

rec_cte_queryresult

Tags: , ,

Webservice Traces mit WSE 2.0

Posted in C# on Oktober 30th, 2009 by Andreas Schwarz

WSE 2.0 Trace Sample

Auch wenn in der Webservice-Entwicklung mittlerweile größtenteils das WCF-Framework eingesetzt wird, haben wir alle bestimmt noch die eine oder andere “ältere” Anwendung zu betreuen.

Tritt ein Bug auf, schadet es nie zuerst einen Blick auf die entsprechenden Daten zu werfen. Während das Ganze im WCF-Framework mit einigen Mausklicks erledigt ist oder man nicht sowieso ein asychrones Traceing aufgesetzt hat ist bei den Web Service Enhancements ein wenig mehr zu tun.

Das Ganze ist allerdings mit Vorsicht zu genießen und sollte auf Produktiv-Systemen relativ zügig wieder deaktiviert werden da die entsprechenden Dateien relativ schnell anwachsen…

- Referenz auf die entsprechende WSE Assembly einfügen

- Die Vererbung der generierten Client-Klasse anpassen

Reference.cs

public partial class GlobalWeather : Microsoft.Web.Services2.WebServicesClientProtocol

 - App.config der Anwendung erweitern

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
 ...
      <section name="microsoft.web.services2" type="Microsoft.Web.Services2.Configuration.WebServicesConfiguration, Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </configSections>
 ...
  <microsoft.web.services2>
    <diagnostics>
      <trace enabled="true"
        input="inputTrace.webinfo"
        output="outputTrace.webinfo"/>
    </diagnostics>
  </microsoft.web.services2>
</configuration>
Tags: , , ,