OLE DB文档记录了一个带有SQL示例的hierarchial rowset feature,但未指出哪些DB提供程序支持它。 JET和SQL Server是否支持此功能?他们是否使用与文档中相同的语法,或者他们自己的扩展语法?JET和SQL Server是否支持分层行集?
回答
是的,它被支持。过去我已经使用过它了。此功能可以使用随MDAC提供的Data Shaping Service(位于名为Msadds.dll的文件中)。 OLE DB提供程序名为MSDataShape
,您将使用SHAPE command来生成分层结果。连接字符串的语法类似于以下内容:
喷气:
Provider=MSDataShape;Data Provider=Microsoft.Jet.OLEDB.4.0;Data Source=PathToMyDatabase.mdb;
SQL服务器:
Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=ServerNameOrAddress;Initial Catalog=DatabaseName;User ID=;Password=
有几件事情值得一提:
的SHAPE语法可以(012)尴尬),因为你的 查询变得更加复杂,所以请记住 。
如果您使用.NET,则可以使用
DataSet
和DataRelation
类实现相同的功能。更重要的是,该文件明确指出:
此功能将在Windows的 未来的版本中删除。避免在新开发工作中使用 此功能, 并计划修改 当前使用此功能的应用程序。相反, 应用程序应该使用XML。
我深入研究了Access子数据表的内容(A2000),并用MSDataShape提供程序快速深入到杂草中。鉴于Access仍然支持当前版本的子数据表,如果不在代码中,UI组件仍然支持它。另外请记住,Jet曾经是MDAC的一部分,但在Jet成为Windows的一个组件之后被删除了一段时间(即Win2000)。鉴于A2000以后似乎对MSDataShape有一定的依赖性,我想知道如果您安装了Access,支持是否存在。 – 2010-08-23 20:02:57
这不是您的问题的直接答案,所以如果您必须使用分层行集,请忽略它。 我记得大约9年前阅读过这个功能,但从未见过它被使用过。我认为这被证明是错误的路要走。另一方面,我确实使用了公共表格表达式(特别是递归表达式),并发现它们具有很高的价值(http://msdn.microsoft.com/en-us/library/ms186243.aspx)。 我认为分层行集应该完成的是对象关系映射,而那些行集无论如何都不会产生好的ORM(NHibernate好得多)。
稍作澄清:公用表表达式特定于SQL Server,而问题同时适用于SQL Server和Jet/ACE。 – 2010-08-23 20:00:08
大卫,你是对的。 但考虑到整体技术选择,我个人仍然会避免使用分层行集,我猜NHibernate会很高兴地使用Access。开始工作有点棘手,但几星期后还会付出代价。我多次看到,使用普通的OLEDB,ADO.NET等代替某种映射器(最初做简单的事情)会导致代码混乱。我使用精简并意味着BLToolkit一段时间,它有一个很好的MapResultSets函数,它以声明和面向对象的方式实现了这种映射。 – vaso 2010-08-24 00:22:15
- 1. SQL Server是否支持分片?
- 2. 是否IBM WebSphere支持SQL Server 2008的
- 3. SQL Server 2005是否支持datetime2
- 4. FluentNHibernate是否支持SQL Server Compact Edition 4.0?
- 5. log4net AdoNetAppender是否支持sql server 2008?
- 6. SQL Server是否支持散列索引?
- 7. 支持SQL Server 2005和2008
- 8. SQL Server 2008企业版试用版是否支持群集和审计?
- 9. mysqli是否支持ms sql?
- 10. ORMLITE是否支持SQL EXISTS?
- 11. Azure SQL是否支持Kerberos?
- 12. 支持sql server表
- 13. Grails是否支持分片?
- 14. vim是否通过phpdoc提供分层intellisense支持?
- 15. Subversion是否支持分支的别名
- 16. Exchange Server(内部)是否支持REST API?
- 17. Node.js是否支持并行?
- 18. Windows Server 2008是否支持.net 1.1
- 19. ASP.NET MVC 3 WebGrid控件是否支持分层数据?
- 20. Windows Server 2008是否支持MSDE?
- 21. VisualSVN Server 3是否支持HTTP压缩?
- 22. Lync Server 2013是否支持UCWA 2.0
- 23. VisualSVN Server是否支持廉价拷贝?
- 24. Windows Server 2012是否支持IIS 10 Express?
- 25. SQL Server Express - 作业和维护支持?
- 26. SQL Server代理和SQL Server分析支持的服务帐户类型
- 27. Microsoft Sql Server 2012数据质量服务是否支持Oracle?
- 28. Python的MSSQL模块是否支持Microsoft 2000 SQL Server通信?
- 29. SQL Server 2012 FTS是否支持命中高亮?
- 30. SQL Server复制是否支持这种情况?
Jet和SQL Server是两个完全不同的数据库引擎,它们在SQL和各种事物方面的支持上截然不同。这是两个不同的问题,但在我看来,只要尝试一下就可以解决问题。你试过了吗? – 2010-08-22 19:51:20