tediousjs / tedious

Node TDS module for connecting to SQL Server databases.
http://tediousjs.github.io/tedious/
MIT License
1.58k stars 436 forks source link

Executing a procedure with a hierarchyID parameter but passing a varchar parameter crashes SQL Server! #235

Closed lee-houghton closed 9 years ago

lee-houghton commented 9 years ago

Disclaimer: It's highly likely that this is not a bug with Tedious. It is reproducible though, with both SQL Server 2012 and 2014. I've managed to produce the smallest test case I think I can find. It's definitely an SQL Server bug, but could it be that Tedious is formatting the request incorrectly?


Here's the smallest stored procedure I can replicate the problem with:

create procedure testTDS ( @h hierarchyid = null ) as 
    select @h as h
go

And here's the JavaScript I'm using to invoke it:

var Tedious = require("tedious"),
    Connection = Tedious.Connection,
    Request = Tedious.Request,
    TYPES = Tedious.TYPES;

var config = {
    server: "...",
    userName: "sa",
    password: "...",
    options: {
        port: ...,
        connectTimeout: 3000,
        encrypt: true,
        database: "...",
        rowCollectionOnDone: true,
        useColumnNames: true,
        rowCollectionOnRequestCompletion: true
    }
};

var conn = new Connection(config);
conn.on("error", function(err) {
    console.error("Connection error (event emitter edition):");
    console.log(err);
    process.exit(1);
});

conn.on("connect", function(err) {
    if (err) {
        console.error("Connection error:");
        console.log(err);
        process.exit(1);
    }

    var req = new Request("testTDS", function(err, rowCount, rows) {
        if (err) {
            console.error("Request error:");
            console.log(err);
            process.exit(1);
        }

        // Actually, this might be a lie. It seems to call the Request callback with success even 
        // though a connection error was raised.
        console.log("Success!");
        console.log(rows);
        console.log(rows && rows[0]);
        console.log(rows && rows[0] && rows[0].hid);
        return;
        //process.exit(0);
    });

    //req.addParameter("hid", TYPES.VarChar, null, { length: 5 }); // Fine
    //req.addParameter("hid", TYPES.VarBinary, new Buffer([0x5A, 0xC0])); // Fine (/1/1/)
    req.addParameter("hid", TYPES.VarChar, "/1/1/", { length: 5 }); // CRASH!

    conn.callProcedure(req);
});

And the result:

