如何从 SQL Server 实用工具中删除 SQL Server 的实例
使用以下步骤从 SQL Server 实用工具中删除 SQL Server 的托管实例。此过程从 UCP 列表视图中删除 SQL Server 的实例,并且 SQL Server 实用工具数据收集将停止。SQL Server 的实例不卸载。
重要提示 |
---|
在您使用此过程从 SQL Server 实用工具中删除 SQL Server 的实例前,请确保 SQL Server 和 SQL Server 代理服务正在要删除的实例上运行。 |
从 SQL Server Management Studio 的实用工具资源管理器中,单击**“托管实例”**。观察实用工具资源管理器内容窗格中 SQL Server 的托管实例的列表视图。
在该列表视图的**“SQL Server 实例名称”列中,选择要从 SQL Server 实用工具删除的 SQL Server 实例。右键单击要删除的实例,然后选择“删除托管实例…”**。
为 SQL Server 的实例指定具有管理员权限的凭据:单击**“连接…”,验证“连接到服务器”对话框中的信息,然后单击“连接”。您将在“删除托管实例”**对话框中看到登录信息。
若要确认该操作,请单击**“确定”。若要退出该操作,请单击“取消”**。
手动从 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 的身份运行。
连接到 SQL Server 的托管实例,并运行此存储过程:
EXEC msdb.dbo.sp_sysutility_mi_remove;
此时,SQL Server 的托管实例仍出现在实用工具资源管理器中,但不再将其他数据上载到 UCP。列表视图中的状态呈灰色。从技术上讲,该实例未在 SQL Server 实用工具中注册,这样它可以在其他 UCP 中注册。
连接到该 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 用户界面中完成删除托管实例操作。