Καλησπέρα σε όλους ,
Εχω προσπαθήσει να υλοποιήσω το εξής , εχω φτιάξει ενα store procedure σε c sharp το οποιο καλεί ενα COM object για να μπορεί να μιλάει απευθείας με ένα άλλο συστημα διαχείρησης.
Αρχίκα για να μπορέσω να δω το dll και να το κάνω import στην sp μου έκανα add ένα c sharp wrapper στον sql με την create assembly και με set = unsafe και αφού είχα κάνει όλα τα σχετικά στην βάση όσο αφορά
το allow clr ... και για την ώρα το set trustworthy on μέχρι να δώ οτι θα παίξει και μετά θα το άλλαζα με ενα νέο login και ενα sn key κλπ.
Ολα καλά μέχρι εδώ , η sp μου γινεται deploy στον sql server (2005) αλλά όταν το τρέχω μου εμφανίζει το εξής λαθος :
"Retrieving the COM class factory for component with CLSID {5D80A7F2-D643-11D2-A233-00A0CC3AD9CD} failed due to the following error: 800700c1."
Εχω κάνει install το πακέτο που δίνει ο vendor για το deployment του συγκεκριμένου SDK και εχω ψάξει στην register για το συγκεκριμένο CLSID το οποιο το βρίσκω και στο HKCR\CLSID\ και το έκανα και add και στο HKCR\Wow6432Node\CLSID\
και το InprocServer32 δείχνει το path που είναι το dll που θέλει ο wrapper.
Επισης το deployment της sp στον SQL server είναι CPU : Any CPU , αν το κάνω compile σε x86 τοτε μου βγάζει το παρακάτω error :
Msg 10314, Level 16, State 11, Line 4
An error occurred in the Microsoft .NET Framework while trying to load assembly id 65558. The server may be running out of resources, or the assembly may not be trusted with PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE. Run the query again, or check documentation to see how to solve the assembly trust issues. For more information about this error:
System.IO.FileLoadException: Could not load file or assembly 'billinginterface, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
System.IO.FileLoadException:
at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.Load(String assemblyString)
Στο assemblyInfo.cs έχω επίσης το [assembly: ComVisible(true)] αν αυτό παίζει κάποιο ρόλο.
Εχει κανείς καμιά ιδέα να ρίξει γιατί δεν βγάζω άκρη. Να αναφέρω βέβαια ότι το dll εχει unmanaged code αλλα από όσο έχω διαβάσει με unsafe mode δεν έχει πρόβλημα να το υποστηρίξει ο SQL.
Το μηχάνημα που γίνεται deploy ειναι 64bito με 2003 Server.
Ευχαριστώ εκ των προτέρων.