Date,Source,Severity,Message
01/26/2015 16:17:39,Server,Unknown,A user request from the session with SPID 85 generated a fatal exception. SQL Server is terminating this session. Contact Product Support Services with the dump produced in the log directory.
01/26/2015 16:17:39,Server,Unknown,Error: 17310<c/> Severity: 20<c/> State: 1.
01/26/2015 16:17:39,spid85,Unknown,External dump process return code 0x20000001.<nl/>External dump process returned no errors.
01/26/2015 16:17:38,spid85,Unknown,Stack Signature for the dump is 0x000000010E46D875
01/26/2015 16:17:38,spid85,Unknown,00000000770AC541 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,0000000076E759ED Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEF78EE059 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEF78ED9CB Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEF78EE5C0 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEF78EE22F Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEF78D2D66 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEF78D2F64 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEF78D3170 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEDA908BA7 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEDA913DAC Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEDA8D08A1 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEDAB9A11B Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEDAB9A383 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEDAB9A7C5 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEDAAE12CF Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEDAE17C8A Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEDB6FC8B9 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEDAAE3B77 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEDAAE4873 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEDAAE4A3A Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEF6C1A002 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEF6C4EC81 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEF6C19A0D Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,000007FEF6CDA694 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,* Short Stack Dump
01/26/2015 16:17:38,spid85,Unknown,* -------------------------------------------------------------------------------
01/26/2015 16:17:38,spid85,Unknown,* *******************************************************************************
01/26/2015 16:17:38,spid85,Unknown,*        Rip: 000007FEF6CDA694:  8D4DC93345018B48  4810FFD68B482843  2444C74870247489  068B480000000060  0850FFCE8B48D233  6024448948D88B48
01/26/2015 16:17:38,spid85,Unknown,*        R15: 0000000000000010:
01/26/2015 16:17:38,spid85,Unknown,*        R14: 000000001C92B0A0:  000000E7000002E7  FFFFFFFFFFFFFFFF  3400D0080000FFFF  000000000000A700  00000001915E806E  0000000000000005
01/26/2015 16:17:38,spid85,Unknown,*        R13: 00000001DC4F9FF0:  662E737961772065  6169726574616D20  6C6F6F74202C736C  6F7320646E612073  742E657261777466  6120776F7267206F
01/26/2015 16:17:38,spid85,Unknown,*        R12: 00000000000000A7:
01/26/2015 16:17:38,spid85,Unknown,*        R11: 000000001C92AF58:  000007FEF6C19A0D  00000001179589D0  00000001179589D0  0000000000000000  000000001C92AFC0  0000000100001FA4
01/26/2015 16:17:38,spid85,Unknown,*        R10: 00000001DC4F8000:  00010004DC4A0000  0000000117954060  0000000000002000  00000001DC4FA000  00000001DC4FA070  00000001DC4F8054
01/26/2015 16:17:38,spid85,Unknown,*         R9: 00000001DC4F9FF0:  662E737961772065  6169726574616D20  6C6F6F74202C736C  6F7320646E612073  742E657261777466  6120776F7267206F
01/26/2015 16:17:38,spid85,Unknown,*         R8: 000000001C92B0A0:  000000E7000002E7  FFFFFFFFFFFFFFFF  3400D0080000FFFF  000000000000A700  00000001915E806E  0000000000000005
01/26/2015 16:17:38,spid85,Unknown,*        Rdi: 0000000117911610:  000000000000A700  00000001915E806E  0000000000000005  0000000000000000  0000000000000000  0000000000000000
01/26/2015 16:17:38,spid85,Unknown,*        Rsi: 00000001DC4F9FF0:  662E737961772065  6169726574616D20  6C6F6F74202C736C  6F7320646E612073  742E657261777466  6120776F7267206F
01/26/2015 16:17:38,spid85,Unknown,*        Rbp: 00000001179589D0:  000000A7000002A7  FFFFFFFFFFFFFFFF  3400D00800001F40  00000001915E805B  00000001FFFF0008  0000000000000000
01/26/2015 16:17:38,spid85,Unknown,*        Rsp: 000000001C92AF00:  000000000000FFFE  0000000000001FA4  0000000000000002  0000000000000001  0000000000000004  000007FEF78F1924
01/26/2015 16:17:38,spid85,Unknown,*        Rbx: 00000001179589D0:  000000A7000002A7  FFFFFFFFFFFFFFFF  3400D00800001F40  00000001915E805B  00000001FFFF0008  0000000000000000
01/26/2015 16:17:38,spid85,Unknown,*        Rdx: 00000001179589D0:  000000A7000002A7  FFFFFFFFFFFFFFFF  3400D00800001F40  00000001915E805B  00000001FFFF0008  0000000000000000
01/26/2015 16:17:38,spid85,Unknown,*        Rcx: 0000000000000000:
01/26/2015 16:17:38,spid85,Unknown,*        Rax: 0000000000000000:
01/26/2015 16:17:38,spid85,Unknown,*     EFlags: 0000000000010293:  0000000000000000  0000000000000000  0000000000000000  0000000000000000  0000000000000000  0000000000000000
01/26/2015 16:17:38,spid85,Unknown,*      SegSs: 000000000000002B:
01/26/2015 16:17:38,spid85,Unknown,*      SegGs: 000000000000002B:
01/26/2015 16:17:38,spid85,Unknown,*      SegFs: 0000000000000053:
01/26/2015 16:17:38,spid85,Unknown,*      SegEs: 000000000000002B:
01/26/2015 16:17:38,spid85,Unknown,*      SegDs: 000000000000002B:
01/26/2015 16:17:38,spid85,Unknown,*      SegCs: 0000000000000033:
01/26/2015 16:17:38,spid85,Unknown,*      MxCsr: 0000000000001FA0:
01/26/2015 16:17:38,spid85,Unknown,* ContextFlags: 000000000010005F:
01/26/2015 16:17:38,spid85,Unknown,*     P6Home: 0000000000004000:
01/26/2015 16:17:38,spid85,Unknown,*     P5Home: 0000000000000004:
01/26/2015 16:17:38,spid85,Unknown,*     P4Home: 0000000000000000:
01/26/2015 16:17:38,spid85,Unknown,*     P3Home: 0000000000000000:
01/26/2015 16:17:38,spid85,Unknown,*     P2Home: 000000001C92A800:  000000001C92ACF0  000000001C92A800  0000000000000000  0000000000000000  0000000000000004  0000000000004000
01/26/2015 16:17:38,spid85,Unknown,*     P1Home: 000000001C92ACF0:  00000000C0000005  0000000000000000  000007FEF6CDA694  0000000000000002  0000000000000000  0000000000000000
01/26/2015 16:17:38,spid85,Unknown,*
01/26/2015 16:17:38,spid85,Unknown,* dbghelp                        0000000056180000
01/26/2015 16:17:38,spid85,Unknown,* System.Xml                     000000006A800000
01/26/2015 16:17:38,spid85,Unknown,* System.Security                000000006AAA0000
01/26/2015 16:17:38,spid85,Unknown,* System                         0000000055D40000
01/26/2015 16:17:38,spid85,Unknown,* System.Xml.ni                  000007FEE6DA0000
01/26/2015 16:17:38,spid85,Unknown,* System.Security.ni             000007FEF93F0000
01/26/2015 16:17:38,spid85,Unknown,* System.Transactions            000007FEFA610000
01/26/2015 16:17:38,spid85,Unknown,* System.Data                    000007FEE8D80000
01/26/2015 16:17:38,spid85,Unknown,* System.ni                      000007FEF1B40000
01/26/2015 16:17:38,spid85,Unknown,* perfos                         000007FEFA810000
01/26/2015 16:17:38,spid85,Unknown,* ssdebugps                      000000006E2C0000
01/26/2015 16:17:38,spid85,Unknown,* RpcRtRemote                    000007FEFCE20000
01/26/2015 16:17:38,spid85,Unknown,* CFGMGR32                       000007FEFD230000
01/26/2015 16:17:38,spid85,Unknown,* perfdisk                       000007FEFA6F0000
01/26/2015 16:17:38,spid85,Unknown,* apphelp                        000007FEFCD10000
01/26/2015 16:17:38,spid85,Unknown,* ntmarta                        000007FEFB9C0000
01/26/2015 16:17:38,spid85,Unknown,* xpstar                         000000006B900000
01/26/2015 16:17:38,spid85,Unknown,* odbcint                        0000000068400000
01/26/2015 16:17:38,spid85,Unknown,* ODBC32                         000007FEF95D0000
01/26/2015 16:17:38,spid85,Unknown,* SQLSCM                         0000000072D00000
01/26/2015 16:17:38,spid85,Unknown,* ATL100                         0000000072A60000
01/26/2015 16:17:38,spid85,Unknown,* xpstar                         0000000074BF0000
01/26/2015 16:17:38,spid85,Unknown,* Sort00001000                   000007FEF8C10000
01/26/2015 16:17:38,spid85,Unknown,* SAMLIB                         000007FEF9A30000
01/26/2015 16:17:38,spid85,Unknown,* fwpuclnt                       000007FEFA1C0000
01/26/2015 16:17:38,spid85,Unknown,* rasadhlp                       000007FEF9D10000
01/26/2015 16:17:38,spid85,Unknown,* WINNSI                         000007FEFA9A0000
01/26/2015 16:17:38,spid85,Unknown,* IPHLPAPI                       000007FEFA9C0000
01/26/2015 16:17:38,spid85,Unknown,* DNSAPI                         000007FEFC610000
01/26/2015 16:17:38,spid85,Unknown,* ntdsapi                        000007FEF9980000
01/26/2015 16:17:38,spid85,Unknown,* wshtcpip                       000007FEFC060000
01/26/2015 16:17:38,spid85,Unknown,* wship6                         000007FEFC580000
01/26/2015 16:17:38,spid85,Unknown,* mswsock                        000007FEFC670000
01/26/2015 16:17:38,spid85,Unknown,* clrjit                         000007FEF8F70000
01/26/2015 16:17:38,spid85,Unknown,* nlssorting                     000007FEF9710000
01/26/2015 16:17:38,spid85,Unknown,* SqlAccess                      0000000072A90000
01/26/2015 16:17:38,spid85,Unknown,* mscorlib.ni                    000007FEF5610000
01/26/2015 16:17:38,spid85,Unknown,* MSVCR110_CLR0400               000007FEF3220000
01/26/2015 16:17:38,spid85,Unknown,* clr                            000007FEF3300000
01/26/2015 16:17:38,spid85,Unknown,* SQLNCLIR11                     0000000072B00000
01/26/2015 16:17:38,spid85,Unknown,* SHELL32                        000007FEFE480000
01/26/2015 16:17:38,spid85,Unknown,* COMDLG32                       000007FEFDE30000
01/26/2015 16:17:38,spid85,Unknown,* COMCTL32                       000007FEF98B0000
01/26/2015 16:17:38,spid85,Unknown,* sqlncli11                      0000000072D10000
01/26/2015 16:17:38,spid85,Unknown,* CLBCatQ                        000007FEFF2F0000
01/26/2015 16:17:38,spid85,Unknown,* BatchParser                    0000000074BA0000
01/26/2015 16:17:38,spid85,Unknown,* security                       0000000072830000
01/26/2015 16:17:38,spid85,Unknown,* RESUTILS                       000007FEF41E0000
01/26/2015 16:17:38,spid85,Unknown,* CLUSAPI                        000007FEF4200000
01/26/2015 16:17:38,spid85,Unknown,* mscoreei                       000007FEF3E20000
01/26/2015 16:17:38,spid85,Unknown,* MSCOREE                        000007FEF3EC0000
01/26/2015 16:17:38,spid85,Unknown,* schannel                       000007FEFC410000
01/26/2015 16:17:38,spid85,Unknown,* kerberos                       000007FEFC6F0000
01/26/2015 16:17:38,spid85,Unknown,* cryptdll                       000007FEFCA60000
01/26/2015 16:17:38,spid85,Unknown,* msv1_0                         000007FEFC520000
01/26/2015 16:17:38,spid85,Unknown,* credssp                        000007FEFC290000
01/26/2015 16:17:38,spid85,Unknown,* VERSION                        000007FEFBF90000
01/26/2015 16:17:38,spid85,Unknown,* SHLWAPI                        000007FEFE400000
01/26/2015 16:17:38,spid85,Unknown,* WLDAP32                        000007FEFE0F0000
01/26/2015 16:17:38,spid85,Unknown,* cryptnet                       000007FEF9C50000
01/26/2015 16:17:38,spid85,Unknown,* GPAPI                          000007FEFC160000
01/26/2015 16:17:38,spid85,Unknown,* bcryptprimitives               000007FEFC300000
01/26/2015 16:17:38,spid85,Unknown,* bcrypt                         000007FEFC820000
01/26/2015 16:17:38,spid85,Unknown,* ncrypt                         000007FEFC850000
01/26/2015 16:17:38,spid85,Unknown,* imagehlp                       000007FEFDED0000
01/26/2015 16:17:38,spid85,Unknown,* rsaenh                         000007FEFC3C0000
01/26/2015 16:17:38,spid85,Unknown,* CRYPTSP                        000007FEFC6D0000
01/26/2015 16:17:38,spid85,Unknown,* sqlevn70                       00000000725A0000
01/26/2015 16:17:38,spid85,Unknown,* cscapi                         000007FEF9950000
01/26/2015 16:17:38,spid85,Unknown,* instapi110                     000007FEFA6E0000
01/26/2015 16:17:38,spid85,Unknown,* CRYPTBASE                      000007FEFCD70000
01/26/2015 16:17:38,spid85,Unknown,* MSCTF                          000007FEFD290000
01/26/2015 16:17:38,spid85,Unknown,* IMM32                          000007FEFE0C0000
01/26/2015 16:17:38,spid85,Unknown,* MSASN1                         000007FEFCEE0000
01/26/2015 16:17:38,spid85,Unknown,* CRYPT32                        000007FEFCF40000
01/26/2015 16:17:38,spid85,Unknown,* WINTRUST                       000007FEFCEF0000
01/26/2015 16:17:38,spid85,Unknown,* AUTHZ                          000007FEFC8A0000
01/26/2015 16:17:38,spid85,Unknown,* SAMCLI                         000007FEFA3C0000
01/26/2015 16:17:38,spid85,Unknown,* LOGONCLI                       000007FEFC5E0000
01/26/2015 16:17:38,spid85,Unknown,* profapi                        000007FEFCE40000
01/26/2015 16:17:38,spid85,Unknown,* USERENV                        000007FEFC180000
01/26/2015 16:17:38,spid85,Unknown,* sqllang                        000007FEDA8C0000
01/26/2015 16:17:38,spid85,Unknown,* WINMM                          000007FEFAAB0000
01/26/2015 16:17:38,spid85,Unknown,* sqldk                          000007FEF78C0000
01/26/2015 16:17:38,spid85,Unknown,* sqlTsEs                        000007FEF6C10000
01/26/2015 16:17:38,spid85,Unknown,* NSI                            000007FEFD6A0000
01/26/2015 16:17:38,spid85,Unknown,* WS2_32                         000007FEFD650000
01/26/2015 16:17:38,spid85,Unknown,* PSAPI                          0000000077240000
01/26/2015 16:17:38,spid85,Unknown,* SSPICLI                        000007FEFCCE0000
01/26/2015 16:17:38,spid85,Unknown,* Secur32                        000007FEFC980000
01/26/2015 16:17:38,spid85,Unknown,* OLEAUT32                       000007FEFDAA0000
01/26/2015 16:17:38,spid85,Unknown,* ole32                          000007FEFD720000
01/26/2015 16:17:38,spid85,Unknown,* USP10                          000007FEFD3A0000
01/26/2015 16:17:38,spid85,Unknown,* LPK                            000007FEFD930000
01/26/2015 16:17:38,spid85,Unknown,* GDI32                          000007FEFD6B0000
01/26/2015 16:17:38,spid85,Unknown,* USER32                         0000000076F80000
01/26/2015 16:17:38,spid85,Unknown,* sqlmin                         000007FEDC940000
01/26/2015 16:17:38,spid85,Unknown,* opends60                       0000000074BE0000
01/26/2015 16:17:38,spid85,Unknown,* pdh                            000007FEF9690000
01/26/2015 16:17:38,spid85,Unknown,* wkscli                         000007FEFA3E0000
01/26/2015 16:17:38,spid85,Unknown,* srvcli                         000007FEFC8E0000
01/26/2015 16:17:38,spid85,Unknown,* netutils                       000007FEFC590000
01/26/2015 16:17:38,spid85,Unknown,* NETAPI32                       000007FEFA400000
01/26/2015 16:17:38,spid85,Unknown,* sqlos                          0000000074BD0000
01/26/2015 16:17:38,spid85,Unknown,* MSVCP100                       0000000072B70000
01/26/2015 16:17:38,spid85,Unknown,* MSVCR100                       0000000072C10000
01/26/2015 16:17:38,spid85,Unknown,* RPCRT4                         000007FEFDEF0000
01/26/2015 16:17:38,spid85,Unknown,* sechost                        000007FEFD270000
01/26/2015 16:17:38,spid85,Unknown,* msvcrt                         000007FEFE020000
01/26/2015 16:17:38,spid85,Unknown,* ADVAPI32                       000007FEFF210000
01/26/2015 16:17:38,spid85,Unknown,* KERNELBASE                     000007FEFD160000
01/26/2015 16:17:38,spid85,Unknown,* kernel32                       0000000076E60000
01/26/2015 16:17:38,spid85,Unknown,* ntdll                          0000000077080000
01/26/2015 16:17:38,spid85,Unknown,* sqlservr                       00000000FF780000
01/26/2015 16:17:38,spid85,Unknown,*  MODULE                          BASE      END       SIZE
01/26/2015 16:17:38,spid85,Unknown,*
01/26/2015 16:17:38,spid85,Unknown,*
01/26/2015 16:17:38,spid85,Unknown,*  h e r  §@        1 68 00 65 00 72 00 00 a7 40 1f 00 00 00 00 00 01 00 31
01/26/2015 16:17:38,spid85,Unknown,*        /1/1/ @ o t  00 00 00 00 05 00 2f 31 2f 31 2f 06 40 00 6f 00 74 00
01/26/2015 16:17:38,spid85,Unknown,*  S    @ h i d  §@   53 00 00 00 04 40 00 68 00 69 00 64 00 00 a7 40 1f 00
01/26/2015 16:17:38,spid85,Unknown,*        t e s t T D  01 00 00 00 07 00 74 00 65 00 73 00 74 00 54 00 44 00
01/26/2015 16:17:38,spid85,Unknown,*                     16 00 00 00 12 00 00 00 02 00 00 00 00 00 00 00 00 00
01/26/2015 16:17:38,spid85,Unknown,* Input Buffer 90 bytes -
01/26/2015 16:17:38,spid85,Unknown,*   Access Violation occurred reading address 0000000000000000
01/26/2015 16:17:38,spid85,Unknown,*   Exception Code    = c0000005 EXCEPTION_ACCESS_VIOLATION
01/26/2015 16:17:38,spid85,Unknown,*   Exception Address = 000007FEF6CDA694 Module(UNKNOWN+0000000000000000)
01/26/2015 16:17:38,spid85,Unknown,*
01/26/2015 16:17:38,spid85,Unknown,*
01/26/2015 16:17:38,spid85,Unknown,*   01/26/15 16:17:38 spid 85
01/26/2015 16:17:38,spid85,Unknown,* BEGIN STACK DUMP:
01/26/2015 16:17:38,spid85,Unknown,*
01/26/2015 16:17:38,spid85,Unknown,* *******************************************************************************
01/26/2015 16:17:38,spid85,Unknown,SqlDumpExceptionHandler: Process 85 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
01/26/2015 16:17:38,spid85,Unknown,***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\LOG\SQLDump0049.txt
01/26/2015 16:17:38,spid85,Unknown,Using 'dbghelp.dll' version '4.0.5'

