我正在运行Windows 10,VS 2017和SQL Server 2017(VER 14.0.1000.169,开发人员版(64位((上开发C#应用程序。我正在使用AdventureWorks2016
数据库测试我的应用程序。读取 [HumanResources].[Employee]
记录为 OrganizationNode
datatype的 CC_4字段提供了有据可查的 "DataReader.GetFieldType returned null"
例外。
我已经尝试了so问题datareader中描述的前2个答案的修复程序。getFieldType返回null,但它们对我不起作用:
我尝试了机器上可用的DLL的副本(即,在DLL中添加了REF并将其制成
local copy = true
(:-
C:Program Files (x86)Microsoft SQL Server120SDKAssemblies
-
C:Program Files (x86)Microsoft SQL Server140DACbin
C:Program Files (x86)Microsoft SQL Server140SDKAssemblies
C:Program FilesMicrosoft SQL Server
下没有Microsoft.SqlServer.Types.dll
的副本(我认为,DLL的64位版本都在我的机器上(。
-
使用
"Type System Version=SQL Server 2012"
修改连接字符串也无法正常工作
我知道我的SQL连接和"Fill"
命令工作,因为当我从没有hierarchyId
,geography
或geometry
字段的AdventureWorks2016
表中读取记录时,它可以正常工作。
sqlConnection.Open();
sqlCommand.CommandType = CommandType.Text;
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandText = primaryKeyQueryString;
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
sqlDataAdapter.Fill(dt);
sqlDataAdapter.Dispose();
sqlConnection.Close();
您知道哪个版本的Microsoft.SqlServer.Types.dll
可以解决SQL Server 2017的问题?
如果是这样,我可以在哪里获得它的副本?
我需要安装旧的SQL Server DLL并使用我的应用程序分配?
这是我所做的:
i从掘金中安装了Microsoft.sqlserver.types,您应该在垃圾箱中使用一个称为sqlServerTypes x64和x86的文件夹,该文件夹也应与您的应用程序一起部署Microsoft.sqlserver.sqlserver.types.dll
从掘金安装时,您的代码中还具有一个新文件夹,称为sqlServerTypes loader.cs(如果使用VB,则将其转换为VB(加载一些低级依赖关系(MSVCR1X0.DLL和SQLSERVERSPATIAL1X0.DLL(。
在Windows Server 2019上使用SQL Server 2017的服务器上,我只能通过安装Microsoft.sqlserver.types版本11.0.2来完成此工作。最近的版本没有解决这个问题。
当我引用这些版本时,getfieldType识别出空间类型,一切都顺利进行。
一段时间后,我建议您尝试其他版本,如果问题持续存在,因为这是解决此问题的方法。
还确认您的SQL Server安装具有安装SQL Server 2017的Microsoft System CLR类型。如果不是,则必须从Microsoft SQL Server 2017功能包或SQL Server设置安装它们https://www.microsoft.com/en-us/download/details.aspx?id=55992
这些步骤适用于所有版本的SQL Server。
我发现了一台Win 7机器,其中 Microsoft.SqlServer.Types.dll
的版本不在我的win 10机器上。我从Win 10 Machine和Win 7机器依次使用明确的参考测试了每个DLL。这是结果:
- 2009.100.2500.0,(6-17-2011(作品
- 2014.120.2000.8(2/21/2014(失败
- 2014.120.5000.0,(6-18-2016(失败
- 2011.110.2832.25,(8-15-2017(失败
- 2017.140.1000.169,(8-22-2017(失败
- 2017.140.500.272,(2-1-2018(失败
使用(最古老的(版本10.50.1600.1为我修复了此问题。
复制microsoft.sqlserver.types.dll到项目的root文件夹,并将项目中的引用更改为此文件(删除旧旧引用并设置新的引用(像这样:c: work windowsapp1