SQL Server 2017合并复制发布属性无法打开的报错问题求助
问题描述
使用SSMS 19.0.20196.0在SQL Server 2017环境中配置合并复制,按官方文档操作创建发布后,无法打开发布属性编辑发布访问列表(PAL),触发以下报错:
SQL Server encountered one or more errors while retrieving information about publication 'C01_repl_01'.
Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "Microsoft.SqlServer.Management.UI.PublicationAccessListPage.resources" was correctly embedded or linked into assembly "CreatePubWizard" at compile time, or that all the satellite assemblies required are loadable and fully signed. (mscorlib)
程序调用栈:
at System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(String fileName) at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark) at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark) at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents) at System.Resources.ResourceManager.GetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents) at System.ComponentModel.ComponentResourceManager.FillResources(CultureInfo culture, ResourceSet& resourceSet) at System.ComponentModel.ComponentResourceManager.ApplyResources(Object value, String objectName, CultureInfo culture) at Microsoft.SqlServer.Management.UI.PublicationAccessListPage.InitializeComponent() at Microsoft.SqlServer.Management.UI.PublicationAccessListPage..ctor(CDataContainer dataContainer) at Microsoft.SqlServer.Management.UI.PubPropertiesSheet.Init() at Microsoft.SqlServer.Management.UI.PubPropertiesSheet..ctor(ReplicationSqlConnection conn) at Microsoft.SqlServer.Management.UI.LaunchPubPropSheet.PrepareToShow()
相同操作在SQL Server 2022环境中无异常,但需保留SQL Server 2017环境。
解决方案
1. 降级SSMS到适配SQL Server 2017的版本
SSMS 19系列主要针对SQL Server 2019及以上版本优化,对SQL Server 2017的兼容性存在局部问题。建议降级安装SSMS 18.x系列(如18.12.1),该版本对SQL Server 2017支持更完善,可避免UI层面的资源加载错误。
2. 使用T-SQL命令绕过图形界面管理发布访问列表
无需依赖SSMS的UI界面,直接通过T-SQL语句完成发布访问列表的管理:
- 查看当前发布的访问列表:
EXEC sp_help_publication_access @publication = N'C01_repl_01'; - 添加登录名到发布访问列表:
EXEC sp_grant_publication_access @publication = N'C01_repl_01', @login = N'[目标登录名]'; - 从发布访问列表移除登录名:
EXEC sp_revoke_publication_access @publication = N'C01_repl_01', @login = N'[目标登录名]';
3. 修复SSMS 19安装(备选)
尝试修复当前SSMS 19的安装文件,确保本地化资源包完整:
- 打开控制面板 -> 程序和功能
- 找到Microsoft SQL Server Management Studio 19,右键选择「更改」
- 在安装向导中选择「修复」,完成后重新启动SSMS尝试操作
注:此方法仅针对资源文件缺失的场景,若为版本兼容性问题,修复后可能仍无法解决。
内容的提问来源于stack exchange,提问作者younes abdenacer aitemrar

