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