DataReader.GetFieldType returned null

后端 未结 6 1688
北荒
北荒 2021-01-01 17:46

In my db table Layout, there\'s one column whose type is hierarchyid (column index=4). When trying to set-up new environment (a virtual web-server, created from

6条回答
  •  無奈伤痛
    2021-01-01 18:04

    For those experiencing this problem with PowerShell, I was able to fix my problem by installing the SQLSysClrTypes.msi package from Microsoft for SQL Server 2016 and restarting powershell. The download page is confusing to navigate, click "Download" and search the page for SQLSysClrTypes. Select the right architecture.

    Exception calling "Fill" with "1" argument(s): "DataReader.GetFieldType(24) 
    returned null."
    At MyScript.ps1:15 char:5
    +     $adapter.Fill($ds) | Out-Null
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], 
    ParentContainsErrorRecordException
        + FullyQualifiedErrorId : InvalidOperationException
    

    In my case, the offending data type was Microsoft.SqlServer.Types.SqlGeography in position (24) This field worked fine inside AppVeyor with SQL Server 2016 installed, but wouldn't run on my local environment.

    I found several articles explaining why this occurs and some specified to use NuGet to fetch the latest Microsoft.SqlServer.Types.dll, but in my case, this didn't help, nor did any attempt to replace the assembly\GAC_... version with one from Install-Package and friends.

    Note: Installing the .msi wasn't as straight forward as one would expect because through trial and error, I had installed several older "Microsoft SQL Server System CLR Types". This resulted in the MSI only offering "Repair" and "Remove". If this occurs, chose "Remove" and the run the installer again.

    Installing the correct version and restarting PowerShell did the trick.

提交回复
热议问题