SSMS 18.1在启动时抛出错误,缺少UI元素

时间:2019-07-16 18:07:38

标签: sql-server ssms

自从我将Windows升级到2019年5月(1903)版本以来,SQL Server Management Studio 18.1在启动时一直抛出错误。当我使用-log选项启动它时,报告了几百个错误,例如:

<type>Error</type>
<source>VisualStudio</source>
<description>Loading UI library</description>
<guid>{198E76C1-34C0-424D-9957-B3EBD80265FB}</guid>
<hr>800a006f</hr> 
...
<type>Error</type>
<source>VisualStudio</source>
<description>Error loading UI library for package (null).HrLoadNativeUILibrary failed with 0x800a006f.</description>
...
<type>Error</type>
<source>VisualStudio</source>
<description>LegacySitePackage failed for package [Management Studio Update Checker]Source: ...</description>
<guid>{A370BC08-51DD-4F09-8386-8F31E8704796}</guid>
<hr>80131534</hr>
...
<type>Error</type>
<source>VisualStudio</source>
<description>SetSite failed for package [Management Studio Update Checker](null)</description>
<guid>{A370BC08-51DD-4F09-8386-8F31E8704796}</guid>
<hr>80131534</hr>

当SSMS最终加载时,我以前访问的数据库列表消失了,并且缺少UI元素,如下所示: SSMS UI elements are missing or blank

我已采取的步骤:

  1. 未安装的SSMS 18.1以及所有相关工具和软件包(包括C ++可再发行文件,VS 2017 shell和工具,数据工具软件包等)
  2. 已卸载Visual Studio 2019,以及所有相关工具和软件包。这主要是为了对VS 2019和SSMS之间的冲突软件包/工具进行完整性检查)
  3. Microsoft下与Visual Studio和SSMS有关的“本地/漫游”中已删除的AppData条目,试图清除本地设置。
  4. 重新启动计算机,然后重新安装SSMS 18.1(最新版本)

我已经采取了其他步骤,并重复了几次该过程-每次好像大量支持包和程序集丢失或放置不正确。我没有在计算机上更改任何驱动器号,据我所知,没有任何信息取决于网络位置。

重新安装Windows的时间很短,我很茫然。

更新:我尝试安装SSMS 18.0,它可以100%正常运行。因此,这特定于Windows版本1903(10.0.18362内部版本18362)上的18.1

2 个答案:

答案 0 :(得分:1)

过去几天我遇到了类似的问题,日志中出现很多“正在加载UI库”错误,并且在启动时弹出“ Package Microsoft.SqlServer.Management.SqlStudio无法正确加载”错误消息在许多用户操作上(例如打开连接对话框,甚至从“帮助”菜单打开“关于”窗口)。

无论如何,我刚刚在日志底部注意到的一件事是(而且我也不知道您是否也拥有):

Could not find file 'C:\Users\vs\Documents\SQL Server Management Studio'. System.IO.FileNotFoundException: Could not find file 'C:\Users\vs\Documents\SQL Server Management Studio'. File name: 'C:\Users\vs\Documents\SQL Server Management Studio' at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost) at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost) at System.IO.Directory.CreateDirectory(String path) at Microsoft.SqlServer.Management.SqlStudio.SetDefaultProjectOpenLocation() at Microsoft.SqlServer.Management.SqlStudio.SetupInitialShellSettings() at Microsoft.SqlServer.Management.SqlStudio.Initialize() at Microsoft.VisualStudio.Shell.Package.Microsoft.VisualStudio.Shell.Interop.IVsPackage.SetSite(IServiceProvider sp)

现在,由于我没有主意了(修复/重新安装SSMS并没有帮助,删除SSMS注册表项也没有帮助,并且我也不想重新安装Windows),所以我决定继续手动创建尝试访问的路径。

TL; DR这是解决方案:尽管听起来很荒谬,但是在创建Documents\SQL Server Management Studio文件夹之后,错误消失了,丢失了UI元素。到目前为止,一切正常(手指交叉)。

P.S。如果您认为它可能希望将某些文件写入该文件夹,那么您会误会。文件夹仍然是空的...它只是坐在那里。我喜欢认为它使SSMS感到舒适。 此外,如果需要那么多文件夹,我无法告诉您它如何无法创建文件夹。确保它具有访问权限,特别是考虑到在尝试使其正常运行时,我确实尝试使用管理员权限多次运行它。

答案 1 :(得分:1)

我的经历与弗拉德(Vlad)略有不同,所以我认为我希望能与他人分享。 ActivityLog.xml确实引用了该文件,在本例中为user.config第6行。该文件有5行有效数据,然后在其余文件中进行了垃圾处理。 user.config为我位于此处:$engravings = Engraving::where('engravings.status', 1); if(!empty($request->rate)){ $engravings->whereHas('rate', function($query) use ($request){ // Code use WhereIn How To do it }); } $engravings = $engravings->get(); 15.0.18183适用于SSMS 18.3我也安装了15.0.18131适用于SSMS 18.1吗?无论哪种方式,15.0.18131文件夹都具有有效的user.config,因此我只用好文件覆盖了坏文件。重新启动SSMS 18.3,一切正常。我还怀疑这就是为什么Jeff Dalley在SSMS 18.1无法正常工作时能够使用SSMS 18.0的原因。可能是因为他的18.1 user.config是FUBAR而他的18.0 user.config是干净的。卸载SSMS 18.x时,该文件也不会被删除,因此修复或卸载/重新安装将无法解决问题。

如果Microsoft的某人可以解决此问题,那么这里是完整的相关错误消息,那真是太棒了!

C:\Users\me\AppData\Local\Microsoft_Corporation\DefaultDomain_Url_315jocyprgycyaf1bv5fxwi31zcufzj1\15.0.18183.0\user.config