And in case that wasn't big enough of a wall of text:

Current time is 16:17:38 01/26/15.                                                                               
=====================================================================                                            
       BugCheck Dump                                                                                             
=====================================================================                                            

This file is generated by Microsoft SQL Server                                                                   
version 11.0.2100.60                                                                                             
upon detection of fatal unexpected error. Please return this file,                                               
the query or program that produced the bugcheck, the database and                                                
the error log, and any other pertinent information with a Service Request.                                       

Computer type is Intel(R) Core(TM) i3-3220 CPU @ 3.30GHz.                                                        
Bios Version is ACRSYS - 1072009                                                                                 
BIOS Date: 02/19/13 15:17:01 Ver: 04.06.05                                                                       
4 X64 level 8664, 3 Mhz processor (s).                                                                           
Windows NT 6.1 Build 7601 CSD Service Pack 1.                                                                    

Memory                               
MemoryLoad = 76%                     
Total Physical = 4003 MB             
Available Physical = 929 MB          
Total Page File = 8300 MB            
Available Page File = 3435 MB        
Total Virtual = 8388607 MB           
Available Virtual = 8377784 MB       
***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\LOG\SQLDump0049.txt      
SqlDumpExceptionHandler: Process 85 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is 
terminating this process.                                                                                        
* *******************************************************************************                                
*                                                                                                                
* BEGIN STACK DUMP:                                                                                              
*   01/26/15 16:17:38 spid 85                                                                                    
*                                                                                                                
*                                                                                                                
*   Exception Address = 000007FEF6CDA694 Module(UNKNOWN+0000000000000000)                                        
*   Exception Code    = c0000005 EXCEPTION_ACCESS_VIOLATION                                                      
*   Access Violation occurred reading address 0000000000000000                                                   
* Input Buffer 90 bytes -                                                                                        
*                     16 00 00 00 12 00 00 00 02 00 00 00 00 00 00 00 00 00                                      
*        t e s t T D  01 00 00 00 07 00 74 00 65 00 73 00 74 00 54 00 44 00                                      
*  S    @ h i d  §@   53 00 00 00 04 40 00 68 00 69 00 64 00 00 a7 40 1f 00                                      
*        /1/1/ @ o t  00 00 00 00 05 00 2f 31 2f 31 2f 06 40 00 6f 00 74 00                                      
*  h e r  §@        1 68 00 65 00 72 00 00 a7 40 1f 00 00 00 00 00 01 00 31                                      
*                                                                                                                
*                                                                                                                
*  MODULE                          BASE      END       SIZE                                                      
* sqlservr                       00000000FF780000                                                                
* ntdll                          0000000077080000                                                                
* kernel32                       0000000076E60000                                                                
* KERNELBASE                     000007FEFD160000                                                                
* ADVAPI32                       000007FEFF210000                                                                
* msvcrt                         000007FEFE020000                                                                
* sechost                        000007FEFD270000                                                                
* RPCRT4                         000007FEFDEF0000                                                                
* MSVCR100                       0000000072C10000                                                                
* MSVCP100                       0000000072B70000                                                                
* sqlos                          0000000074BD0000                                                                
* NETAPI32                       000007FEFA400000                                                                
* netutils                       000007FEFC590000                                                                
* srvcli                         000007FEFC8E0000                                                                
* wkscli                         000007FEFA3E0000                                                                
* pdh                            000007FEF9690000                                                                
* opends60                       0000000074BE0000                                                                
* sqlmin                         000007FEDC940000                                                                
* USER32                         0000000076F80000                                                                
* GDI32                          000007FEFD6B0000                                                                
* LPK                            000007FEFD930000                                                                
* USP10                          000007FEFD3A0000                                                                
* ole32                          000007FEFD720000                                                                
* OLEAUT32                       000007FEFDAA0000                                                                
* Secur32                        000007FEFC980000                                                                
* SSPICLI                        000007FEFCCE0000                                                                
* PSAPI                          0000000077240000                                                                
* WS2_32                         000007FEFD650000                                                                
* NSI                            000007FEFD6A0000                                                                
* sqlTsEs                        000007FEF6C10000                                                                
* sqldk                          000007FEF78C0000                                                                
* WINMM                          000007FEFAAB0000                                                                
* sqllang                        000007FEDA8C0000                                                                
* USERENV                        000007FEFC180000                                                                
* profapi                        000007FEFCE40000                                                                
* LOGONCLI                       000007FEFC5E0000                                                                
* SAMCLI                         000007FEFA3C0000                                                                
* AUTHZ                          000007FEFC8A0000                                                                
* WINTRUST                       000007FEFCEF0000                                                                
* CRYPT32                        000007FEFCF40000                                                                
* MSASN1                         000007FEFCEE0000                                                                
* IMM32                          000007FEFE0C0000                                                                
* MSCTF                          000007FEFD290000                                                                
* CRYPTBASE                      000007FEFCD70000                                                                
* instapi110                     000007FEFA6E0000                                                                
* cscapi                         000007FEF9950000                                                                
* sqlevn70                       00000000725A0000                                                                
* CRYPTSP                        000007FEFC6D0000                                                                
* rsaenh                         000007FEFC3C0000                                                                
* imagehlp                       000007FEFDED0000                                                                
* ncrypt                         000007FEFC850000                                                                
* bcrypt                         000007FEFC820000                                                                
* bcryptprimitives               000007FEFC300000                                                                
* GPAPI                          000007FEFC160000                                                                
* cryptnet                       000007FEF9C50000                                                                
* WLDAP32                        000007FEFE0F0000                                                                
* SHLWAPI                        000007FEFE400000                                                                
* VERSION                        000007FEFBF90000                                                                
* credssp                        000007FEFC290000                                                                
* msv1_0                         000007FEFC520000                                                                
* cryptdll                       000007FEFCA60000                                                                
* kerberos                       000007FEFC6F0000                                                                
* schannel                       000007FEFC410000                                                                
* MSCOREE                        000007FEF3EC0000                                                                
* mscoreei                       000007FEF3E20000                                                                
* CLUSAPI                        000007FEF4200000                                                                
* RESUTILS                       000007FEF41E0000                                                                
* security                       0000000072830000                                                                
* BatchParser                    0000000074BA0000                                                                
* CLBCatQ                        000007FEFF2F0000                                                                
* sqlncli11                      0000000072D10000                                                                
* COMCTL32                       000007FEF98B0000                                                                
* COMDLG32                       000007FEFDE30000                                                                
* SHELL32                        000007FEFE480000                                                                
* SQLNCLIR11                     0000000072B00000                                                                
* clr                            000007FEF3300000                                                                
* MSVCR110_CLR0400               000007FEF3220000                                                                
* mscorlib.ni                    000007FEF5610000                                                                
* SqlAccess                      0000000072A90000                                                                
* nlssorting                     000007FEF9710000                                                                
* clrjit                         000007FEF8F70000                                                                
* mswsock                        000007FEFC670000                                                                
* wship6                         000007FEFC580000                                                                
* wshtcpip                       000007FEFC060000                                                                
* ntdsapi                        000007FEF9980000                                                                
* DNSAPI                         000007FEFC610000                                                                
* IPHLPAPI                       000007FEFA9C0000                                                                
* WINNSI                         000007FEFA9A0000                                                                
* rasadhlp                       000007FEF9D10000                                                                
* fwpuclnt                       000007FEFA1C0000                                                                
* SAMLIB                         000007FEF9A30000                                                                
* Sort00001000                   000007FEF8C10000                                                                
* xpstar                         0000000074BF0000                                                                
* ATL100                         0000000072A60000                                                                
* SQLSCM                         0000000072D00000                                                                
* ODBC32                         000007FEF95D0000                                                                
* odbcint                        0000000068400000                                                                
* xpstar                         000000006B900000                                                                
* ntmarta                        000007FEFB9C0000                                                                
* apphelp                        000007FEFCD10000                                                                
* perfdisk                       000007FEFA6F0000                                                                
* CFGMGR32                       000007FEFD230000                                                                
* RpcRtRemote                    000007FEFCE20000                                                                
* ssdebugps                      000000006E2C0000                                                                
* perfos                         000007FEFA810000                                                                
* System.ni                      000007FEF1B40000                                                                
* System.Data                    000007FEE8D80000                                                                
* System.Transactions            000007FEFA610000                                                                
* System.Security.ni             000007FEF93F0000                                                                
* System.Xml.ni                  000007FEE6DA0000                                                                
* System                         0000000055D40000                                                                
* System.Security                000000006AAA0000                                                                
* System.Xml                     000000006A800000                                                                
* dbghelp                        0000000056180000                                                                
*                                                                                                                
*     P1Home: 000000001C92ACF0:  00000000C0000005  0000000000000000  000007FEF6CDA694  0000000000000002  00000000
00000000  0000000000000000                                                                                       
*     P2Home: 000000001C92A800:  000000001C92ACF0  000000001C92A800  0000000000000000  0000000000000000  00000000
00000004  0000000000004000                                                                                       
*     P3Home: 0000000000000000:                                                                                  
*     P4Home: 0000000000000000:                                                                                  
*     P5Home: 0000000000000004:                                                                                  
*     P6Home: 0000000000004000:                                                                                  
* ContextFlags: 000000000010005F:                                                                                
*      MxCsr: 0000000000001FA0:                                                                                  
*      SegCs: 0000000000000033:                                                                                  
*      SegDs: 000000000000002B:                                                                                  
*      SegEs: 000000000000002B:                                                                                  
*      SegFs: 0000000000000053:                                                                                  
*      SegGs: 000000000000002B:                                                                                  
*      SegSs: 000000000000002B:                                                                                  
*     EFlags: 0000000000010293:  0000000000000000  0000000000000000  0000000000000000  0000000000000000  00000000
00000000  0000000000000000                                                                                       
*        Rax: 0000000000000000:                                                                                  
*        Rcx: 0000000000000000:                                                                                  
*        Rdx: 00000001179589D0:  000000A7000002A7  FFFFFFFFFFFFFFFF  3400D00800001F40  00000001915E805B  00000001
FFFF0008  0000000000000000                                                                                       
*        Rbx: 00000001179589D0:  000000A7000002A7  FFFFFFFFFFFFFFFF  3400D00800001F40  00000001915E805B  00000001
FFFF0008  0000000000000000                                                                                       
*        Rsp: 000000001C92AF00:  000000000000FFFE  0000000000001FA4  0000000000000002  0000000000000001  00000000
00000004  000007FEF78F1924                                                                                       
*        Rbp: 00000001179589D0:  000000A7000002A7  FFFFFFFFFFFFFFFF  3400D00800001F40  00000001915E805B  00000001
FFFF0008  0000000000000000                                                                                       
*        Rsi: 00000001DC4F9FF0:  662E737961772065  6169726574616D20  6C6F6F74202C736C  6F7320646E612073  742E6572
61777466  6120776F7267206F                                                                                       
*        Rdi: 0000000117911610:  000000000000A700  00000001915E806E  0000000000000005  0000000000000000  00000000
00000000  0000000000000000                                                                                       
*         R8: 000000001C92B0A0:  000000E7000002E7  FFFFFFFFFFFFFFFF  3400D0080000FFFF  000000000000A700  00000001
915E806E  0000000000000005                                                                                       
*         R9: 00000001DC4F9FF0:  662E737961772065  6169726574616D20  6C6F6F74202C736C  6F7320646E612073  742E6572
61777466  6120776F7267206F                                                                                       
*        R10: 00000001DC4F8000:  00010004DC4A0000  0000000117954060  0000000000002000  00000001DC4FA000  00000001
DC4FA070  00000001DC4F8054                                                                                       
*        R11: 000000001C92AF58:  000007FEF6C19A0D  00000001179589D0  00000001179589D0  0000000000000000  00000000
1C92AFC0  0000000100001FA4                                                                                       
*        R12: 00000000000000A7:                                                                                  
*        R13: 00000001DC4F9FF0:  662E737961772065  6169726574616D20  6C6F6F74202C736C  6F7320646E612073  742E6572
61777466  6120776F7267206F                                                                                       
*        R14: 000000001C92B0A0:  000000E7000002E7  FFFFFFFFFFFFFFFF  3400D0080000FFFF  000000000000A700  00000001
915E806E  0000000000000005                                                                                       
*        R15: 0000000000000010:                                                                                  
*        Rip: 000007FEF6CDA694:  8D4DC93345018B48  4810FFD68B482843  2444C74870247489  068B480000000060  0850FFCE
8B48D233  6024448948D88B48                                                                                       
* *******************************************************************************                                
* -------------------------------------------------------------------------------                                
* Short Stack Dump                                                                                               
000007FEF6CDA694 Module(UNKNOWN+0000000000000000)                                                                
000007FEF6C19A0D Module(UNKNOWN+0000000000000000)                                                                
000007FEF6C4EC81 Module(UNKNOWN+0000000000000000)                                                                
000007FEF6C1A002 Module(UNKNOWN+0000000000000000)                                                                
000007FEDAAE4A3A Module(UNKNOWN+0000000000000000)                                                                
000007FEDAAE4873 Module(UNKNOWN+0000000000000000)                                                                
000007FEDAAE3B77 Module(UNKNOWN+0000000000000000)                                                                
000007FEDB6FC8B9 Module(UNKNOWN+0000000000000000)                                                                
000007FEDAE17C8A Module(UNKNOWN+0000000000000000)                                                                
000007FEDAAE12CF Module(UNKNOWN+0000000000000000)                                                                
000007FEDAB9A7C5 Module(UNKNOWN+0000000000000000)                                                                
000007FEDAB9A383 Module(UNKNOWN+0000000000000000)                                                                
000007FEDAB9A11B Module(UNKNOWN+0000000000000000)                                                                
000007FEDA8D08A1 Module(UNKNOWN+0000000000000000)                                                                
000007FEDA913DAC Module(UNKNOWN+0000000000000000)                                                                
000007FEDA908BA7 Module(UNKNOWN+0000000000000000)                                                                
000007FEF78D3170 Module(UNKNOWN+0000000000000000)                                                                
000007FEF78D2F64 Module(UNKNOWN+0000000000000000)                                                                
000007FEF78D2D66 Module(UNKNOWN+0000000000000000)                                                                
000007FEF78EE22F Module(UNKNOWN+0000000000000000)                                                                
000007FEF78EE5C0 Module(UNKNOWN+0000000000000000)                                                                
000007FEF78ED9CB Module(UNKNOWN+0000000000000000)                                                                
000007FEF78EE059 Module(UNKNOWN+0000000000000000)                                                                
0000000076E759ED Module(UNKNOWN+0000000000000000)                                                                
00000000770AC541 Module(UNKNOWN+0000000000000000)                         

