当前位置:  开发笔记 > 编程语言 > 正文

检测SMO存在的最佳方法是什么?

如何解决《检测SMO存在的最佳方法是什么?》经验,为你挑选了1个好方法。

我有一些代码使用SMO来填充可用的SQL Server和数据库列表.虽然我们不再支持SQL Server 2000,但代码可能会在SQL Server 2000并且没有安装SMO库的计算机上运行.我会首先检查SMO并优雅地降低功能,而不是炸毁用户的脸.什么是检测机器上是否有SMO的最佳方法?

我通过快速Google扫描看到的每个示例都是"查找C:\ Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.Smo.dll"的变体.该方法的问题在于它仅适用于SQL Server 2005.如果SQL Server 2008是唯一安装的SQL Server,则路径将不同.



1> Zar Shardan..:

我查看了SQL2008 R2功能包中的SharedManagementObjects.msi和我的Windows注册表(此机器上安装了SQL2008 R2 Dev),我相信这些是用于检测SMO的注册密钥(全部在HKLM下):

SOFTWARE\Microsoft\Microsoft SQL Server\SharedManagementObjects\CurrentVersion - 这显然是主键,表示已安装某些版本的SMO.

SOFTWARE\Microsoft\Microsoft SQL Server 2008 Redist\SharedManagementObjects\1033\CurrentVersion - 这可能意味着安装了2008英语.可能只是检查是否存在SOFTWARE\Microsoft\Microsoft SQL Server 2008 Redist\SharedManagementObjects就足够了.

同样适用于SQL2012:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server 2012 Redist\SharedManagementObjects\1033\CurrentVersion

但不是SQL2005!即使我在这台机器上安装了2005.

还有一件事,您通常也需要Microsoft SQL Server系统CLR类型,因为SMO依赖于它们.SQLSysClrTypes.msi只有一个注册表项:SOFTWARE\Microsoft\Microsoft SQL Server\RefCount\SQLSysClrTypes

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有