如何从 SQL Server 实用工具中删除 SQL Server 的实例

使用以下步骤从 SQL Server 实用工具中删除 SQL Server 的托管实例。此过程从 UCP 列表视图中删除 SQL Server 的实例,并且 SQL Server 实用工具数据收集将停止。SQL Server 的实例不卸载。

重要说明重要提示

在您使用此过程从 SQL Server 实用工具中删除 SQL Server 的实例前,请确保 SQL Server 和 SQL Server 代理服务正在要删除的实例上运行。

  1. 从 SQL Server Management Studio 的实用工具资源管理器中,单击**“托管实例”**。观察实用工具资源管理器内容窗格中 SQL Server 的托管实例的列表视图。

  2. 在该列表视图的**“SQL Server 实例名称”列中,选择要从 SQL Server 实用工具删除的 SQL Server 实例。右键单击要删除的实例,然后选择“删除托管实例…”**。

  3. 为 SQL Server 的实例指定具有管理员权限的凭据:单击**“连接…”,验证“连接到服务器”对话框中的信息,然后单击“连接”。您将在“删除托管实例”**对话框中看到登录信息。

  4. 若要确认该操作,请单击**“确定”。若要退出该操作,请单击“取消”**。

手动从 SQL Server 实用工具中删除 SQL Server 的托管实例

此过程从 UCP 列表视图中删除 SQL Server 的实例并且停止 SQL Server 实用工具数据收集。SQL Server 的实例不卸载。

使用 PowerShell 从 SQL Server 实用工具中删除 SQL Server 的托管实例。此脚本执行以下操作:

  • 按服务器实例名称获取 UCP。

  • 从 SQL Server 实用工具中删除 SQL Server 的托管实例。

# Get Ucp connection
$UcpServerInstanceName = "ComputerName\InstanceName";
$UtilityInstance = new-object –Type Microsoft.SqlServer.Management.Smo.Server $UcpServerInstanceName;
$UcpConnection = new-object -Type Microsoft.SqlServer.Management.Sdk.Sfc.SqlStoreConnection $UtilityInstance.ConnectionContext.SqlConnectionObject;
$Utility = [Microsoft.SqlServer.Management.Utility.Utility]::Connect($UcpConnection);

# Now remove the ManagedInstance from the SQL Server Utility
$ServerInstanceName = "ComputerName\InstanceName";
$Instance = new-object -Type Microsoft.SqlServer.Management.Smo.Server $ServerInstanceName;
$InstanceConnection = new-object -Type Microsoft.SqlServer.Management.Sdk.Sfc.SqlStoreConnection $Instance.ConnectionContext.SqlConnectionObject;
$ManagedInstance = $Utility.ManagedInstances[$ServerInstanceName];
$ManagedInstance.Remove($InstanceConnection);

如果所有其他方法都未能从 SQL Server 实用工具中删除 SQL Server 的托管实例,则在 SQL Server Management Studio 中使用以下 Transact-SQL 命令。这两个脚本都假定用户正在以 sysadmin 的身份运行。

  1. 连接到 SQL Server 的托管实例,并运行此存储过程:

    EXEC msdb.dbo.sp_sysutility_mi_remove;
    

    此时,SQL Server 的托管实例仍出现在实用工具资源管理器中,但不再将其他数据上载到 UCP。列表视图中的状态呈灰色。从技术上讲,该实例未在 SQL Server 实用工具中注册,这样它可以在其他 UCP 中注册。

  1. 连接到该 UCP 并运行此脚本:

    DECLARE @instance_id int;
    SELECT @instance_id = mi.instance_id
    FROM msdb.dbo.sysutility_ucp_managed_instances AS mi
    WHERE mi.instance_name = 'ComputerName\InstanceName';
    
    EXEC msdb.dbo.sp_sysutility_ucp_remove_mi @instance_id;
    

请注意,在引用 SQL Server 实例名称时,此名称务必与在 SQL Server 中存储的名称完全相同。在 SQL Server 的区分大小写的实例上,您必须使用与 @@SERVERNAME 返回的完全一致的大小写来指定实例名称。若要获取 SQL Server 的托管实例的实例名称,请对该托管实例运行以下查询:

select @@SERVERNAME AS instance_name

此时,SQL Server 的托管实例将从 UCP 完全删除。在您下次刷新 SQL Server 实用工具的数据时,该托管实例将从列表视图中消失。此状态完全等同于用户成功在 SSMS 用户界面中完成删除托管实例操作。