CSession @0x000000011796C450
----------------------------
m_sessionId = 85                     m_cRef = 12                          m_rgcRefType[0] = 1                    
m_rgcRefType[1] = 1                  m_rgcRefType[2] = 9                  m_rgcRefType[3] = 1                    
m_rgcRefType[4] = 0                  m_rgcRefType[5] = 0                  m_pmo = 0x000000011796C040             
m_pstackBhfPool = 0x0000000000000000 m_dwLoginFlags = 0x80000e0           m_fBackground = 0                      
m_eConnResetOption = 0               m_fUserProc = 1                      m_fConnReset = 0                       
m_fIsConnReset = 0                   m_fInLogin = 0                       m_fAuditLoginSent = 1                  
m_fAuditLoginFailedSent = 0          m_fReplRelease = 0                   m_fKill = 0                            
m_ulLoginStamp = 2978589             m_eclClient = 7                      m_protType = 5                         
m_hHttpToken = FFFFFFFFFFFFFFFF      

m_pV7LoginRec
---------------------
0000000000000000:   ae000000 04000074 00100000 00000000 bc570000  ®......t........¼W..                           

0000000000000014:   00000000 e0000008 00000000 09040000 5e000300  ....à....... ...^...                           

0000000000000028:   64000200 68000000 78000700 86000a00 9a000000  d...h...x...†...š...                           

