SQL Server 2005

Il nome è abbastanza esplicativo, no?

The SQLCLR Team Has Started a Blog

Lo trovate qui  _________________ Diego Guidi ThreeX 3D RealGIS Terra Nova SIT

Deployment of assemblies to Sql Server 2005

Aggiornato per la April CPTDeployment of assemblies to Sql Server 2005 _________________ Diego Guidi ThreeX 3D RealGIS Terra Nova SIT

Beta2 installata!

Timoroso per via dei post che ho letto in passato sulla rimozione di una versione precedente di VS 2005 e installazione della "nuova" beta2, ho aspettato una mattinata "libera" da impegni pressanti per affrontare la cosa... ecco il resoconto.   Disinstallazione di SQL Server December CTP e VS2005 December CTP: tutto ok, nessun intoppo! Riavvio e controllo/pulizia del registro con Norton 2002-WinDoctor (che a dispetto dell'età sembra fare il suo sporco lavoro a meraviglia). Installazione Beta2 + Sql Express + MSDN: tutto ok, nessun intoppo!   Insomma, nel mio sistema si sono succeduti nell'ordine: c#express 2005 + sql express verso ottobre 2004. vs2005 dec ctp da dicembre ad oggi. ora...

Centralized Event Logging in .Net Using Web Services

Un articolo interessante sul logging centralizzato _________________ Diego Guidi ThreeX 3D RealGIS Terra Nova SIT

Finalmente anche per gli iscritti alla Beta di Sql Server 2005...

NEW – SQL Server 2005 April CTP on the Beta Download Page – 04/18/05 Fonte: Microsoft Beta: Program Info Però l'attesa non è del tutto finita... Visual Studio 2005 Beta 2 - coming soon Please check back shortly to download Visual Studio Beta 2.  You can also follow the below steps to obtain Visual Studio 2005 Beta 2 from MSDN.   _________________ Diego Guidi ThreeX 3D RealGIS Terra Nova SIT

Bad Practices in Sql Server

DotNetJunkies :: 10 Things You Shouldn't Do with SQL Server (Data Access Developer "Don'ts") ________________ Diego Guidi ThreeX 3D RealGIS Terra Nova SIT

SQL Server on Linux

SQL Server on Linux I can't believe it. My sources at Micrsoft put out the word late yesterday that there is a project underway to port SQL Server to Linux!! The exclusive word I got through some close, anonymous sources is that Microsoft realizes that they cannot stamp out Linus. Unlike OS/2 and the expensive, high end Unices, Linux is here to stay. Because of the decentralized work on it, the religous-like fever of its followers, and the high performance that it offers, the big boys, maybe just one big boy, at Microsoft have given in to the fact that it will forever be nipping at the heals of Windows. And...

Visual Studio 2005 Beta 2 probably to be released on March 31

Per lo meno lo dice lui ... da altre fonti ho sentito parlare di fine aprile addirittura! A quanto vi risulta, qual'è la data prevista per il rilascio della beta2? E soprattutto, ma quanto cavolo esce il VS 2005, nel 2006? _________________ Diego Guidi ThreeX 3D RealGIS Terra Nova SIT

MySQL 4.1 e le estensioni spaziali...

Ovvero, quando le cose uno non le la fare, è meglio che le faccia fare ad altri| Ora, lungi da me principiante criticare i programmatori di MySQL, però siccome sto realizzando per SQL2005 una serie di estensioni spaziali simili a quelle che ha MySQL4.1 (e che per prima ha introdotto Oracle con Oracle Spatial), sono andato a curiosare nel sorgente per vedere un pò di "spunti"... Ebbene, non esiste che i test spaziali si facciano come fanno loro! Se io ho due poligoni, non posso basarmi sul MBR (il più piccolo rettangolo di contenimento di un poligono) per verificare come si relazionano...

Usare o no le eccezioni?

Sottotitolo: quando un blog comincia ad assomigliare + ad un forum personale... Davanti ad un codice di questo tipo: try{    Polygon tempPolygon = this.ReadPolygons(shape, FeatureType.Polygon);    // Lettura di una geometria poligonale da un DB    if (index >= tempPolygon.NumInteriorRings + 1) throw new IndexOutOfRangeException("");    // index è un parametro di una funzione a cui appartiene il codice    return tempPolygon.ExteriorRing.ToWKTString();}catch(IndexOutOfRangeException){    return "NULL";} E' vantaggioso eliminare l'eccezione in favore di questo: Polygon tempPolygon = this.ReadPolygons(shape, FeatureType.Polygon);if (index >= tempPolygon.NumInteriorRings + 1) return "NULL"return tempPolygon.ExteriorRing.ToWKTString(); L'"eleganza" penso vada a vantaggio della gestione delle eccezioni (oltre al fatto che nel catch prima o poi dovrò aggiungere dei log ed altro), ma, visto e considerato che mi aspetto che l'utente spesso inserisca un valore di index superiore al consentito ed in questo specifico caso un file di log nn mi serve, l'eliminazione mi farà guadagnare significativamente del tempo nell'esecuzione? Mi chiedo questo perchè in passato ho letto articoli in cui si parlava del fatto...

Yukon e P/Invoke... problema risolto!

E' valsa la pena venire a lavorare oggi... ho finalmente risolto un problema che mi assillava da un pò! Una dll esterna: [DllImport("GeoSqlServer.dll", EntryPoint = "Area", SetLastError = true)]        private static extern double AreaEx(IntPtr shape, uint shapeLength); chiamata da codice .NET generico (console o winform) in questo modo funziona correttamente: fixed (byte* pArray = &((byte[])shape)[0]){    return AreaEx(pArray, (uint)shape.Length);} ma in codice CLR improtato in SqlServer 2005 il valore di ritorno è NaN! Ho riscritto il codice della dll per ritornare void e prendere il valore di ritorno da un paramentro passato come puntatore: [DllImport("GeoSqlServer.dll", EntryPoint = "Area2", SetLastError = true)]unsafe private static extern double Area2Ex(byte* pArray, uint length, double* output); e questo codice funziona perfettamente! fixed (byte* pArray = &((byte[])shape)[0]){    double output = 0;    double* pOutput = &output;    Area2Ex(pArray, (uint)shape.Length, pOutput);    return output;} Meglio così, no? Prima o poi qualcuno, magari alla microsoft visto che ho postato la segnalazione, mi spiegherà il perchè dell'errore... powered by IMHO

Grande Microsoft :)

Nell'ambito del mio lavoro, mi sono iscritto al programma di beta di SqlServer 2005... beh, oggi mi sono accorto che posso scaricami SqlServer 2005 e VisualStudio 2005, pur non essendo iscritto a MSDN!!! Già fremo al pensiero di poter fare il debug su SqlServer! 1 giga e passa senza MSDN library, speriamo ne valga la pena :) powered by IMHO

O l'uno o l'altra

Mai lasciare la strada vecchia per la nuova? Temo proprio di si :( L'aggiornamento delle versioni di SqlExpress e Visual C# express è semi-fallito, nel senso che le versioni express sono "ferme" alla beta2 e al FW 2.0.40607, mentre SqlExpress December CPT vuole il FW 2.0.40903, ma non è possibile installare sullo stesso PC 2 versioni del FW 2.0 beta... Quindi, o si sviluppa in C#Express con il "vecchio" SqlExpress e la vecchia 2.0beta, oppure si installa SqlExpress nuovo e si fa la compilazione da linea di comando :((( Ecco un post di Kent Tegels sull'argomento (se l'avessi letto prima...): That's correct. Differt releases...

Disinstallazione beta...

Stamattina ho deciso che la mia beta del Visual Studio 2005 e di SqlServer 2005 risalenti oramai a luglio 2004 sono troppo vecchie... Comincia la fase di reinstallazione di tutto quanto, compreso il .NET 2.0... Speriamo bene...   powered by IMHO

Le novità del Compact Framework 2.0

Son tutte qui :) http://msdn2.microsoft.com/library/ws1c3xeh.aspx   powered by IMHO

PINVOKE in .NET 2.0 e in SQLServer2005...

Questa è la chiamata ad una funzione c esterna: [DllImport("GeoSqlServer.dll", CharSet = CharSet.Auto, EntryPoint = "Area")]public static extern double AreaEx(IntPtr pArray, uint length);   Questo è il codice in una winform: // Connessione al server SqlServer2005string connString = "Data Source=PLUTONE\\SQLEXPRESS; Integrated Security=SSPI;" + "Initial Catalog=GeoSampleData";SqlConnection conn = new SqlConnection(connString);// Query di selezione di un poligonostring query = "SELECT SHAPE FROM dbo.Polygon WHERE OBJECTID = " + ObjectIDTextBox.Text;SqlCommand command = new SqlCommand(query);command.Connection = conn;// Richiesta del dato binarioconn.Open();byte[] shape = (byte[])command.ExecuteScalar();conn.Close();// Chiamata a dll esterna con pinvokeGCHandle pinnedArray = GCHandle.Alloc(shape, GCHandleType.Pinned);IntPtr pArray = pinnedArray.AddrOfPinnedObject();// Mostro il risultato in una textboxResultsTextBox.Text = (Form1.AreaEx(pArray, (uint)shape.Length)).ToString();// Libero le risorsepinnedArray.Free(); La dll è presente nel path dell'applicazione e tutto funziona perfettamente e il valore di ritorno è un double corretto.   Ma se inserisco la dll nella dir \binn di SqlServer2005 (dove il server va a cercare le dll di cui abbisogna) il valore di ritorno è: "Non un numero reale"   (per inciso questo sarebbe il ToString() del valore di ritorno, c# non ha qualcosa tipo NaN o altro?)   Questo è il codice SQL2005: // Chiamata a dll GCHandle pinnedArray = GCHandle.Alloc((byte[])shape, GCHandleType.Pinned);IntPtr pArray = pinnedArray.AddrOfPinnedObject();double temp = GeometryCommands.Sample1Ex();if (temp.ToString() == "Non un numero reale") return ShapefileSupport.NULLVALUE;else return temp; Ometto il codice T_SQL per la selezione dei poligoni da passare alla...

A Simple Walkthrough for deploying a SQLCLR Stored Procedure (by Brad)

Interessante articolo per chiunque si sia stancato del vecchio sistema (c++) e voglia abbracciare in .NET pure in SqlServer A Simple Walkthrough for deploying a SQLCLR Stored Procedure (by Brad)   powered by IMHO