Fiskalizacija na MS SQL serveru

Apr 4 at 2:12 PM
Želim napraviti stored procedure za fiskalizaciju na SQL serveru (MS SQL Server 2014).
Zapeo sam odmah na početku, jer SQL server odbija napraviti objekt:

EXEC @COMResult = sp_OACreate 'FiscalizationComInterop', @COMHandle OUT

Isti rezultat dobijem s:
EXEC @COMResult = sp_OACreate 'Raverus.FiskalizacijaDEV.COM.CentralniInformacijskiSustav', @COMHandle OUT

Greška je: FUSION_E_LOADFROM_BLOCKED (0x80131051)
LoadFrom(), LoadFile(), Load(byte[]) and LoadModule() have been disabled by the host.

Je li netko pokušao to napraviti?
Apr 4 at 3:59 PM
Volim googlat, a google kaže ovo:

http://cstruter.com/blog/320

Jesi probao?
Apr 5 at 7:50 AM
Ja sam riješila zaobilaznim putem:
  1. "doradila" sam original raverus source sa
namespace Raverus.FiskalizacijaDEV.COM
{
[Guid("0FE931F7-D185-478D-9E1A-DBC655CF415F"), ComVisible(true)]
public class RiRaverus
{
    public static string RiGenerirajUuid()
    {
        return Guid.NewGuid().ToString();
    }

    public static string RiPosaljiEcho(string poruka, string LCisUrl, int LTimeOut)
    {
        Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new FiskalizacijaDEV.CentralniInformacijskiSustav() { CisUrl = LCisUrl, TimeOut = LTimeOut };
        return cis.PosaljiEcho(poruka).InnerXml;
    } 
  1. a na bazi :
    create ASSEMBLY RaverusFiskalizacijaDEVCOM FROM 'D:\FiskalizacijaBazaInstalacija\Raverus.FiskalizacijaDEV.COM.dll' WITH PERMISSION_SET = UNSAFE
CREATE FUNCTION [dbo].RiPosaljiEcho (@poruka nvarchar(200),@LCisUrl nvarchar(200), @LTimeout int)
RETURNS nvarchar WITH EXECUTE AS OWNER
AS
EXTERNAL NAME RaverusFiskalizacijaDEVCOM.[Raverus.FiskalizacijaDEV.COM.RiRaverus].RiPosaljiEcho

GO

SELECT dbo.RiPosaljiEcho('test','https://cistest.apis-it.hr:8449/FiskalizacijaServiceTest','3000')
GO

CREATE FUNCTION [dbo].RiGenerirajUuid ()
RETURNS nvarchar WITH EXECUTE AS OWNER
AS
EXTERNAL NAME RaverusFiskalizacijaDEVCOM.[Raverus.FiskalizacijaDEV.COM.RiRaverus].RiGenerirajUuid
GO
SELECT dbo.RiGenerirajUuid()
Apr 5 at 9:27 AM
Hvala vam, oboje.
I bojao sam se da se neću jednostavno izvući s sp_OACreate, nego ću morati napraviti CLR.

To i dalje ne objašnjava grešku 0x80131051 s sp_OACreate.
Apr 5 at 9:50 AM
A da fiskalizaciju odradiš u php-u? Imaš gotov modul ovdje na forumu, veoma jednostavna implementacija.
Apr 5 at 10:17 AM
Program za prodaju radim u MS Accessu, s bazom na SQL serveru. Htio sam jedno rješenje za web shop i za Access.
S obzirom da je u tom projektu fiskalizacija samo usput, vjerojatno mi je jednostavnije ostaviti kako je do sada, implementirana i u Accessu i na web serveru.
Apr 5 at 9:37 PM
Nikakav problem nije izraditi CLR funkciju. Potrebno je samo voditi računa da se klasa izradi po principu kao da je u pitanju windows servis, o čemu je ovdje več bilo riječi.
    X509Certificate2 certifikat = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat("FISKAL 1", System.Security.Cryptography.X509Certificates.StoreLocation.LocalMachine, StoreName.My);

    racun.ZastKod = Raverus.FiskalizacijaDEV.PopratneFunkcije.Razno.ZastitniKodIzracun(certifikat, racun.Oib, racun.DatVrijeme.Replace('T', ' '), racun.BrRac.BrOznRac, racun.BrRac.OznPosPr, racun.BrRac.OznNapUr, racun.IznosUkupno.ToString());
SQL server u ostalom radi kao servis, pa certifikat mora imati pristup za korisnika NT SERVICE\MSSQLSERVER ili NT SERVICE\MSSQLEXPRESS.

Kreirao sam skalarnu funkciju dbo.SqlFiskal i kao izlaz imam ZK i JIR zajedno odvojeni sa ";"

SELECT dbo.SqlFiskal (BrojRacuna, DatumRacuna , OznakaPoslovogProstora, OznakaNaplatnogUredjaja, OIBFirme,
                                        IznosPdv, OsnovicaPdv,  StopaPdv, UkupnoZaPlatiti,  OznakaSljednosti,
                                        NacinPlacanja,  OIBOperater) as ZKJIR
Imao sam problema prilikom publisha CLR-a ali sam u generiranoj skripti umetnuo

PRINT N'Creating [Raverus.FiskalizacijaDEV]...';
ALTER DATABASE ImeBaze SET TRUSTWORTHY ON

GO
CREATE ASSEMBLY [Raverus.FiskalizacijaDEV]
AUTHORIZATION [dbo]
FROM xxxxxxxxxxxxxxxxxxxxxxxx
WITH PERMISSION_SET = UNSAFE;
Apr 7 at 8:56 AM
Hvala, Zokmag, i ostalima još jednom.
Moram sad raditi na drugom dijelu aplikacije, javit ću kad se vratim na fiskalizaciju.