000000000000003C:   9a000700 a8000000 a8000300 01020304 0506ae00  š...¨...¨.........®.                           

0000000000000050:   0000ae00 0000ae00 00000000 0000               ..®...®.......                                 

CPhysicalConnection @0x000000011796C230
---------------------------------------
m_pPhyConn->m_pmo = 0x000000011796C040                                                                           
m_pPhyConn->m_pNetConn = 0x000000011796CBF0                                                                      
m_pPhyConn->m_pConnList = 0x000000011796C420                                                                     
m_pPhyConn->m_pSess = 0x000000011796C4A8                                  m_pPhyConn->m_fTracked = -1            
m_pPhyConn->m_cbPacketsize = 4096    m_pPhyConn->m_fMars = 0              m_pPhyConn->m_fKill = 0                

CBatch @0x000000011796D140
--------------------------
m_pSess = 0x000000011796C450         m_pConn = 0x000000011796D020         m_cRef = 3                             
m_rgcRefType[0] = 1                  m_rgcRefType[1] = 1                  m_rgcRefType[2] = 1                    
m_rgcRefType[3] = 0                  m_rgcRefType[4] = 0                  m_pTask = 0x0000000126110CF8           

EXCEPT (null) @0x000000001C927B00
---------------------------------
exc_number = 0                       exc_severity = 0                     exc_func = 0x000007FEF79851D0          

Task @0x0000000126110CF8
------------------------
CPU Ticks used (ms) = 0              Task State = 2                                                              
WAITINFO_INTERNAL: WaitResource = 0x0000000000000000                      WAITINFO_INTERNAL: WaitType = 0x0      
WAITINFO_INTERNAL: WaitSpinlock = 0x0000000000000000                      SchedulerId = 0x0                      
ThreadId = 0x1968                    m_state = 0                          m_eAbortSev = 0                        

EC @0x0000000117926A30
----------------------
spid = 0                             ecid = 0                             ec_stat = 0x0                          
ec_stat2 = 0x0                       ec_atomic = 0x0                      ecType = 0                             
__pSETLS = 0x000000011796D090        __pSEParams = 0x000000011796D520     

SEInternalTLS @0x000000011796D090
---------------------------------
    m_flags = 0                             m_TLSstatus = 3                         m_owningTask = 0x0000000126110CF8     
    m_activeHeapDatasetList = 0x000000011796D090                                                                    
    m_activeIndexDatasetList = 0x000000011796D0A0                               m_pDbccContext = 0x0000000000000000   
    m_pAllocFileLimit = 0x0000000000000000                                      m_dekInstanceIndex = 0x-1             
    m_pImbiContext = 0x0000000000000000 

SEParams @0x000000011796D520
----------------------------
    m_lockTimeout = -1                      m_isoLevel = 4096                       m_logDontReplicate = 0                
    m_neverReplicate = 0                    m_XactWorkspace = 0x000000011790C040                                       
    m_execStats = 0x00000001ABC258C8    

If I pass an extra parameter that it's not expecting, I get the usual "too many parameters passed" error. If I pass null or a varbinary(2) instead, I get correct result returned.

Changing the TDS version makes no difference.

Changing the @h parameter to a varchar or int makes it work fine, which is what suggests to me that Tedious might be doing everything correctly.

I don't particularly understand enough about TDS to know what Tedious does differently from the OLE DB, but this works:

var csb = new SqlConnectionStringBuilder() { DataSource = "...", IntegratedSecurity = true, InitialCatalog = "..." };
using (var conn = new SqlConnection(csb.ConnectionString)) {
    conn.Open();
    using (var cmd = new SqlCommand("testTDS", conn) { CommandType = CommandType.StoredProcedure}) {
        cmd.Parameters.AddWithValue("h", "/1/1/");
        using (var r = cmd.ExecuteReader()) {
            while (r.Read()) {
                r[0].Dump("r[0]");
            }
        }
    }
}
bretcope commented 9 years ago

The TDS spec contains no mention of the hierarchyid type or how it should be passed; however, as you discovered, varbinary appears to be the correct parameter type.

I agree that SQL Server crashing is a bug in SQL Server, and there's not much we can do about that.

lee-houghton commented 9 years ago

Yeah, I figured as much. I reported it to them, but haven't heard anything yet. I guess I'm stuck with using exec statements and only using parameters for non-hierarchyid types, at least until I can write my own binary serialiser. Thanks anyway!

On 20 February 2015 at 00:36, Bret Copeland notifications@github.com wrote:

The TDS spec contains no mention of the hierarchyid type or how it should be passed; however, as you discovered, varbinary appears to be the correct parameter type.

I agree that SQL Server crashing is a bug in SQL Server, and there's not much we can do about that.

— Reply to this email directly or view it on GitHub https://github.com/pekim/tedious/issues/235#issuecomment-75168984.